На машинах с X-сервером я использовал selection
буфер обмена для синхронизации копирования/вставки между GUI и терминальными программами. Теперь у меня есть сервер без X, где я хотел бы синхронизировать копирование/вставку между терминальными приложениями, например, zsh
и vim
и tmux
. Позже я надеюсь дополнительно синхронизировать этот буфер обмена с системным буфером обмена Mac, который я использую для SSH на сервере Linux.
Возможна ли такая установка? Конкретно,
Существует ли общий буфер обмена для Linux для синхронизации копирования/вставки между терминальными приложениями без запуска X11?
Есть ли аналогичный инструмент для
xsel
этогоxclip
?А еще лучше, есть ли подобный инструмент, который работает как с запущенным X-сервером, так и без него, позволяя мне использовать одну и ту же конфигурацию/dotfiles для обоих сценариев?
Наконец, и я признаю, что это отдельный вопрос, как можно синхронизировать этот буфер обмена с буфером обмена SSH-клиента?
решение1
Для терминальных приложений нет общего буфера обмена. У tmux, zsh и vim есть свой буфер обмена.
tmux имеет механизм отправки скопированного текста на внешний терминал с помощью escape-последовательности (опция set-clipboard
), а также для чтения буфера обмена ( refresh-client -l
). Эту функцию поддерживают только X-терминалы, и то не все.
tmux также поддерживает ту же последовательность escape (OSC 52), что позволяет приложениям внутри tmux читать последний буфер вставки (если set-clipboard
установлено значение on
). Однако, насколько мне известно, лишь немногие приложения, если таковые имеются, используют это.
tmux также позволяет сохранять буферы вставки в файл или в stdout с помощью save-buffer
команды и загружать их с помощью load-buffer
команды. Это, вероятно, проще в использовании, чем OSC 52.
Я ожидаю, что можно будет написать скрипты для zsh и vim, которые будут использовать ту или иную из этих функций для установки и извлечения их буфера обмена.
Так что да, вы можете что-то соорудить, запустив все внутри tmux, используя tmux для хранения буфера обмена и написав несколько скриптов для его получения и установки из vim, zsh и т. д., но я думаю, вам придется сделать это самостоятельно, поскольку готового решения не существует.