終端文字に Ctrl + Backspace をマッピングする

終端文字に Ctrl + Backspace をマッピングする

最近 Vim を使い始めました。以前のエディタでは、Ctrl- を押して単語全体を削除していましたBackspace。ドキュメントを見た後、 Vim ではCtrl- を押すことで削除できることが分かりましたw。問題は、Ctrl-を押すことに慣れた後w、単語を間違えるたびにタブやチャットを閉じるようになったことです (この質問を書いている間に、このタブを 5 回閉じました)。そこで、Vim でキーをマップする方法を確認し、次のことを試しました。

:imap <C-BS> <C-w>

残念ながら、うまくいきませんでした。少し調べたところ、ターミナルはCtrl-Backspaceとを区別しないことがわかりましたBackspace。この問題を修正するためのハックやパッチをいくつか見ましたが、terminator (使用したいエミュレーター) では動作しませんでした。

ターミネータを使用するときに Vim でCtrl- をマップする方法はありますか?Backspace

答え1

キーボード入力が内部的に処理される方法により、残念ながらこれは今日では一般的には不可能です。一部のキーの組み合わせ、たとえばCtrl+ 非アルファベットはマッピングできず、Ctrl+ 文字とCtrl+ Shift+ 文字は区別できません。(端末が明確なタームキャップほとんどの人はそれをコード化していません。) 挿入モードまたはコマンドラインモードで、キーの組み合わせを入力してみます。何も起こらない場合は / が挿入されますが、そのキーの組み合わせは使用できません。これは<Tab>/ <C-I><CR>/ <C-M>/ <Esc>/<C-[>などにも適用されます (唯一の例外は<BS>/です<C-H>)。これは既知の問題点であり、vim_dev および #vim IRC チャネルでさまざまな議論の対象となっています。

一部の人々 (主に Paul LeoNerd Evans) は、これを修正したいと考えており (これをサポートする端末のコンソール Vim でも)、さまざまな提案を出しています。http://groups.google.com/group/vim_dev/browse_thread/thread/626e83fa4588b32a/bfbcb22f37a8a1f8

しかし、今日の時点では、パッチやボランティアはまだ現れていませんが、多くの人が将来の Vim 8 メジャー リリースでこれを実装することを望んでいることを表明しています。

関連情報