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

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

На машинах с 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 и т. д., но я думаю, вам придется сделать это самостоятельно, поскольку готового решения не существует.

Связанный контент