Vim:xターミナルキーマッピング

Vim:xターミナルキーマッピング

私は通常WindowsでVimを使用し、キーマッピングに問題はありません。しかし、今MobaXtermを介してアクセスし、Ubuntuを実行する仮想マシンを使用しているので、すべてが正常に動作しません。これには<c-s>貯蓄と走るような基本的なものが含まれますが<F5>、それなしでは生きることはできません。私はこの問題を解決すると思われる資料を調べて読みました(ここそしてここ)、しかし、彼らは私の理解を超えています。正直なところ、<c-v>ファンクションキーの前に押す必要があるのはかなり奇妙です。試してみても機能しません。誰かがこれを説明できますか?テストケースにマッピング<F2>するにはどうすればよいですか:pwd

喜んで私は私のキーマップを見つけました。するUbuntuのgVimは期待どおりに機能するので、それを使いましょう。しかし、私はまだ答えが欲しい。なぜなら、私は実際に端末で迅速かつ簡単な既存のvimの感覚を好むからです。

答え1

ctrlSこれは出力を停止するターミナルコマンドなので(ジョブの元に戻すctrlQ)それなしで生活する必要があります。

他のファンクションキーは問題なくマッピング可能でなければなりません。:mapマッピングしたいファンクションキーを入力してタップするだけです。たとえば、<F5>F5キーを押してからスペースを押して、そのキーをマップする場所を入力します。

~/.vimrc各vimセッションのマッピングを有効にするには、この行(前のコロンを除く)をファイルに配置できます。

既に試している場合は、質問を編集して正確に何を試しましたか、結果が何であるか(そして予想と異なる)を教えてください。

編集:端末定義で定義されていないシーケンスをマッピングする場合は、シーケンスを手動でマッピングできます。

まず、たとえばを押すと送信されるバイト/文字を見つける必要がありますctrlshiftF2。私はいつもod -cこれを使います。コマンドを起動し、キーシーケンスをクリックしてクリックしてctrldファイルの終わりをコマンドに送信し、デコードされたバージョンを印刷します。

$ od -c
^[[24^
0000000 033   [   2   4   ^  \n
0000006

したがって、これはエスケープ文字である[、2、4、^です(改行はシーケンスの後にあるので無視する必要があります。ダブルctrldクリックすることもできますが、出力は入力の後に始まり混乱しているようです)。

これで、シーケンスを知って次.vimrcの行を追加できます。

map <C-[>[24^ :whateveryouwant

シーケンス<C-[>はエスケープされたvim表現ですctrl[。それ以降はキャラクターはもはや特別ではなく、そのまま入力できます。

これでctrlshiftF2、vimを起動したときに入力した内容の右側にマップされます。

関連情報