我无法让这个映射在xterm终端内的vim中工作。
:map <k0> :echo 'Hello'<CR>
我可以使用相同的映射在gvim中正常工作。如果我在终端上的vim中发出上述命令,它会接受它,当我输入:map
时它会正确显示。但在正常模式下,如果按 0 键盘键,状态行上会显示“0”,然后在下一次按键时消失。
如果重要的话,我正在使用Fedora 14附带的vim,以及一个简单的xterm。键盘按键在插入模式下工作正常,两者都打开和关闭numlock。
我错过了什么?
答案 0 :(得分:0)
尝试将此行添加到~/.Xdefaults
:
xterm*appkeypadDefault: false
并重新启动xterm。
“应用程序键盘模式”可能是您遇到麻烦的原因。
但我不认为你应该做你正在做的事情。在--NORMAL--
模式下,数字输入用于指示“{”,如4dd
中所示。将数字映射到其他命令会让你快速陷入困境。
您应该在问题中添加xterm
标记。
答案 1 :(得分:0)
问题存在一些含糊之处,这可能表明实际问题。 vim接受k0
的绑定,假设它是一个功能键。
大多数键盘,您会看到从 1
开始的数字功能键,以及一些终端描述将功能键1等同于k0
,一些将它k0
等同于功能键10.它也可能某人认为它是数字键盘的一部分,但不太可能(因为键盘使用的字符序列不同于功能键)。
假设您使用了解功能键的终端描述。 vt100终端描述没有这样做,因为vt100没有功能键(除了 PF1 到 PF4 ,它们是或者不是取决于你与谁交谈)。但是如果你有TERM=vt100
,则可以根据终端描述识别数字键盘的部分(例如参见vt100+fnkeys
description上方的冗长评论)。 / p>
但它不在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
等也是如此,实际上将功能键和数字键盘视为同样的事情。
对于它的价值,GNU screen
做同样的事情,但对于数字键也是如此。如果我在vim
内运行screen
,则vim
只会看到0&#39}。 vim中的文字 0
在命令模式下没有多大作用。