Search 搜索“;“未经记录”;在Vim中,或从搜索历史记录中删除搜索模式? 我在我的.VRIMRC可爱的小宏中添加/删除代码中的C++风格注释: " remove c++ style comment nmap _ :s/^[ \t]*\/\///<CR>==:nohls<cr> " comment line, c++ style nmap - :s/^[ \t]*/\/\/ /<CR>==:nohls<cr> “代码>”删除C++风格注释 nmap\uS/^[\t]*\/\/==:nohls “注释行,C++风格 nmap-:s/^[\t]*/\/\/==:nohls
这些工作原理是用另一个线条图案替换线条图案的开头。在一种情况下添加//在另一种情况下删除斜杠(如果找到) 我遇到的问题是,这些宏使用搜索和替换。结果,不需要的搜索模式被保存到vim的搜索历史中,使其变得混乱 考虑以下顺序:Search 搜索“;“未经记录”;在Vim中,或从搜索历史记录中删除搜索模式? 我在我的.VRIMRC可爱的小宏中添加/删除代码中的C++风格注释: " remove c++ style comment nmap _ :s/^[ \t]*\/\///<CR>==:nohls<cr> " comment line, c++ style nmap - :s/^[ \t]*/\/\/ /<CR>==:nohls<cr> “代码>”删除C++风格注释 nmap\uS/^[\t]*\/\/==:nohls “注释行,C++风格 nmap-:s/^[\t]*/\/\/==:nohls,search,macros,vim,Search,Macros,Vim,这些工作原理是用另一个线条图案替换线条图案的开头。在一种情况下添加//在另一种情况下删除斜杠(如果找到) 我遇到的问题是,这些宏使用搜索和替换。结果,不需要的搜索模式被保存到vim的搜索历史中,使其变得混乱 考虑以下顺序: 搜索“你好” 使用宏注释一行 再次搜索(通过键入“n”或/,键入up,输入) 结果:搜索不查找“hello”,因为搜索模式设置为宏使用的任何宏,即^[\t]* 如何修改此宏以不将不需要的模式注入搜索历史记录 使用let old=@/保存当前搜索寄存器 做你的事 使用调用his
let old=@/
保存当前搜索寄存器调用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>
“代码>”删除C++风格注释
nnoremap:let old=@/s/^[\t]*\/\/==:nohlscall histdel('/',-1)let@/=old
“注释行,C++风格
nnoremap-:let old=@/s/^[\t]*/\/\/==:nohlscall histdel('/',-1)let@/=old
或者使用Tim Pope的。最近的VIM具有
:keeppattern
修饰符,可以防止模式添加到历史记录中。此外,还有一个search()
函数,它不涉及搜索历史记录。请参阅:help histdel()
。请参阅此处的“Preserve”函数:这很完美,正是我想要的。谢谢另外,我觉得“评论”非常有用,我想从现在起我会使用它。我唯一的问题是,它在切换注释时清除了多行选择。通过添加一个仅在可视模式下运行的“gv”命令,可以很容易地解决这个问题。例如:nmap-gcc-vmap-gcgv:keeppattern
修饰符是否也保存搜索模式标志?替换旗呢?我认为那会很好。它不会保存任何东西,而是防止历史被污染。使用它会防止搜索标志被污染吗?e、 g.搜索类似于/foo/e
的东西,然后如果我运行一个类似的:keeppattern/baz
我的下一个n
是/foo/e
还是仅仅/foo
?它将跳转到/foo。似乎仍然存在一些错误。应通过修补程序7.4.150和7.4.155修复。请注意,从可视模式调用:search()
等命令将退出该模式,从而释放选择。在同一宏中调用它类似于v`>
或v`