Vimで誤って":wq"のようなファイルを作ってしまうのを防ぐ方法(autocmdを使う)
背景
- Vimを使っている。
問題
- Vimの「書き込んで終了」コマンドは ":wq" だが、誤って ":w:wq" のようにしてしまうと ":wq" という変なファイルができてしまう。
解法
- autocmdを使って特定のファイル名の書き込みには警告を出す。
詳細
- id:tyruさんのエンター巻き込み事故を防ぐのコードを利用する。
- 以下では ":" で始まるか、"[" で終わるか、"]" で終わるファイル名のときに警告を表示している。
" Checking typo. " http://d.hatena.ne.jp/tyru/20130419/avoid_tyop (一部修正) autocmd BufWriteCmd :*,*[,*] call s:write_check_typo(expand('<afile>')) function! s:write_check_typo(file) let prompt = "possible typo: really want to write to '" . a:file . "'?(y/n):" let input = input(prompt) if input =~? '^y\(es\)\=$' execute 'write'.(v:cmdbang ? '!' : '') a:file endif endfunction
謝辞
- 困っていたときに@sgurさんに教えていただきました。感謝。