2

ウィンドウサイズを管理するために、次のマッピングを使用しています。

:nnoremap <kPlus> <C-W>+
:nnoremap <kMinus> <C-W>-
:nnoremap <kDivide> <C-W><
:nnoremap <kMultiply> <C-W>>

マップウィンドウのジャンプにコントロールプレフィックスを追加しても、効果はありません。

:nnoremap <C-kDivide> <C-W>h
:nnoremap <C-kMultiply> <C-W>l

プレス<C-kMultiply>はと同じように機能します<kMultiply>

なぜですか?

4

1 に答える 1

0

ZyXが言ったことを拡張するには:

のようなキー<C-kMultiply>は、GUI環境からキーボード入力を受け取るGVimで正常に機能しますが、制御文字が定義されている由緒ある方法のため、ターミナルVimの入力として機能するストリームで表すことはできません。

制御文字をキーボードにマップする方法(ウィキペディア)

制御修飾子は、上位2ビットをゼロにするだけで機能するため、たとえばG(<strong> 10 00111)はBEL(<strong> 00 00111)になります。<kMultiply>これは、シングルバイトの文字コードでのみ機能することを意味します。実際に送信するものなど、マルチバイトのエスケープシーケンスに適用する方法はありません。

(これは、ターミナルで一般的にと組み合わせることができない理由でもあります。上位ビットがゼロになると、両方ともCtrl同じ制御文字になります。)Shift<C-G><C-g>

このような表現できないキーの組み合わせに直面して何が起こるかは、端末ごとに異なります。xtermたとえば、修飾子を無視して<C-kMultiply>として送信しますが、キー押下の送信<kMultiply>gnome-terminal完全に拒否します。

于 2012-07-26T07:17:07.850 に答える