在远程服务器上使用 Neovim 时,令人烦恼的事情之一就是剪贴板。在本地环境中,借助 Neovim 的设置和 xclip
可以轻松解决,但在通过 SSH 在远程服务器上工作时,复制的内容很难放入本地 PC 的剪贴板。经过多次尝试,我找到了一种简洁的解决方案。
环境和准备事项
-
远程服务器:基于 Ubuntu 的服务器
-
本地 PC:基于 Ubuntu 的 GUI 环境
-
已完成 Neovim 安装(根据 init.lua 设置进行说明)
第一步:在远程服务器上安装 xclip
首先,在远程服务器上使用以下命令安装 xclip
。
sudo apt install xclip
该软件包是 Neovim 与系统剪贴板通信所必需的。
第二步:配置 OSC52 协议
OSC52 是一种通过 SSH 连接直接传输内容到本地剪贴板的协议。为在 Neovim 中使用,需要安装插件。
- 在 Neovim 配置文件 (
init.lua
) 中添加:
{
'ojroques/nvim-osc52',
config = function()
require('osc52').setup()
local function copy()
if vim.v.event.operator == 'y' and vim.v.event.regname == '+' then
require('osc52').copy_register('+')
end
end
vim.api.nvim_create_autocmd('TextYankPost', {callback = copy})
end
},
此设置会通过 OSC52 协议将 Neovim 中复制(yank)的内容自动发送到本地剪贴板。
第三步:配置 SSH 服务器
必须在远程服务器的 SSH 守护进程设置中启用 X11Forwarding 选项,OSC52 才能正常工作。
打开 /etc/ssh/sshd_config
文件,检查或添加以下设置。
AllowTcpForwarding yes
X11Forwarding yes
更改后重启 SSH 守护进程。
sudo systemctl restart sshd
第四步:配置本地 SSH 客户端
当本地 PC 通过 SSH 连接到服务器时,必须启用 X11 转发。为此,在 SSH 配置文件中进行添加。
在 ~/.ssh/config
文件中:
Host myserver
HostName server-address.com
User myuser
ForwardX11 yes
Port 2222
IdentityFile ~/.ssh/id_rsa
现在,连接 SSH 时只需使用 ssh myserver
命令即可。
第五步:配置 Neovim 剪贴板选项
最后,设置 Neovim 使用剪贴板。在 init.lua
文件中添加。
vim.o.clipboard = 'unnamedplus'
使用方法
现在所有设置均已完成。在 Neovim 中复制内容时,只需在视觉模式(v
)下选择区域,然后按下 y
键,复制的内容将自动保存到本地 PC 的剪贴板中。
现在可以将从远程服务器上的 Neovim 复制的内容直接粘贴到本地的浏览器或记事本中。
起初感觉过程复杂,但设置好后会非常方便。如果您经常使用远程开发环境,建议一定要设置一下。
目前沒有評論。