我正在使用Linux系统。在两个终端中打开两个vim。现在我想将文本从A复制到B。一种方法是在A中选择文本,使用鼠标复制,然后切换到B,在插入模式下,命令<c-r>+将粘贴文本。

是否可以不使用鼠标来执行?像A中的"+yy,当切换到B时,我徒劳地探索了几种组合。然后我搜索了“跨终端复制”,但是什么也没找到。

用户@statox建议使用可视模式的一种解决方案,即在切换到B时,在A中使用o<c-r>+。 />有没有简单的方法可以在不进入v模式的情况下在A中复制文本?公认进入v模式不会涉及太多击键,只是想知道是否有更好的方法。例如。如果光标位于一行的中间,则v$"+y复制整行(以注册o<c-r>+),而yy则用额外的击键来做同样的事情。或者,我的问题可以简化为可以用比"更少的键击来进行复制,以便可以使用0v$y进行粘贴。

评论

你到底是什么问题?您似乎有解决方案:以可视模式选择文本(为什么要使用鼠标?),将文本以“ + y”放置在剪贴板寄存器中,在另一个vim实例中,以“ + p”放置剪贴板。还是重复?

您无需进入视觉模式即可拉动某些东西。您可以在y之后加上运动(:help motion.txt)或对象(:help object-select)。如果您经常在Vim实例之间拖动和粘贴,则可能会发现将剪贴板设置为包括未命名或未命名加上非常有用。参见:help'剪贴板'。然后在实例之间复制就可以了。

我的评论的重点不是可视模式,实际上我很难理解您的问题:起初我以为是将一些文本从一个终端复制到另一个终端的事实,现在看来,使用的击键次数与可以拉入剪贴板寄存器。如果是第二种情况,那么加里·约翰(Garyjohn)的评论是有意义的。

0v $与V相同。很容易为“ + y::nnoremap y” + y建立映射。从而将其减小为V \ y。

@Carpetsmoker您的解决方案很好。如果您将其粘贴到答案区域,我想将其作为最佳解决方案。似乎没有键映射,我可以为我的问题中的副本做的最好的事情是V“ + y,四个键击。

#1 楼

您可以通过以下方法检查Vim是否带有剪贴板支持: br />
:echo has('clipboard')


通过将剪贴板寄存器和默认寄存器与1中的此设置同步,可以使所有操作更加无缝:
如果vimrc的输出是:echo has('clipboard'),请考虑安装适当的Vim,例如0vim-gtk(软件包名称可能因发行版而异)。

#2 楼

我认为您已经在问题中提到的解决方案是正确的。如果要减少击键次数,可以简单地创建一个地图,例如

vmap <leader>y "+y
vmap <leader>d "+d
nmap <leader>p "+p
nmap <leader>P "+P
vmap <leader>p "+p
vmap <leader>P "+P


在此处查看第二个条目。

#3 楼

要扩展@romainl的答案(具有剪贴板支持),可以使用与系统范围剪贴板共享的寄存器。

/将选定的内容存储在寄存器中,并将其粘贴到目标Vim终端。这两个特殊寄存器+*与系统范围的剪贴板共享(因此也共享许多其他程序,例如Web浏览器,gedit等)。寄存器+与复制/粘贴缓冲区关联,而*与选择缓冲区(例如在Ubuntu中的文本字段上单击鼠标中键插入选择的副本)关联,并且可以使用ctrl + v(gnome-terminal上的ctrl + shift + v)进行粘贴)。

#4 楼

1)在Fedora上,我使用以下设置:

dnf install vim-X11


vim-X11带有剪贴板支持-也许在其他发行版中类似。 > 2)在我的.bashrc中设置别名

alias vim="vimx"


3)在.vimrc中:

set clipboard=unnamedplus


现在,Vim中的常规键进入系统剪贴板,并且vim外部的每个Ctrl-C都可以粘贴到vim中。

#5 楼

如果使用的是Mac(OSX),则可以安装bpcopy(使用brew install pbcopy -有关更多详细信息,请参见http://brew.sh/)。然后在不触摸鼠标的情况下运行以下命令(直接命令行):

示例:

1)在TERMINAL#001中:

cat /tmp/stuff.txt | pbcopy


2)您可以使用OSX终端应用程序中的内置热键切换到#002终端(无需使用鼠标):command + i

3)在TERMINAL#中002:在vim中打开新文件

vi newfile


4)使用i

将vim置于插入模式5)从剪贴板插入文本使用命令+ V(在Mac上从剪贴板粘贴)

6)祝您玩得开心!