Vimで誤って:wqのようなファイルを作ってしまうのを防ぐ方法(autocmdを使う)
背景
問題
- 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
謝辞