2013-04-01 38 views
1

Vim/vi快捷鍵非常棒,但有一種行爲,如果可以配置,我會非常高興。我的機器使用巴西葡萄牙語(abnt2)鍵盤映射,並且一些口音(如插入符號)需要額外的空格鍵才能打印,顯然是因爲它們等待/期待另一個字符,主要是元音字母。的例子「切,直到找到一個空行」:在vi中重新映射或忽略空格鍵

d/^$ 

擊鍵實際需要的BR-ABNT2:

d/<shift + ~ , spacebar>(to result ^) $ <enter> 

因爲它是在this awesome線程解釋我可以使用{ d },但我會在其他需要額外退格技巧的重音(反斜線)上獲得更多優勢,並且最重要的是,例如,在不更改我的鍵盤映射到「US」的情況下。

編輯:我也知道這是鍵盤佈局的限制,因爲我們的語言所期望的口音後的東西,這就是爲什麼我問如果有circunvent裏面VIM此限制的一種方式。

任何想法?

+0

空格鍵不是問題,在這裏:它允許你插入本質上是「非字符」的東西。通常,在'^'上擊兩次就足夠了。 – romainl

+0

嘗試用 v作爲前綴以逃避下一個字符。 –

+0

是的。我知道這是一個關鍵地圖限制,而且空間就是我用來插入脫字符而沒有元音的東西。這就是爲什麼我在周圍徘徊,看看是否有辦法避免vim中的keymaping限制;) – nwildner

回答

0

該問題不是來自編輯器,而是您的鍵盤映射。實際上,caret被設置爲「死鑰匙」。這意味着在打印之前它應該等待其他輸入。

您可能需要的是將caret作爲非死區鍵的新鍵盤映射。例如,uk-gb映射關鍵字上有caret以及另一個死鎖(如果我沒有記錯的話)。

如果你不想/不能重新映射你的鍵盤,你可以使用vim映射功能做到這一點。 只要選擇一個未使用的密鑰並將其映射這樣的:

imap g^

這將插入^,而在插入模式輸入g(其他映射其他 - 模式存在,NMAP,...)。 例如,使用在VIM命令行Vim的映射,你必須使用:

cmap g^

那麼你的例子進行工作。

+0

是的。我知道問題出在我的鍵盤佈局上,我也很樂意找到一個可以改變插入符號的「死鑰匙行爲」的解決方案,就像我不需要更改鍵盤佈局一樣。 你的回答在插入模式下非常有用,但不會像上面解釋的那樣在「運動」下工作:( - 感謝您的提示:) – nwildner

+0

實際上'nmap'^'對動作起作用。對於其他不同的其他鍵,可能有些不負責任,這取決於以此鍵開頭的現有其他快捷鍵(例如g)。用':map '檢查出來。 –

+0

哦,我的壞,它不適用於你的例子。我會檢查其他映射是否有效。 –