1

我无法让这个映射在 xterm 终端内的 vim 中工作。

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

我可以获得相同的映射以在 gvim 中正常工作。如果我在终端上的 vim 中发出上述命令,它会接受它,并且在我输入:map. 但是在正常模式下,如果我按下0键盘键,状态行会显示一个“0”,然后在下一次按键时消失。

如果这很重要,我正在使用 Fedora 14 附带的 vim,以及一个普通的 xterm。键盘按键在插入模式下工作正常,无论是打开还是关闭数字锁定。

我错过了什么?

4

2 回答 2

0

尝试将此行添加到您的~/.Xdefaults

xterm*appkeypadDefault: false

并重新启动 xterm。

“应用程序键盘模式”可能是您遇到问题的原因。

但我认为你不应该做你正在做的事情。在--NORMAL--模式下,数字输入用于表示“计数”,如4dd. 将数字映射到其他命令会让您快速陷入困境。

您应该xterm为您的问题添加一个标签。

于 2011-09-08T05:33:42.617 回答
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里面跑screenvim只会看到 0。vim 中的文字0在命令模式下没有多大作用。

于 2016-11-21T00:01:47.783 回答