[英]What's wrong with this Vim mapping?
在用於初始化某些與TeX相關設置的函數中,我定義了以下映射:
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 10 j cm V 10 k ucm的序列應該使代碼完整無缺。
所以現在:我在做什么錯?
您正在添加不必要的內容。
:s/^/% <CR>
和
:s/^% /<CR>
應該分別用於評論和取消評論。
第三個/
用於添加選項,例如/c
表示“確認”, /g
表示“全局”。 如果您不使用這些選項,則根本不需要此/
。
在“ uncomment”替換中,您轉義了%
但%
本身對於Vim的正則表達式味道沒有特殊意義。 如果Vim逃逸了,不僅Vim肯定不會與之匹配,而且\\%<something>
用於一堆原子,例如\\%d
。 因此您的模式失敗了,因為Vim偶然發現您的\\%
期望原子的其余部分並“一無所獲”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.