我的.vrimrc可爱的小宏在代码中添加/删除c ++样式的注释:
" remove c++ style comment
nmap _ :s/^[ \t]*\/\///<CR>==:nohls<cr>
" comment line, c++ style
nmap - :s/^[ \t]*/\/\/ /<CR>==:nohls<cr>
这些工作通过用另一个替换线条图案的开头。在一种情况下添加//和在另一种情况下删除斜杠(如果找到)。
我遇到的问题是这些宏使用搜索和替换。结果,不需要的搜索模式被保存到vim的搜索历史中,使其混乱。
考虑序列:
如何修改此宏以不将不需要的模式注入搜索历史记录?
答案 0 :(得分:9)
最近的Vims具有:keeppattern
修饰符,这将阻止该模式添加到历史记录中。
答案 1 :(得分:7)
let old = @/
,call histdel('/', -1)
,let @/ = old
恢复搜索注册。像这样:
" remove c++ style comment
nnoremap <silent> _ :let old = @/<bar>s/^[ \t]*\/\///<CR>==:nohls<bar>call histdel('/', -1)<bar>let @/ = old<cr>
" comment line, c++ style
nnoremap <silent> - :let old = @/<bar>s/^[ \t]*/\/\/ /<CR>==:nohls<bar>call histdel('/', -1)<bar>let @/ = old<cr>
或者使用Tim Pope的Commentary。
答案 2 :(得分:2)
此外,还有一个search()
功能,它无法触及搜索记录。