在vim中映射数字小键盘键
我无法使这个映射在xterm终端内的vim中工作。在vim中映射数字小键盘键
我可以得到相同的映射在gvim中正常工作。如果我在终端上在vim中发出上述命令,它会接受它,并且当我输入:map
时它会正确显示。但在正常模式下,如果按键盘按键,则状态行显示“0”,然后在下一次按键时消失。
我使用Fedora 14附带的vim,如果有问题的话,还有一个普通的xterm。键盘按键在插入模式下工作正常,无论是使用numlock打开还是关闭。
我错过了什么?
尝试将此行添加到您~/.Xdefaults
:
xterm*appkeypadDefault: false
和重新启动的xterm。
“应用程序的键盘模式”,很可能你的烦恼的原因。
但我不认为你应该做你正在做什么。在--NORMAL--
模式下,数字输入用于表示“计数”,如4dd
。将数字映射到其他命令会让您快速陷入麻烦。
您应该为您的问题添加xterm
标记。
有没有在这个问题,这可能表明实际问题有些含糊不清。 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
里面运行vim
,vim
只会看到0。字面0
在vim中并没有在命令模式下做很多事情。
嗯,谢谢,但这没有奏效。另外,'false'是xterm * appkeypadDefault的默认值,如xterm手册页所示。 我已经使用vim做了十年以上的所有工作,而且我从来没有用过*键盘*来指定重复操作(不需要离开主位置是vim的优点之一)。所以我可以用键盘映射。 – PonyEars