質問にはあいまいさがあり、実際の問題を示している可能性があります。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
は、コマンド モードではあまり機能しません。