Vim + COPY + Mac 通过 SSH

85

我通过ssh访问服务器,在其中运行vim编辑文件。当我尝试使用y或"+y将文本从vim复制到我的Mac(Lion)本地编辑器时,它无法正常工作。我最后得到的是我上次在本地复制的文本。但如果我在vim中使用p,则可以正常工作。


1
你是在使用Terminal.app还是其他终端程序? - pb2q
你能把名称改成vim + COPY + mac over SSH吗? - ningsuhen
1
七年后...答案是创建~/.vimrc并添加一行代码:set clipboard=unnamed。这适用于在Mac终端中使用Debian 10。 - frozenjim
在服务器上不应该使用vim打开大文件,这会占用很多内存。如果你想复制一些东西,比如一些答案,只需使用cat和grep命令查找文件中所需内容,并从终端复制即可。 - Hi computer
18个回答

3

我经常在使用鼠标复制vim文本时使用一个技巧——如果行数稍微超出屏幕,可以通过最小化(Cmd + '-')文本来解决问题。 :) 最小化到无法用肉眼看到,但仍然可以一次性复制所有文本。


哇,这实际上非常实用。 - om-ha

2

或者,从终端中输入less [文件名]将其写入终端。然后通过在按住向下箭头键的同时使用鼠标进行选择。然后您可以选择整个内容。


谢谢。您的技巧适用于需要滚动的大量内容。不幸的是,它只能使用向下箭头键。无法使用 G 键(直到文件结尾)。 - anonymous

0

将内容复制到本地机器的最简单方法是通过鼠标选择,然后使用CMD + c进行复制。正如在另一个答案中所指出的那样,这有一些限制/缺点。因此,我寻找了替代方案,但在尝试了几个小时(不成功)来使X11转发工作之后,我想到了以下简单的解决方法(至少对于行号问题)以帮助鼠标复制。

将以下内容添加到您的.vimrc中,以便轻松切换行号以进行鼠标复制:

nnoremap L :set invnumber <CR>

你可以轻松将L更改为任何你想作为快捷键的按键。

0

只需使用MobaXterm。
我尝试了很多方法,但没有一种是简单的。所以我找到的唯一解决方案就是使用MobaXterm。您可以查看所有文件并以任何方式打开它们。


0

我本来想改进我的解决方案,但是现在我会分享它,因为它似乎与其他一些解决方案相当。

在Mac上使用iTerm2,通过ssh连接到机器,运行tmux,然后使用Vim进行编辑时,我在Mac上有一个垂直分割的iTerm2窗口,将其拉到最小化。

然后,当我想从Vim中复制文本时,我会点击这个小小的iTerm2窗口,然后回到Vim中突出显示并复制文本。这对于单行文本效果最佳。

如果有一个tmux垂直分割,突出显示Vim缓冲区中的多行文本将无法正确换行,并且将复制来自其他tmux窗口的文本,但除此之外,这对于复制我需要的90%非常好,而无需退出Vim,cat文件或执行其他操作。

我还有充足的水平窗口空间,使得小的iTerm2窗口不会占用太多空间。


0
我在我的macOS本地机器上找到了一个完美适用的解决方案,并且在远程服务器上的Ubuntu Linux上也能正常运行。

为macOS(本地机器)设置X11转发

1. 安装XQuartz

brew install --cask xquartz

检查XQuartz中是否启用了剪贴板同步 -> 首选项窗口 -> 剪贴板选项卡

2. 启用X11转发

有两种选项:

- 使用-X标志启动ssh连接:

ssh -X user@remotehost.com

-- 或者 --

- 设置 ssh 连接的默认设置。

如果文件不存在,请将以下行添加到 ~/.ssh/config 中:

ForwardX11 yes 

这相当于所有新的ssh连接的-X标志。 然后开始一个常规的ssh连接:
ssh user@remotehost.com

检查和调整Linux(远程服务器)的剪贴板访问权限

1. 验证X11转发

按照上述说明通过ssh登录到远程机器。 检查DISPLAY环境变量:

echo $DISPLAY

应该返回类似于localhost:10.0的回复。
2. 验证剪贴板集成
如果尚未安装,请在Linux上安装xclip
sudo apt install xclip

将测试文本复制到剪贴板的命令如下:
echo "test" | xclip -sel clip

将文本粘贴到 macOS 上,使用 cmd+V 并检查是否有效。

3. 调整 vim 的剪贴板:

检查 vim 是否支持适用于 X11 转发的剪贴板:

vim --version | grep clipboard

它应该启用+clipboard功能。

如果没有启用,请运行:

sudo apt install vim-gtk

将以下行添加到~/.vimrc中,如果文件不存在则创建该文件:
set clipboard=unnamedplus

从vim中使用标准方法复制文本:`v <用箭头键选择> y`,然后使用macOS的常规`cmd+V`快捷键粘贴结果。
现在你在vim中通过ssh复制的内容可以轻松粘贴到任何macOS应用程序中。

-1

-3

尝试使用另一个剪贴板寄存器 - "*y


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接