monolithic kernel

VSCode や Cursor の Integrated Terminal 使用時 に Git のコミットメッセージエディタを切り替える

知人に git commit で何のエディタを使っているか訊かれて、答えたら感心されたので紹介する。

個人的には、ターミナルを使っているときはターミナルでそのまま編集したいし、Visual Studio Code (VSCode) や Cursor の Integrated Terminal を使っているときは、VSCode や Cursor 自体のエディタで編集したい。それを実現するために、状況に応じて起動させるエディタを分岐させるシェルスクリプトを書いて、エディタの代わりに指定している。

commit-message-editor
#!/bin/sh
set -eu
if [ -n "${CURSOR_TRACE_ID:-""}" ] && [ -x "$(command -v cursor)" ]
then
exec cursor --wait "$@"
elif [ "${TERM_PROGRAM:-""}" = 'vscode' ] && [ -x "$(command -v code)" ]
then
exec code --wait "$@"
elif [ -x "$(command -v nvim)" ]
then
exec nvim "$@"
else
exec vim "$@"
fi
.gitconfig
[core]
editor = /path/to/commit-message-editor

Integrated Terminal 内にいるかどうかは、環境変数を見れば判断できるらしい (当時調べて書いたはずだが忘れた)。また、コミットメッセージの編集に使う上では、codecursor--wait オプションを付けておけば編集が終わるまで待機するような挙動にできる。気が利いてる。