如何将复制的文本粘贴到VI命令提示符中

125

我想知道是否有办法将拷贝的文本粘贴到命令行窗口中。例如,如果我已经复制了一个单词并想在某个位置进行grep操作,我不能简单地使用 'p' 粘贴该单词。然而,如果我将其复制到剪贴板中,则可以使用 Shift-Insert 来粘贴相同的内容。

是否有任何技巧可用,允许我将复制的文本粘贴到vim命令提示符中?

我正在Windows上使用gvim。

7个回答

187

尝试使用

<ctrl+r>"

“ where ”代表默认寄存器。


7
请注意,这也适用于普通插入模式,不仅限于命令行。 - user55400
26
如果您使用 * 而不是 ",则会获取系统剪贴板中的内容(这可能很方便)。 - dash-tom-bang

44

<C-R>"将粘贴默认缓冲区。或者,您可以使用q:为下一个命令打开缓冲区。请尝试:help q:


13
天啊,q: 真是太棒了。 - Hubro

21
  • 首先按下Esc键确保您处于普通模式。
  • 进入普通模式后,按下:键。
  • 然后使用键盘组合键ctrl-r,并输入"

注意:如果您复制的是包含相对文件路径的整行文本,则换行符也会被粘贴...也就是说,如果不删除最后一个^M,则:! touch src/bash/script.sh^M将创建一个包含"\r"的“有趣”文件路径...


16

为了简化操作,如果你的光标已经停留在想要在 Ex 中使用的单词上,请使用以下命令:

 <ctl-r><ctl-w>

这样可以避免从缓冲区中拷贝并粘贴到命令行中; 取而代之的是,将光标下的单词直接粘贴到命令行中。例如:

:%s/<ctl-r><ctl-w>/foo/g

5

如果你只想复制一个单词,你可以使用<C-r><C-w>

  1. 将光标放在单词上
  2. 然后输入类似于:vim <C-r><C-w> *的命令

3

您可以使用名称为*的缓冲区将内容复制到剪贴板。例如,这将把当前行复制到剪贴板:

"*yy

使用这种方式可以复制一行文本,然后在命令行中使用Shift+Insert进行粘贴。

同样地,您也可以使用以下方式从剪贴板中进行粘贴:

"*p

2
剪贴板的“+”符号,至少在Mac上是这样的。因此,您可以写"+yy"将一行复制到剪贴板,然后使用"+p"进行粘贴。虽然您也可以使用Command-C和Command-V。

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