2012-09-02 90 views
2

我有以下主要地圖:VIM鍵映射不起作用

nmap <F9> :s/^/\/\*! /<cr>:s/$/ !\*\//<cr>j 

它的目的是註釋行用C風格。當我點擊<F9>它工作正常。但是當我嘗試在數字前面加上數字(評論指定數量的行)時,它會在除最後一行之外的每行上忽略關閉括號*/。它看起來像:

/*! foo1; 
/*! foo2; 
/*! foo3; !*/ 

我有類似的鍵映射到取消註釋:

nmap <F10> :s/^\/\*! //e<cr>:s/ !\*\/$//e<cr>j 

和情況是類似的(不排除閉架)。

編輯:

Ha! I found solution.

回答

2

其實vim鍵盤佈局通常不支持lineranges。但也有一些解決方法:

  1. 成立了視覺選擇(線),並改變你的映射:nmap <F9> :'<,'>s/^/\/\*! /<cr>:'<,'>s/$/ !\*\//<cr>j(請注意,您可以發出一個線條更加EX命令,這樣就可以「縮短」它nmap <F9> :'<,'>s/^/\/\*! /|'<,'>s/$/ !\*\//<cr>j
  2. ,但我會建議使用此插件:NERD commenter是真正的能力...
2

嗯......棘手這事做的第一替補指令被轉換爲範圍:.,.+n,但第二個只是在最後一個線上行事,我不太清楚爲什麼會這樣克,但轉換爲單一替代解決了這個問題。因此,摺疊成一個呼叫,然後整理了一下,這個工程:

nnoremap <F9> :s!.*!/* & */!<CR>j

(注意用!代替/爲形分隔您可以使用:s與(幾乎)任意字符。 /只是默認設置,如果你的模式使用了很多/ s,那麼使用別的東西並保存一些逃逸是明智的。)