2011-09-08 169 views
1

我無法使這個映射在xterm終端內的vim中工作。在vim中映射數字小鍵盤鍵

​​

我可以得到相同的映射在gvim中正常工作。如果我在終端上在vim中發出上述命令,它會接受它,並且當我輸入:map時它會正確顯示。但在正常模式下,如果按鍵盤按鍵,則狀態行顯示「0」,然後在下一次按鍵時消失。

我使用Fedora 14附帶的vim,如果有問題的話,還有一個普通的xterm。鍵盤按鍵在插入模式下工作正常,無論是使用numlock打開還是關閉。

我錯過了什麼?

回答

0

嘗試將此行添加到您~/.Xdefaults

xterm*appkeypadDefault: false 

和重新啓動的xterm。

「應用程序的鍵盤模式」,很可能你的煩惱的原因。

但我不認爲你應該做你正在做什麼。在--NORMAL--模式下,數字輸入用於表示「計數」,如4dd。將數字映射到其他命令會讓您快速陷入麻煩。

您應該爲您的問題添加xterm標記。

+0

嗯,謝謝,但這沒有奏效。另外,'false'是xterm * appkeypadDefault的默認值,如xterm手冊頁所示。 我已經使用vim做了十年以上的所有工作,而且我從來沒有用過*鍵盤*來指定重複操作(不需要離開主位置是vim的優點之一)。所以我可以用鍵盤映射。 – PonyEars

0

有沒有在這個問題,這可能表明實際問題有些含糊不清。 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中並沒有在命令模式下做很多事情。