2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

vim-auto-save で git commit 時の自動保存を無効化する

Posted at

はじめに

Vim で複数ペインを開いて開発していると、:w とかを打って保存するのが億劫になってきて、vim-auto-save という自動保存プラグインをインストールしました。

いい感じに使えていたのですが、git commit 時のエディタを Vim にしていたこともあり、コミット時にも自動保存が走り、意図しないタイミングでコミットしてしまうことが何度かあったので、回避方法を調べてみました。

tl;dr

取り急ぎ、こちらで対応できました。

.vimrc
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 が走ってしまいました。。

.vimrc
let g:auto_save_presave_hook = 'call AbortIfGitCommit()'

function! AbortIfGitCommit()
  if &filetype != 'gitcommit'
    let g:auto_save_abort = 1
  endif
endfunction

gitcommit の場合なら、autosave を abort するフラグを立てるという関数を、保存前のフックに設定しておく、というやりかたで書いてみたのですが、うまくフックしてくれず。。
別途時間があったら動かす方法を調べてみようと思います。

参考情報

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?