- Published on
Vimでタイプごとやミリ秒ごとに自動保存してくれるvim-auto-saveが便利
- Authors
- Name
- Shou Arisaka / 有坂翔
多くのプログラマーに長年愛用されているVimコマンドラインテキストエディタにおいて、保存(:w)をせずにタイピングごとやミリ秒ごとにファイルを自動保存してくれるvim-auto-saveが便利だったので紹介します。
ファイルをダイレクトに編集するっていうか、ライブ編集っていうか、保存をしなくても文字を打つたびに、または数ミリ秒ごとに自動で保存してくれたらいいなと思っていました。vimプラグイン入れるのはじめてだったので少し手間取りましたが使い方はめっちゃシンプルです。
インストール ( The Ultimate vimrc )
僕はThe Ultimate vimrcというvim初心者向けのいろいろ便利機能を混ぜて作った使いやすいvim環境をつくるやつを使っています。
amix/vimrc: The ultimate Vim configuration: vimrcvimプラグインマネージャーはVundle、vim-plug、pathogenの順番で人気があるのですが、The Ultimate vimrcはpathogenにしか対応していないようです。
tpope/vim-pathogen: pathogen.vim: manage your runtimepath GitHub - amix/vimrc: The ultimate Vim configuration: vimrcので、pathogenでThe Ultimate vimrcにvim-auto-saveをインストールするには、以下コマンドとなります。
git clone https://github.com/907th/vim-auto-save ~/.vim_runtime/my_plugins/vim-auto-save
インストール ( The Ultimate vimrc 以外 )
vim-auto-save - Vim Awesome使ってみる
デフォルトでは、insertモードを離れたとき、normalモードでコマンドを動かした結果テキストが変化したとき、だけに適用されるようになっています。
Using InsertLeave and TextChanged only, the default, will save on every change in normal mode and every time you leave insert mode.
let g:auto_save_events = ["InsertLeave", "TextChanged"]
:h autocommand-events
にて全てのイベントのリファレンスが見れます。一応全部目通しました。vimすごい。
で、使えそうなイベントは以下あたりかなと。
TextChangedI ... insertモードにてテキストが変化したら発火 CursorHoldI ... insertモードにて数ミリ秒ごとに発火 CursorMovedI ... insertモードにてカーソルが動いたら発火
ので、僕は以下を.vimrcにおいています。
let g:auto_save_events = ["InsertLeave", "TextChanged", "TextChangedI"]
これを有効化するには、normalモードにて:AutoSaveToggle
コマンドを実行して有効性をトグルします。
上記の設定の状態で実際に使ってみたのが以下gif。