バッファに何個かファイルを開いてる状態で、q or wq してしまって凹む事が結構ある。mru.vim を入れたのでまだましだけど、まだ編集したかったのに・・・開き直しだよ・・・って結構凹む。
じゃあ、終了させなきゃいいんじゃね?と思い立つ。
cnoreabbrev <expr> q 'bd' cnoreabbrev <expr> q! 'bd!' cnoreabbrev <expr> wq 'WQ' command! -nargs=? -complete=dir -bang WQ call s:WriteClose('<bang>') function! s:WriteClose(bang) if a:bang == '' write bd else write! bd! endif endfunction
これで合ってるのかは謎。一応意図通りの動きはしてるけど、いろいろやってるうちに不具合がある可能性は大。
突っ込まれたので altercmd を使ってみる
call altercmd#load() "これを書かないとコマンド定義されない command! -nargs=? -bang WQ call s:WriteClose('<bang>') function! s:WriteClose(bang) if a:bang == '' write | bd else write! | bd! endif endfunction AlterCommand q bd "AlterCommand q! bd! 不要だった AlterCommand wq WQ
AlterCommand に write と bdelete を同時に渡せない(?)様なのでとりあえずコマンド定義