在两个控制台vim实例之间复制/粘贴

时间:2015-05-15 16:01:06

标签: linux vim

我有2个打开的窗口,ssh会话到同一个远程linux盒子(putty)。 Console vim编辑器在两个窗口中运行。我想在一个窗口中取出文本并将其粘贴到另一个窗口中。 我不喜欢使用鼠标复制/粘贴终端屏幕。在vim中是否有任何功能可以做到这一点?

3 个答案:

答案 0 :(得分:2)

如果两个vim会话在同一系统上运行,您可以在一个会话中将一部分缓冲区写入文件(:w tmp),然后将文件读入另一个会话中的缓冲区(:r tmp)。如果他们在两个不同的目录中运行,您需要指定一个完整的路径名。

一个简单的:w tmp将写入缓冲区的全部内容。要只编写子集,可以指定一系列行。您可以使用ma在区域的开头设置标记,并mb在结尾处设置另一个标记,然后

:'a,'bw tmp

将该区域写入文件。或者您可以在开头设置标记(例如,mx),移到最后,然后:

:'x,.w tmp

或者您可以指定行号;有一个很多选项。它不像直接复制粘贴那么方便,但它确实有效。

另一种选择:由于两个vim会话都在同一系统上运行,因此您可以使用选项卡或窗口为这两个文件运行单个vim会话;然后,您可以直接在它们之间进行复制和粘贴,而无需离开vim

答案 1 :(得分:1)

最简单的方法是从终端复制文本,因此请使用鼠标或tmux之类的东西,这样您只需使用键盘即可从终端中复制任意文本。

可能有一种方法可以通过SSH复制:Getting Items on the Local Clipboard from a Remote SSH Session

但我认为你很难将它与Vim联系起来。我个人推荐本地机器上的tmux,ssh里面,然后用tmux复制文本。

答案 2 :(得分:1)

它是通过系统的剪贴板自动完成的。因此,如果您从机器A到机器B ssh,您可以从A上运行的Vim复制并粘贴到B上运行的Vim,反之亦然,前提是:

  • 计算机A正在运行X服务器
  • 您的ssh连接转发X11请求
  • 两台计算机上的Vims都使用+clipboard+xterm_clipboard
  • 进行编译
  • 您在vimrc的两台计算机上都有类似的内容:set clipboard=unnamedplus,autoselect

如果您尝试从运行X的同一台计算机上的一个Vim实例粘贴到另一个Vim实例,或者在运行Windows的同一台机器上(由于各种原因)粘贴它,也会有效。

它在Linux控制台中不起作用。当你从Windows跨越到X时,我也不知道它是否仍然有用。