2012-03-31 63 views
9

不變,我有的vimrc交換分號和冒號,但離開結腸等<map>小號

noremap ; : 
noremap : ; 

設置爲試圖讓我使用較短的按鍵來獲得一個冒號。但是,這使得我的其他映射無法工作,因爲現在它會使用分號而不是冒號。

map ,c :cd ~/code<CR>例如變成map ,c ;cd ~/code<CR>所以不起作用。我怎樣才能解決這個問題? 謝謝!

+0

你需要重新映射冒號嗎?我只是使用'nnoremap; :'就是這樣。 – alberge 2012-03-31 05:06:32

+0

@alberge:只使用這些映射中的第一個映射,可以映射'''普通模式命令。當添加第二個映射時,';'和':'的含義被交換。 – 2012-03-31 13:41:10

+3

哇,我從來沒有想過使用這種映射?我現在要將它添加到我的.vimrc中。 – weronika 2012-04-01 03:38:02

回答

8

:map系列的命令允許使用 定義的新映射(包括它本身)中的映射。在必要時,它可以遞歸嵌套映射和 嵌套映射。這就是爲什麼結腸映射 被施加到具有冒號其他映射,如

:map ,c :cd ~/code<cr> 

爲了避免這種情況,可以使用:noremap家庭命令,做 不能解釋在右側任意映射映射 定義的(見:help :no):

:noremap ,c :cd ~/code<cr> 

在大多數情況下與其他映射干擾是不期望的側 效果。作爲一個經驗法則,我會建議在引入映射時按照約定遵循 :除非有明確的理由不這樣做,否則使用:noremap 函數。