1

xterm ターミナル内の vim でこのマッピングを機能させることができません。

:map <k0> :echo 'Hello'<CR>

同じマッピングを gvim で正常に動作させることができます。上記のコマンドを端末の vim で発行すると、それが受け入れられ、入力すると正しく表示され:mapます。しかし、通常モードでは、0キーパッドのキーを押すと、ステータス行に「0」が表示され、次にキーを押すと消えます。

それが重要な場合は、Fedora 14に付属のvimと、プレーンなxtermを使用しています。キーパッドのキーは、numlock がオンでもオフでも、挿入モードで正常に機能します。

私は何が欠けていますか?

4

2 に答える 2

0

質問にはあいまいさがあり、実際の問題を示している可能性があります。vim は、k0それがファンクション キーであると仮定してそのバインディングを受け入れます。

ほとんどのキーボードは から始まる番号のファンクション キー1であり、いくつかのターミナルの説明ではファンクション キー 1 を とk0同等に扱い、いくつかはそれk0ファンクション キー 10 と同等にしています。ただし、可能性は低いです (キーパッドはファンクション キーとは異なる文字シーケンスを使用するため)。

これは、ファンクション キーを認識している端末記述を使用したことを前提としています。vt100 端末の説明では、vt100 にはファンクション キーがなかったので (会話相手に応じて使用するか使用しないかを除いて)、それをPF1行いません。PF4しかし、 があればTERM=vt100、端末の説明に基づいて数字キーパッドの一部を認識することができます (たとえば、vt100+fnkeys説明の上の長いコメントを参照してください)。

しかし、それはありませんTERM=xterm

あなたが見落としているのは、vim が組み込みの termcaps を使用して端末の説明を修正することです (おそらく役立つでしょう)。PF1次のようなテーブル エントリを使用して、などを認識します。

{K_XF1,             IF_EB("\033O*P", ESC_STR "O*P")},
{K_XF2,             IF_EB("\033O*Q", ESC_STR "O*Q")},
{K_XF3,             IF_EB("\033O*R", ESC_STR "O*R")},
{K_XF4,             IF_EB("\033O*S", ESC_STR "O*S")},

ただし、番号付きキーのエントリはありません。キー"\033O*p"はありません。0

vim に (端末の説明に) がありk0、それを何にもマップしていない場合、vim はそれをリテラルとして扱い0ます。などでも同じことが起こりk1、実質的にファンクション キーとテンキーを同じものとして扱います。

価値のあることとして、GNUscreenは同じことを行いますが、番号付きキーに対しても行います。vim内部screenで実行するvimと、0 のみが表示されます。vimのリテラル0は、コマンド モードではあまり機能しません。

于 2016-11-21T00:01:47.783 に答える
0

次の行を に追加してみてください~/.Xdefaults:

xterm*appkeypadDefault: false

xterm を再起動します。

「アプリケーション キーパッド モード」が問題の原因である可能性があります。

しかし、私はあなたがしていることをするべきではないと思います。モードでは--NORMAL--、数値入力は のように「カウント」を示すために使用されます4dd。数値を他のコマンドにマッピングすると、すぐに問題が発生します。

xterm質問にタグを追加する必要があります。

于 2011-09-08T05:33:42.617 に答える