我想要将yanked文本粘贴到Vim的命令行中。这可能吗?


当前回答

OS X

如果你在Mac OS X上使用Vim,不幸的是它带有旧版本,并且不符合剪贴板选项。幸运的是,Homebrew可以轻松解决这个问题。

安装Vim:

编译安装vim——with-lua——with-override-system-vi

安装Vim的GUI版本:

安装macvim -with-lua -with-override-system-vi

重启终端生效。

将下面的行追加到~/.vimrc 设置剪贴板=不知名的

现在你可以用yy在Vim中复制这一行,并在系统范围内粘贴它。

其他回答

还值得注意的是,yank寄存器与宏缓冲区是相同的。换句话说,您可以简单地在文档中写出整个命令(包括粘贴的代码片段),然后“通过将它拉到b寄存器,然后使用@b运行它”。

要粘贴系统剪贴板中的内容,可以使用SHIFT - INS。

它在Windows中工作,但我猜它在Linux中也工作得很好。

我也遇到过类似的问题。我希望选择的文本以命令结尾,而不是依赖于粘贴它。下面是我试图为之写映射的命令:

:call VimuxRunCommand("python")

这个插件的文档只显示使用字符串文字。如果你试图选择包含双引号的文本,下面将会中断:

vnoremap y:call VimuxRunCommand("<c-r>"")<cr>

为了解决这个问题,你只需要使用@引用宏的内容:

vnoremap y:call VimuxRunCommand(@")<cr>

将未命名寄存器的内容传递进来,并使用双引号和多行边格。

作为上下文,这个信息来自开箱即用,没有插件,没有.vimrc Vim 7.4行为在Linux Mint的默认选项。

您总是可以用鼠标选择文本(或使用V或V并将选择放在“*寄存器”中),并使用Shift + Ctrl + V将其粘贴到命令行中。

在命令行中输入Ctrl + r将提示输入寄存器名称。因此键入:CTRL-r*将把内容寄存器*放到命令行中。它将粘贴任何寄存器,而不仅仅是“*”。参见:help c_CTRL-R。

此外,鼠标中间的按钮将粘贴到命令行中。

参见:help->quote-plus了解X窗口如何处理选择。即使是在普通的开箱即用的Vim中(同样是在Linux Mint中的Vim 7.4中),用鼠标左键所做的任何选择都可以用鼠标中键粘贴到命令行中。

此外,鼠标中间按钮还可以将在Vim中选择的文本粘贴到许多其他X Window应用程序中,甚至是GUI应用程序(例如Firefox和Thunderbird),并且可以将从其他应用程序中选择的文本粘贴到命令行中。

有关addl信息,请参阅:help->x11-selection。

博士tl;

首先尝试:Ctrl -r方法,然后使用Shift + Ctrl + v或如果需要其他方法,则使用鼠标中键。

人们承认这可能令人困惑。

OS X

如果你在Mac OS X上使用Vim,不幸的是它带有旧版本,并且不符合剪贴板选项。幸运的是,Homebrew可以轻松解决这个问题。

安装Vim:

编译安装vim——with-lua——with-override-system-vi

安装Vim的GUI版本:

安装macvim -with-lua -with-override-system-vi

重启终端生效。

将下面的行追加到~/.vimrc 设置剪贴板=不知名的

现在你可以用yy在Vim中复制这一行,并在系统范围内粘贴它。