はじめに
Vim で複数ペインを開いて開発していると、:w
とかを打って保存するのが億劫になってきて、vim-auto-save という自動保存プラグインをインストールしました。
いい感じに使えていたのですが、git commit
時のエディタを Vim にしていたこともあり、コミット時にも自動保存が走り、意図しないタイミングでコミットしてしまうことが何度かあったので、回避方法を調べてみました。
tl;dr
取り急ぎ、こちらで対応できました。
if expand("%:p") =~ 'COMMIT_EDITMSG'
let g:auto_save = 0
else
let g:auto_save = 1
endif
git commit
で編集できるコミットメッセージのファイル名が COMMIT_EDITMSG
なので、ファイルパスにその文字列が含まれている場合は autosave を無効にする処理を .vimrc
に入れました。
ちょっと限定的すぎるとは思うのですが、個人利用では今のところ困ってないので、この形にしています。
auto_save_presave_hook を使う方法(うまくいっていない)
調べてみると、下記 issue で話題に上がっていた、保存前にフックを入れる処理があるようで、こちらが使えないかも試しました。
しかし、うまく動いてくれず、autosave が走ってしまいました。。
let g:auto_save_presave_hook = 'call AbortIfGitCommit()'
function! AbortIfGitCommit()
if &filetype != 'gitcommit'
let g:auto_save_abort = 1
endif
endfunction
gitcommit
の場合なら、autosave を abort するフラグを立てるという関数を、保存前のフックに設定しておく、というやりかたで書いてみたのですが、うまくフックしてくれず。。
別途時間があったら動かす方法を調べてみようと思います。