Vim - 粘贴时如何排除剪贴板寄存器的一部分

标签 vim

在我的 .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/

相关文章:

vim - Emacs 邪恶 "repeat"(点)行为

emacs - 告诉 VI 读/写带有软制表符和指定缩进的源文件的语法是什么?

linux - 不要成功将 perl 解释器包含到 vim 中

vim - 注释 "COMBAK"是什么意思?

bash - 在 Windows 10 上的 ubuntu 上使用 bash 启用 vi 鼠标滚轮滚动

Vim 保持不缩进

vim - 避免在 .vimrc 中的 autcmd BufWritePre 上移动光标

vim - 当我编辑 *.sh 文件时,单词边界发生变化

python - 如何使文本环绕匹配 vim 中的当前缩进级别?

vim 将 ex 范围设置为当前段落,没有视觉/标记等