Tmux: как скопировать текст между вложенным сеансом s sh и локальным компьютером - PullRequest
0 голосов
/ 30 марта 2020

У меня есть локальный сеанс tmux, который подключается к нескольким удаленным сеансам tmux.

Я не могу понять, как скопировать текст из этих удаленных сеансов tmux и локального компьютера.

Таинственным образом открывается удаленный сеанс s sh (не вложенный в локальный tmux) работает.

В основном, если я запускаю сеанс s sh и подключаюсь к удаленному tmux, все работает нормально (копирование / вставка). С другой стороны, если я запускаю локальный tmux, затем подключаю s sh к удаленной системе и подключаюсь к ее сеансу tmux, я не могу скопировать этот удаленный сеанс на локальную машину (я нахожусь на Catalina / MacOS). Это кажется мне очень странным.

1 Ответ

0 голосов
/ 30 марта 2020

Я предполагаю, что вы имеете в виду копирование текста в режиме копирования в tmux?

tmux может установить буфер обмена хоста, используя escape-последовательность OS C 52, но он должен знать, что внешний терминал поддерживает это, и внешний терминал должен быть настроен для его разрешения.

Имея только один tmux, вы, вероятно, имеете TERM=xterm external tmux и терминал, который позволяет это по умолчанию, поэтому он будет работать без каких-либо изменений конфигурации.

Однако, с двумя tmux, внутренний tmux будет иметь TERM=screen или TERM=tmux и внешний терминал (внешний tmux), который не позволяет этого по умолчанию.

Так что, чтобы он работал, вы нужно сделать две вещи:

1) Сконфигурировать внешний tmux, чтобы позволить программам установки внутри буфера обмена устанавливать с set -g set-clipboard on (не забудьте полностью перезапустить tmux после изменения .tmux.conf, или выполните это также из командной строки).

2) Сконфигурируйте внутренний tmux для установки буфера обмена, когда внешний терминал также является tmux, добавив запись Ms в терминал-оверри des (измените screen* на tmux*, если у вас есть TERM=tmux внутри tmux): set -as terminal-overrides ',screen*:Ms=\\E]52;%p1%s;%p2%s\\007'. После этого вам нужно будет отсоединить и снова подключить tmux, если вы не перезапустите его.

Если внутренний tmux очень старый, вам также может понадобиться сделать для него set -g set-clipboard on.

...