2011-11-16 137 views
0

在函數裏,我用它來初始化我有以下映射定義的一些TeX的相關設置:這個Vim映射有什麼問題?

vmap <buffer> ucm :s/^\% //<CR>:nohlsearch<CR> 

我希望它讓我輕鬆地取消註釋直觀地選擇線。類似的:

vmap <buffer> cm :s/^/\% /<CR>:nohlsearch<CR> 

在評論中做得不錯。其他語言的類似映射使用#而不是%工作得很好。這些最後的是這樣的:

vmap <buffer> cm :s/^/# /<CR>:nohlsearch<CR> 
vmap <buffer> ucm :s/^# //<CR>:nohlsearch<CR> 

VĴ釐米序列VķUCM應該留下的代碼不變。

那麼現在:我做錯了什麼?

回答

4

您正在添加不必要的東西。

:s/^/% <CR> 

:s/^% /<CR> 

應該工作的註釋和分別取消註釋。

第三個/用於添加諸如「確認」的/c或「全局」的/g等選項。如果您不使用這些選項,則根本不需要此/

在您的「取消註釋」替換中,您正在轉義%,但%本身對Vim的正則表達式風格沒有特殊含義。不僅如此,Vim肯定不會匹配它,但\%<something>用於一堆原子,如\%d。所以你的模式失敗了,因爲Vim在你的\%上徘徊,期待着原子的其餘部分,並且「沒有」。

+0

謝謝,你幫了很多。 – szablica