Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

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

https://github.com/907th/vim-auto-save/issues/33

.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 するフラグを立てるという関数を、保存前のフックに設定しておく、というやりかたで書いてみたのですが、うまくフックしてくれず。。
別途時間があったら動かす方法を調べてみようと思います。

参考情報

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away