从vim搜索词复制

时间:2010-11-19 14:26:32

标签: vim

我正在尝试从我的vim搜索字词中复制文本。我花了很多时间为sed搜索和替换构建正则表达式。由于我的正则表达式通常非常复杂,我喜欢在执行之前在搜索中构建它:%s / regex / new text / g

在终端vim中,我可以使用鼠标从搜索行复制我的新正则表达式。我想尽可能多地使用gvim,但它不会让鼠标点击直接复制。

如何将搜索词放入缓冲区?

谢谢,

安德鲁

4 个答案:

答案 0 :(得分:35)

在命令模式下(当你点击时:正常模式下),你可以执行ctrl-R /,这将扩展到你的上一个搜索词(其他ctrl-R收藏夹是“为你的yank缓冲区,或者%为当前窗口的完整路径)

你实际上并不需要这样做。如果你省略了搜索词:s,它会假设你想要使用你搜索的最后一件事。所以你可以/ searchregex,然后在do:%s // replaceregex /之后,它将使用搜索正则表达式进行替换。

答案 1 :(得分:17)

使用q:打开包含命令行历史记录的可编辑窗口。从那里,您可以使用所有常用的Vim工具集来复制/粘贴/等。

有关搜索记录的等效功能,请键入q/

答案 2 :(得分:1)

q/显示搜索记录。对于将字符串从普通缓冲区复制到命令缓冲区或搜索缓冲区的反向操作(不允许正常使用p),请使用Ctrl-R 1进行粘贴。

答案 3 :(得分:0)

您可以使用:let在寄存器之间复制文本,例如将最后一个搜索词复制到注册b

:let @b=@/

然后使用ctrl-R b将其插入Matt Briggs的答案中。当然,当您可以使用ctrl-R /(在插入或退出模式下)或"/p(在正常模式下)直接插入时,这是不必要的,但是使用此映射:

nnoremap <silent> y/ :let @"=@/<CR>

您可以输入y/将最后一个搜索字词复制到未命名的寄存器,以便轻松粘贴。您可以使用*寄存器复制到系统剪贴板,并将文本提供给其他应用程序:

nnoremap <silent> y/ :let @*=@/<CR>

:help 'clipboard'
:help registers

有关Vim寄存器和使用系统剪贴板的更多信息。