Синхронизировать монтажную панель между удаленным сеансом tmux и локальной монтажной панелью Mac OS

18

Настройка: я использую iTerm2 на MacOS для подключения к удаленному серверу. Удаленный сервер запускает tmux, в котором я открываю файлы и редактирую в сеансах vim.

Проблема: я не могу скопировать / вставить между удаленным сеансом tmux и локальным клиентом iTerm. Я могу использовать выбор alt / option + mouse в iTerm 2 для выделения текста, но это копирует несколько панелей vim / tmux - плохо.

Есть ли какое-нибудь элегантное решение для синхронизации выборок в панелях tmux между удаленным монтажным столом и локальным (монтажным столом MacOS)? Я видел пространство имен reattach-to-user-name , но я почти уверен, что оно не делает то, что я хочу.

Bhargav
источник
3
Это действительно проблема Tmux? Мне кажется, что у вас будет та же проблема в общем соединении только через ssh.
kejadlen
3
Это может быть не проблема tmux, но это проблема рабочего процесса. Я не могу быть единственным, у кого есть именно эта проблема - вот почему мне интересно, что другие люди делают, чтобы обойти это.
2012 г.

Ответы:

13

Поэтому, когда вы заходите на сервер по ssh, вы можете использовать обратное туннелирование, чтобы вы могли общаться с вашим компьютером OSX и отправлять ему команды pbcopy.

ssh -R 1234:localhost:22 remoteServer

Замените 1234на любой открытый порт удаленный сервер. Затем на удаленном сервере вы можете запустить:

tmux save-buffer - | ssh -p 1234 localhost pbcopy

Это должно подключиться обратно к OSX и отправить туда содержимое вашего буфера копирования tmux. Возможно, вы захотите использовать ssh-ключи, чтобы предотвратить ввод пароля на ваш компьютер с OSX.

Если это работает, то вы можете создать свои сочетания клавиш tmux.

bind C-c run "tmux save-buffer - | ssh -p 1234 localhost pbcopy"

Я должен отметить, что для этого вам нужно включить удаленный доступ в OSX.

Вторичный вариант:

Поскольку вы используете OSX, если вы также используете iTerm2, вы можете рассмотреть возможность установки http://code.google.com/p/iterm2/downloads/detail?name=tmux-for-iTerm2-20120203.tar.gz&can = 2 & q = на ваших серверах.

Это в основном пользовательский tmux, который поддерживает флаг "-C". Этот флаг передает окна и панели и все их разбиение на iTerm2.

папа
источник
2

Более простой метод

  1. Включить XQuartz для синхронизации буфера обмена
  2. Используйте переадресацию X11 при подключении к удаленному серверу
  3. Имейте привязку как в вашем tmux.conf: bind-key C-c run ‘tmux show-buffer | xsel -pbi'
    • где X буфер обмена по вашему выбору после трубы

Вы также можете сделать аналогичную привязку в vim, если хотите

скромный
источник
0

Благодаря ответу папы я попробовал tmux -Cподсказку.

  1. Вам не нужно ничего устанавливать, потому что текущая версия tmux поддерживает -Cфлаг.
  2. Используйте -CC, потому что -Cне всегда работает.

Так что с tmux -CC(или tmux -CC attach) tmux даже лучше, чем уже есть.

mamiu
источник