Одна из неудобств при использовании Neovim на удалённом сервере заключалась в буфере обмена. В локальной среде это легко решается настройками Neovim и xclip, но при работе на удалённом сервере через SSH сложно вставить скопированный контент в локальный буфер обмена. Я хочу представить вам чистое решение, которое я нашёл после множества проб и ошибок.

Схема интеграции буфера обмена Neovim с использованием OSC52


Окружение и требования

  • Удалённый сервер: сервер на базе 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 на удалённом сервере непосредственно в браузер или блокнот на вашем локальном ПК.


Процесс может показаться сложным в начале, но после первой настройки это становится очень удобным. Если вы часто работаете в удалённой среде разработчика, я рекомендую обязательно настроить это.