[英]Search “off the record” in Vim, or remove search pattern from search history?
我在我的.vrimrc可爱的小宏中添加/删除代码中的c ++样式注释:
" remove c++ style comment
nmap _ :s/^[ \t]*\/\///<CR>==:nohls<cr>
" comment line, c++ style
nmap - :s/^[ \t]*/\/\/ /<CR>==:nohls<cr>
这些工作通过用另一个替换线条图案的开头。 在一种情况下添加//和在另一种情况下删除斜杠(如果找到)。
我遇到的问题是那些宏使用搜索和替换。 结果,不需要的搜索模式被保存到vim的搜索历史中,使其混乱。
考虑一下顺序:
如何修改此宏以不将不需要的模式注入搜索历史记录?
最近的:keeppattern
有:keeppattern
修饰符,它将阻止模式添加到历史记录中。
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>
或者使用蒂姆波普的评论 。
此外,还有一个search()
函数,它不会触及搜索历史记录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.