Vim 保存(:w)せずにタイピングごとやミリ秒ごとにファイルを自動保存してくれるvim-auto-saveが便利

    >


https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_05373428-069b-4041-9743-2cd614e3b37b.gif

ファイルをダイレクトに編集するっていうか、ライブ編集っていうか、保存をしなくても文字を打つたびに、または数ミリ秒ごとに自動で保存してくれたらいいなと思っていました。vimプラグイン入れるのはじめてだったので少し手間取りましたが使い方はめっちゃシンプルです。


ミツモア

インストール ( The Ultimate vimrc )

僕はThe Ultimate vimrcというvim初心者向けのいろいろ便利機能を混ぜて作った使いやすいvim環境をつくるやつを使っています。

amix/vimrc: The ultimate Vim configuration: vimrc

vimプラグインマネージャーは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

vim-auto-save – Vim Awesome
907th/vim-auto-save: Automatically save changes to disk in Vim

インストール ( 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。

https://yuis.xsrv.jp/images/ss/ShareX_ScreenShot_05373428-069b-4041-9743-2cd614e3b37b.gif




お困りですか?この記事で紹介していることをマンツーマンで指導、解説、代行します。まずはお気軽にお問い合わせください。


Close Menu