在我的 .vimrc 中,我有以下别名:
map <C-F> <Esc>/<C-R><C-W><CR>N
map <S-F> <Esc>/\<<C-R><C-W>\><CR>N
这些使我能够快速搜索字符串作为完整单词的一部分。执行此操作后,我经常最终将 @/(C-R、/)的内容(即我使用这些别名进行的最后一次搜索)粘贴到另一个 vim 命令(vimgrep、s//g 等)中。
如果我使用 C-F ,效果很好,因为 @/包含我搜索的字符串(例如:“foo”)。但是当我使用 S-F 时,@/包含“\<”和“\>”(例如:“\< foo\>”),我几乎总是最终手动删除它们。
有没有办法让“\<”和“\>”自动从@/寄存器中删除?
最佳答案
您可以覆盖命令行 <C-r>/
命令,或添加变体 <C-r>?
,像这样:
:cnoremap <C-r>? <C-r>=substitute(@/, '\\[<>]', '' ,'g')<CR>
关于Vim - 粘贴时如何排除剪贴板寄存器的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25067271/