我有2个打开的窗口,ssh会话到同一个远程linux盒子(putty)。 Console vim编辑器在两个窗口中运行。我想在一个窗口中取出文本并将其粘贴到另一个窗口中。 我不喜欢使用鼠标复制/粘贴终端屏幕。在vim中是否有任何功能可以做到这一点?
答案 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,反之亦然,前提是:
ssh
连接转发X11请求+clipboard
和+xterm_clipboard
vimrc
的两台计算机上都有类似的内容:set clipboard=unnamedplus,autoselect
如果您尝试从运行X的同一台计算机上的一个Vim实例粘贴到另一个Vim实例,或者在运行Windows的同一台机器上(由于各种原因)粘贴它,也会有效。
它在Linux控制台中不起作用。当你从Windows跨越到X时,我也不知道它是否仍然有用。