在vim中映射数字小键盘键

问题描述:

我无法使这个映射在xterm终端内的vim中工作。在vim中映射数字小键盘键

​​

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

我使用Fedora 14附带的vim,如果有问题的话,还有一个普通的xterm。键盘按键在插入模式下工作正常,无论是使用numlock打开还是关闭。

我错过了什么?

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

xterm*appkeypadDefault: false 

和重新启动的xterm。

“应用程序的键盘模式”,很可能你的烦恼的原因。

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

您应该为您的问题添加xterm标记。

+0

嗯,谢谢,但这没有奏效。另外,'false'是xterm * appkeypadDefault的默认值,如xterm手册页所示。 我已经使用vim做了十年以上的所有工作,而且我从来没有用过*键盘*来指定重复操作(不需要离开主位置是vim的优点之一)。所以我可以用键盘映射。 – PonyEars

有没有在这个问题,这可能表明实际问题有些含糊不清。 vim接受k0的绑定,假设它是一个功能键。

,你会看到开始1数字功能键大多数键盘,和几个终端的描述等同功能键1至k0,几等同起来k0的功能键10.这也是可能某人认为它是数字键盘的一部分,但不太可能(因为键盘使用不同于功能键的字符序列)。

这是假设你使用的是知道的功能键终端的描述。 vt100终端描述不这样做,因为vt100没有功能键(PF1通过PF4哪些是或不是你要与谁谈话)。但是如果你有TERM=vt100,那么的一些的数字小键盘可以根据终端描述来识别(例如参见vt100+fnkeys description以上的冗长评论)。

这不是在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。这与​​等相同,实际上将功能键和数字小键盘视为同一件事。

对于它的价值,GNU screen做同样的事情,但也为数字键。如果我在screen里面运行vimvim只会看到0。字面0在vim中并没有在命令模式下做很多事情。