Одна из неудобств при использовании Neovim на удалённом сервере заключалась в буфере обмена. В локальной среде это легко решается настройками Neovim и xclip
, но при работе на удалённом сервере через SSH сложно вставить скопированный контент в локальный буфер обмена. Я хочу представить вам чистое решение, которое я нашёл после множества проб и ошибок.
Окружение и требования
-
Удалённый сервер: сервер на базе Ubuntu
-
Локальный ПК: графическая среда на базе Ubuntu
-
Установлен 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
},
Эта настройка автоматически передаёт скопированный (yanked) контент из Neovim через протокол OSC52 в локальный буфер обмена.
Шаг 3: Настройка SSH-сервера
В настройках демона SSH удалённого сервера необходимо активировать опцию X11Forwarding, чтобы OSC52 работал корректно.
Откройте файл /etc/ssh/sshd_config
и проверьте или добавьте следующие настройки:
AllowTcpForwarding yes
X11Forwarding yes
После внесения изменений перезапустите демон SSH.
sudo systemctl restart sshd
Шаг 4: Настройка локального SSH-клиента
При соединении с сервером через SSH необходимо активировать X11 Forwarding. Для этого добавьте в файл настроек 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
, чтобы автоматически сохранить скопированный контент в локальном буфере обмена.
Теперь вы можете вставить скопированный контент из Neovim на удалённом сервере непосредственно в браузер или блокнот на вашем локальном ПК.
Процесс может показаться сложным в начале, но после первой настройки это становится очень удобным. Если вы часто работаете в удалённой среде разработчика, я рекомендую обязательно настроить это.
Комментариев нет.