如何跨终端复制?


11

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

无论如何,不​​使用鼠标就能执行它吗?像"+yy在A中,当切换到B, o<c-r>+?我徒劳地探索了几种组合。我搜索了“跨终端复制”,但一无所获。

用户@statox建议使用可视化模式,即,一个溶液v$"+y在A中,当切换到B, o<c-r>+

有没有简单的方法可以在不进入v模式的情况下复制A中的文本?公认进入v模式不会涉及太多击键,只是想知道是否有更好的方法。例如。如果光标在一行的中间,则yy复制整行(以注册"),同时0v$y用额外的击键进行相同的操作。

或者,我的问题可以降低到是否有什么办法比减少击键0v$"+y副本,这样我可以用<alt-tab>o<c-r>+粘贴。


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

您无需进入视觉模式即可拉动某些东西。您可以跟随y运动(:help motion.txt)或对象(:help object-select)。如果您经常在Vim实例之间拖动和粘贴,则可能会发现该设置clipboard包含unnamedunnamedplus有用。请参阅:help 'clipboard'。然后在实例之间进行复制就可以了。
garyjohn

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

1
0v$与相同V。它很容易使一个映射"+y:nnoremap <Leader>y "+y。因此将其减少为V\y
马丁·图尔诺伊

@Carpetsmoker您的解决方案很好。如果您将其粘贴到答案区域,我想将其作为最佳解决方案。似乎没有键映射,我可以为我的问题做的最好的复制是V"+y4次击键。
user3813057 2015年

Answers:


9

您可以通过以下方式检查Vim是否带有剪贴板支持:

:echo has('clipboard')

如果输出为1,则以下内容应足以实现您的目标:

"*y    in source Vim
"*p    in destination Vim

通过将剪贴板寄存器和默认寄存器与此设置同步,可以使所有操作更加无缝vimrc

set clipboard^=unnamed

如果输出:echo has('clipboard')0,请考虑安装适当的Vim,例如vim-gtkvim-gnome(软件包名称可能因发行版而异)。


1

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

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

请参阅此处的第二个条目。


1

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

"+y    To yank/copy from a vim-terminal
"+p    To paste in destination vim-terminal

"*y    To yank/copy from a vim-terminal
"*p    To paste in destination vim-terminal

通过执行这些命令,你是ÿ安庆/复制/在寄存器存储选择的内容,和p asting他们目的地VIM-终端。这两个特殊的寄存器+*系统范围的剪贴板共享(因此与许多其他程序共享,例如Web浏览器,gedit等)。寄存器+与复制/粘贴缓冲区*关联,并且与选择缓冲区关联(选择缓冲区(通过在例如Ubuntu上的文本字段上单击鼠标中键插入选择的副本)),并且可以使用ctrl + vctrl + shift + v在gnome-terminal上)粘贴。


1

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

dnf install vim-X11

vim-X11带有剪贴板支持-也许在其他发行版中也是如此。

2)在我的.bashrc中设置一个别名

alias vim="vimx"

3)在.vimrc中:

set clipboard=unnamedplus

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


0

如果使用的是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)将vim以 插入模式i

5)使用command+ 插入剪贴板中的文本V(在Mac上从剪贴板粘贴)

6)享受您余下的一天!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.