Дерните в систему: неовим внутри tmux внутри ssh - PullRequest
1 голос
/ 04 апреля 2020

Я нашел подобный вопрос здесь, но без рабочего ответа для меня: Системный буфер Vim в TMUX в S SH сеанс

Я использую терминал Gnome для запуска как sh сеанс с пересылкой X в Debian 10. Если я запускаю neovim и копирую (yank) текст, то этот текст копируется в буфер обмена Gnome, и все в порядке.

Это содержимое .ssh / config:

Host nuc
    ForwardX11 yes

У меня есть это в .vimr c:

set clipboard^=unnamed,unnamedplus

Но когда я запускаю neovim внутри tmux, тогда это не работает.
У меня есть tmux с плагином tmux-yank, и это работает, потому что когда я копирую из neovim внутри tmux и затем выхожу из tmux, я вижу выделенный текст с помощью xsel -o

Как мне перенаправить выделение в системный буфер обмена?

1 Ответ

2 голосов
/ 04 апреля 2020

Поддержка Vim и NeoVim для буфера обмена использует соединение с сервером X11. Адрес для подключения доступен из переменной среды $DISPLAY.

Проблема с X11 и терминальными мультиплексорами или менеджерами сеансов, такими как tmux или screen, заключается в том, что среда оболочек и программ, работающих внутри них, будет среда, когда сеанс tmux был впервые создан. Это включает в себя переменную $DISPLAY. Таким образом, это означает, что vim внутри tmux будет пытаться использовать адрес сервера X11, когда был создан сеанс tmux, а не тот, с которого вы только что подключились.

Грязный, но простой обходной путь - обновить * Переменная $DISPLAY при повторном подключении к tmux, чтобы обеспечить подключение к нужному серверу X11. Обратите внимание, что вам нужно сделать это для каждой оболочки или программы, запущенной в tmux, поскольку у каждой из них будет своя несинхронная c копия переменной среды.

Работает что-то вроде следующего:

$ ssh -X nuc
nuc$ echo $DISPLAY
:1234.1
nuc$ tmux attach
tmux$ export DISPLAY=:1234.1
tmux$ vim

Это должно заставить работать буфер обмена для этого конкретного Vim .

Как уже упоминалось, если у вас много tmux windows и областей Вам нужно обновить $DISPLAY на всех из них. Кроме того, если вы создаете новые windows или панели, они также будут начинаться с неправильной настройки $DISPLAY (хотя вы также можете обновить значение $DISPLAY в среде tmux, чтобы исправить новые windows и панели, см. Tmux's set-environment команда для этого.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...