誤って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>
特定のファイルに対してこれだけが欲しかったので