Скопировать в буфер обмена клиента после выбора мыши с помощью tmux в удаленном сеансе

Это мой .tmux.conf

setw -g mouse on
set-option -s set-clipboard off
bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -selection clipboard -i"

Хорошо работает на Linux-машине локально. Выбор мыши автоматически копируется в системный буфер обмена.

Однако в удаленном сеансе (iTerm + Mac) это не работает. Текст не копируется в системный буфер обмена клиента. По-видимому, мне нужно использовать OSC 52. Вот помощник скрипт.

Вы можете использовать сценарий так:

echo "whatever text" | osc52.sh

Теперь «любой текст» копируется в системный буфер обмена клиента.

Однако я не могу заставить скрипт работать с выбором мыши tmux:

setw -g mouse on
set-option -s set-clipboard off
osc52="~/osc52.sh"
bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "$osc52"

Любая помощь приветствуется. Спасибо!


person Shawn    schedule 13.03.2020    source источник


Ответы (1)


Это не способ использования OSC 52. Вы не можете отправить его из сценария - весь вывод команд, запускаемых из канала копирования, игнорируется.

Вместо этого вам нужно настроить сам tmux для этого. Попробуйте следующее:

1) Удалите команду bind-key и просто оставьте MouseDragEnd1Pane по умолчанию, который является выбором копирования.

2) Измените set-clipboard на set-clipboard on. Не забудьте полностью перезапустить tmux после изменения .tmux.conf.

3) Убедитесь, что TERM вне tmux имеет значение xterm или xterm-256color, чтобы tmux добавил возможность Ms из переопределений терминала по умолчанию. Это должно быть значение по умолчанию в iTerm2. Убедитесь, что вы не удаляете его из переопределений терминала в .tmux.conf.

4) В iTerm2, я думаю, вам нужно включить эту опцию «Приложения в терминале могут обращаться к буферу обмена»:

введите описание изображения здесь

person Nicholas Marriott    schedule 13.03.2020
comment
Не работает. Это мой .tmux.conf: setw -g mouse on set-option -s set-clipboard on - person Shawn; 13.03.2020
comment
Вы полностью перезапустили tmux после изменения .tmux.conf? Что echo $TERM говорит за пределами tmux? Что tmux show -s terminal-overrides говорит внутри tmux? - person Nicholas Marriott; 15.03.2020
comment
xterm-256color и terminal-overrides [0] xterm *: XT: Ms = \\ E] 52;% p1% s;% p2% s \\ 007: Cs = \\ E] 12;% p1% s \\ 007: Cr = \\ E] 112 \\ 007: Ss = \\ E [% p1% dq: Se = \\ E [2 q terminal-overrides [1] screen *: XT - person Shawn; 17.03.2020
comment
Это должно сработать, возможно, вам нужно изменить что-то еще в iTerm2. - person Nicholas Marriott; 17.03.2020