誤ってvimを終了するのを防ぐために、vimの:qをより複雑なコマンドに再バインドする方法はありますか?
6 に答える
あなたが欲しいのはです:close。次のように動作:qしますが、最後のウィンドウを閉じることはできません:
http://vimdoc.sourceforge.net/htmldoc/windows.html#:閉じる
qマップするコマンドのエイリアスを設定できますclose。
cabbrev q <c-r>=(getcmdtype()==':' && getcmdpos()==1 ? 'close' : 'q')<CR>
この :cabbrev トリックについて @Paradoxial に感謝します。
あなたが恐れているのは何ですか?保存されていない変更がある場合、 Vim は (!とにかくコマンド修飾子なしで) 終了させません。そのため、失われる可能性があるのは、GVIM のウィンドウの位置、サイズ、およびおそらくタスクバーの位置だけです。
とにかく、 のような組み込みコマンドをオーバーライドするには、次のようにcmdalias プラグイン:qを使用できます。
:Alias q if\ winnr('$')>1||tabpagenr('$')>1||confirm('Really\ quit?',\ "&OK\\n&Cancel")==1|quit|endif
これは最後のウィンドウをチェックし (:q必ずしも Vim を終了するとは限りません)、確認を挿入します。
:q次のようなものを使用して、コマンドを削除できます。
:cabbrev q <c-r>=(getcmdtype()==':' && getcmdpos()==1 ? 'echo' : 'q')<CR>
これはコマンド モードで省略qされますが、最初の列にないecho場合、省略はトリガーされません。qこのように、edit qに省略されませんedit echo。
ConfirmQuit.vim : vim を終了しようとしたときに確認ダイアログを表示します
http://www.vim.org/scripts/script.php?script_id=1072
を使用してこれを適応させました
autocmd bufenter c:/intranet/notes.txt cnoremap <silent> wq<cr> call ConfirmQuit(1)<cr>
特定のファイルに対してこれだけが欲しかったので