在远程服务器上使用Neovim时,其中一个不便就是剪贴板。在本地环境中,仅靠Neovim的设置和xclip
即可轻松解决,但在通过SSH进行远程工作时,将复制的内容放入本地PC的剪贴板中就比较困难。经过多次尝试,我找到了一个简洁的解决方案,来介绍给大家。
环境与准备事项
-
远程服务器: 基于Ubuntu的服务器
-
本地PC: 基于Ubuntu的GUI环境
-
Neovim已安装完成 (基于init.lua的设置进行说明)
步骤1: 在远程服务器上安装xclip
首先在远程服务器上通过以下命令安装xclip
。
sudo apt install xclip
该包是Neovim与系统剪贴板进行交互所必需的。
步骤2: 设置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)的内容发送到本地剪贴板。
步骤3: 设置SSH服务器
需要在远程服务器的SSH守护程序设置中启用X11Forwarding选项,OSC52才能正常工作。
打开/etc/ssh/sshd_config
文件,并检查或添加以下设置。
AllowTcpForwarding yes
X11Forwarding yes
更改后重启SSH守护程序。
sudo systemctl restart sshd
步骤4: 设置本地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
命令即可。
步骤5: 设置Neovim剪贴板选项
最后,设置Neovim使用剪贴板。在init.lua
文件中添加。
vim.o.clipboard = 'unnamedplus'
使用方法
现在所有设置都完成了。在Neovim中复制内容时,进入视觉模式(v
)选择区域后,按y
键,复制的内容将自动保存到本地PC的剪贴板中。
现在,可以直接将远程服务器Neovim中复制的内容粘贴到本地的浏览器或记事本中。
一开始觉得过程有些复杂,但设置好之后非常方便。如果您经常使用远程开发环境,推荐您一定尝试进行设置。
目前没有评论。