Поддержка 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
команда для этого.)