我想要将yanked文本粘贴到Vim的命令行中。这可能吗?
当前回答
“我想把文本粘贴到Vim命令行中。”
虽然投票最多的答案非常完整,但我更喜欢编辑命令历史。
在正常模式下,输入:q:。这将为您提供一个最近命令的列表,可以用普通的vim命令编辑和搜索。您将从底部的空白命令行开始。
对于这篇文章所要求的事情,粘贴一个拉出的行(或任何东西)到命令行,拉出你的文本,然后:q:p(进入命令历史编辑模式,然后(p)将你拉出的文本放入一个新的命令行。随意编辑,输入即可执行。
要退出命令历史模式,则相反。在命令历史记录的普通模式下,输入::q + enter
其他回答
要将系统剪贴板中的内容粘贴到Vim命令行(“命令模式”),请使用Ctrl+R后跟+。对我来说,至少在Ubuntu上,Shift+Ins不起作用。
PS:我不确定为什么按Ctrl+R加*,理论上与按Ctrl+R加+一样,似乎并不总是有效。我搜索并发现了+版本,它似乎总是工作,至少在我的盒子。
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中复制这一行,并在系统范围内粘贴它。
如果你有两个值被插入到两个不同的寄存器(例如寄存器a和寄存器b),那么你可以简单地设置一个变量c并对其进行操作。
例如:set c = str2float(@a) + str2float(@b),然后你可以将c的内容粘贴到任何地方。
例如,在插入模式下,按CTRL + R,然后输入=进入表达式寄存器,在等号后输入c,然后按enter。现在你应该有了a和b寄存器的总数。
所有这些都可以记录在一个宏和重复!
如果使用浮点数,则使用str2float函数;如果不使用浮点数,则使用整数。
我不确定这是否是惯用的,但它适用于我的情况下,我需要在一行中添加2个数字,并重复500多行。
作为上下文,这个信息来自开箱即用,没有插件,没有.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或如果需要其他方法,则使用鼠标中键。
人们承认这可能令人困惑。
要粘贴系统剪贴板中的内容,可以使用SHIFT - INS。
它在Windows中工作,但我猜它在Linux中也工作得很好。
推荐文章
- 在Vim/Vi中,如何将光标移动到前一个单词的末尾?
- 如何在vim中自动删除尾随空格
- 为什么Vim使用~扩展名保存文件?
- 如何在Vim或Linux中将空格转换为制表符?
- 我如何使用vimdiff来解决git合并冲突?
- 在Vim中删除当前缓冲区的文件名/路径
- Git在终端提交时打开VIM,但无法返回终端
- 请参阅编辑器中的换行符和回车
- 如何在NERDTree中显示隐藏文件(以句点开始)?
- 如何复制一个选择到OS X剪贴板
- 如何删除(不削减)在Vim?
- Vim:在可视模式下快速选择文本块的方法
- 是否有vim命令来重新定位一个选项卡?
- MacVim和普通Vim有什么区别?
- 有什么方法可以在Vim中查看当前映射的键吗?