端末が検出することは可能ですか? ⇧ Shift+Enter↵ または Ctrl+Enter↵ キーを押す?
これらのシーケンスを使用するキーマッピングを実行するようにvimを構成しようとしていますが、gvimでは正常に機能しますが、ターミナルコンソールでは機能しないようです。
不思議なことは Ctrl+Enter↵ vim、マッピングで検出されない Enter↵ に Esc 正しくマップしますが、 Ctrl+Enter↵ 次のように動作します Enter↵!
一部の端末は、<NL>
が押されると<C-Enter>
を送信します。これは、<C-J>
を送信するのと同じです。
ターミナルが<Shift-Enter>
、<Ctrl-Enter>
、<Enter>
で何をするかを知るには、ターミナルに行き、<Ctrl-V>
(sykoraのvimの提案と同様)と入力し、興味のあるシーケンス。
Gnome-terminalを使用すると、次のようになります。
<Enter> : ^M
<S-Enter> : ^M
<C-Enter> : <NL>
man ascii
を見ると、^M
が<CR>
シーケンスを提供していることがわかります。
答えは、端末によって異なり、簡単に確認できる方法があるということです。
Gvimはキーストローク処理のために独自のマネージャーを実行しているため、さまざまなキーの組み合わせをすべて取得できます。 Vimは、特定のキー押下を渡すために特定の端末に依存しているため、キー処理は端末と同じくらい優れているか、さまざまです。
やりたいことができるかどうかを知る1つの方法は、キーを使用して挿入されているものを見つけることです。例:タイプ:
:<C-V><C-Enter>
つまり、Control-Vの組み合わせを入力した後、実際に押したい組み合わせを入力します。その後、enterについても同じことを行います。
:<C-V><Enter>
それらが同じコードを生成する場合、端末は両方のキーの組み合わせを同じキーコードとして解釈し、端末をいじらずにそれらをバインドすることはできません。
私のターミナル(urxvt)では、Control-Enter、Shift-Enter、Enter(それ自体)はすべて^ M文字を生成します。つまり、一方をマッピングせずに他方をマッピングすることはできません。 Control-TabとControl-I、およびControl-SpaceとControl- @についても同じことが言えます。
編集:Windows用のC-Vの代わりにC-Qを使用してください。