通常モードでCtrl-Zを無効にする


9

Ctrlz通常モードでを押すと、gVimが「最小化」されるか、vim(gVimではない)でシェルに戻ります。

この機能を無効にしたいのですが

  • マップを解除できませんCtrlzunmap <c-z>戻りますno such mapping
  • と呼ばれるオプションはなくsuspend、使用することができますunset suspend

私はそうしました:help suspendが、ドキュメントは「一時停止」を無効にすることについては何も述べていません。

回答:


14

したがって、理解しておく必要のあることがいくつかあります。

まず、あなたは使用できません、:unset suspendそしてそれは正常です。Vimの一時停止はオプション(設定を解除できる)ではなく、次のコマンドによって制御されます:suspend。見る:h :suspend

次に、によってトリガーされた一時停止を無効にしctrlzます。これは組み込みコマンドなので、このキーの組み合わせを「マップ解除」することはできません。マッピングを解除できる唯一のマッピングは、あなた(またはプラグイン)がcommandで作成したもの:map <key> <action>です。

あなたができることは、Vimに「私が押すctrlzと、いつものように中断する代わりに何もしない」と言うことです。

これはこのコマンドが行うことです:

nnoremap <c-z> <nop>

次のように理解できます。

n                      Do the following mapping only in normal mode
 nore                  Don't make it recursive (This is not necessary here but strongly recommended in all your mappings)
     map               Create a mapping
         <c-z>         The keys that you want to remap
               <nop>   This is the short for "no operation" i.e. Do nothing

この行をvimrcに追加するか、単にvimのコマンドラインに入力し:nnoremap <c-z> <nop>て、マッピングが現在のセッションにのみ存在するようにすることができます。

を参照してください:h <nop>


私はcmderを使用するウィンドウでneovimを使用していました。ctrl+ zを使用すると、neovimは一時停止しましたが、ジョブコントロールがないため、neovimに戻ることができませんでした。したがって、これがトリガーされるたびに、プロセスを強制終了する必要がありました。サスペンドのマッピングを解除することでうまくいきました!
Steven Huang

2

CtrlzgVimで必要なものにマップできます。最初にマップを解除する必要はありません。

実際、mswin.vimgVimパッケージに付属するは、すでに次のようにundoにマッピングしています。
noremap <C-Z> u

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.