VimでCtrl + vを使用するときにCtrlを使用する理由とそれを修正する方法は?

VimでCtrl + vを使用するときにCtrlを使用する理由とそれを修正する方法は?

うまくいかないので、Vimを使っ/etc/zsh/zshrcてキーバインディングを追加しています。 tmux端末で+と入力し、+と入力するとシェルが表示されます。ただし、Vim挿入モードのときに同じ順序を押すと、次の結果が表示されます。 。zshinputrcCtrlvCtrlLeftArrow^[OD^[[D

私はこれが^[[D+を入力したときにシェルが生成することに気づきました。また、ファイルを次のように変更しましたが、期待どおりに機能しました(+を押すと、カーソルが1単語後ろに移動します)。これが私が言う行です:CtrlvLeftArrow^[[D^[OD/etc/zsh/zshrcCtrlLeftArrow

bindkey "^[OD" backward-word

VimはCtrl

答え1

これは実際にVimではなく、あなたの端末が何か奇妙なことをしているのです。端末は、カーソルキーに関連する2つの制御シーケンスセットを有する。歴史的理由:1つは「アプリケーションカーソルキーモード」とも呼ばれるフルスクリーンアプリケーション用で、もう1つは読み取り - 評価 - 印刷アプリケーション(例:シェル)。

過去には、読み取り - 評価 - 印刷アプリケーションにライン編集機能がなく、端末またはオペレーティングシステムの端末ドライバは最終的にさらに複雑になりました。したがって、端末は、端末ドライバが使用する制御シーケンスを送信する。とにかく、Unixターミナルドライバは適切な行編集機能を持っていません(例:readlineライブラリを介して)。

端末はカーソルキーモードとアプリケーションカーソルキーモードの編集中に+を␛OD送信しています。Ctrl2つのオプションがあります。Left␛[D

  • 両方のモードを区別しないように端末を設定します。これを行う方法は、端末エミュレータによって完全に異なります。
  • それで生き特定のアプリケーションは常に端末を同じモードに設定するので、使用するモードに応じてキーバインディングを設定するだけです。

関連情報