如何从命令行执行yank操作

42

我想知道是否可以从vim中复制我在命令行中编写的内容,以便稍后再次粘贴。

这非常有用,因为我经常通过先搜索它们来尝试搜索/替换模式,如果它们与我需要的匹配,我希望能够只复制该搜索表达式并在我的搜索/替换函数中使用它。

我已经知道可以使用<ctrl-r><buffer>将内容粘贴到命令窗口中,我只是想知道是否有类似于此的命令可以将我的整个命令窗口复制到剪贴板中。


Vim问题通常是相关主题。关于此已经有很多讨论。例如,请参见http://meta.stackexchange.com/questions/25925/vim-questions-so-or-su,这是一个不错的例子。 - lucapette
3个回答

67
你可以使用命令行窗口。使用q+:来打开它。然后你可以像普通窗口一样导航,复制你想要复制的内容。

23
终于知道那个窗口是干什么的了——有时候在试图退出vim时会不小心打开它。 - BergmannF
4
是的,完全正确。我记得第一次遇到这种情况时,我就像“这是什么鬼?” :) - lucapette
15
您还可以使用 q/ 以类似的方式访问搜索历史记录。当您尝试调整/精细化搜索模式时,这非常有用。 - Xavier T.

17

Vim会将最近输入的命令存储在:寄存器中,将最近搜索的表达式存储在/寄存器中。既然您已经知道如何将内容粘贴到命令窗口,您只需要键入<Ctrl-R>/,即可粘贴您最后一次搜索的内容。


6
此外,vim非常智能,在:substitute命令中,如果不输入查找模式,它会自动使用/寄存器的内容。例如,如果你已经搜索了foo,然后执行:s//bar命令,vim将直接用bar替换所有的foo,无需复制或粘贴。 - Randy Morris

7

其他方法:

  • 如果 'cedit' 选项未被覆盖,在输入命令行时按下 CTRL-F。然后,您可以访问正常模式的子集以进行编辑。 :help 'cedit'
  • 如果您需要最后一条命令行,请使用 :put :(David Brown 的答案变体,依赖于冒号寄存器包含上一个命令)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接