Synchroniser la table de montage entre la session tmux distante et la table de montage locale de Mac OS

18

Configuration: j'utilise iTerm2 sur MacOS pour me connecter à un serveur distant. Le serveur distant exécute tmux, dans lequel j'ouvre des fichiers et les modifie dans des sessions vim.

Problème: je ne peux pas copier / coller entre la session tmux distante et le client iTerm local. Je peux utiliser la sélection alt / option + souris d'iTerm 2 pour sélectionner du texte, mais cela copie sur plusieurs volets vim / volets tmux - mauvais.

Existe-t-il une solution élégante pour synchroniser les sélections dans les volets tmux entre la table de montage distante et la table locale (table de montage MacOS)? J'ai vu rattacher l'espace de noms à l'utilisateur , mais je suis pratiquement certain qu'il ne fait pas ce que je veux.

bhargav
la source
3
Est-ce vraiment un problème tmux? Il me semble que vous auriez le même problème en général en vous connectant via ssh seul.
kejadlen du
3
Ce n'est peut-être pas un problème tmux, mais c'est un problème de workflow. Je ne peux pas être le seul à avoir exactement ce problème - c'est pourquoi je me demande ce que font les autres pour le contourner.
bhargav

Réponses:

13

Ainsi, lorsque vous vous connectez au serveur, vous pouvez utiliser la tunnellisation inverse afin de pouvoir parler à votre machine OSX pour lui envoyer des commandes pbcopy.

ssh -R 1234:localhost:22 remoteServer

Remplacez 1234par n'importe quel port ouvert le serveur distant. Ensuite, sur le serveur distant, vous pouvez ensuite exécuter:

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

Cela devrait se reconnecter à OSX et lui envoyer le contenu de votre tampon de copie tmux. Vous souhaiterez peut-être utiliser les touches ssh pour éviter de taper votre mot de passe sur votre machine OSX.

Si cela fonctionne, vous pouvez ensuite créer vos raccourcis clavier tmux.

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

Je dois noter que pour que cela fonctionne, vous devrez activer le partage à distance dans OSX.

Option secondaire:

Puisque vous utilisez OSX, si vous utilisez également iTerm2, vous pouvez envisager d'installer http://code.google.com/p/iterm2/downloads/detail?name=tmux-for-iTerm2-20120203.tar.gz&can = 2 & q = sur vos serveurs.

C'est fondamentalement un tmux personnalisé qui prend en charge le drapeau "-C". Ce drapeau remet les fenêtres, les volets et tout leur fractionnement à iTerm2.

le pape
la source
2

Une méthode plus simple

  1. Activer XQuartz pour synchroniser le presse-papiers
  2. Utiliser le transfert X11 lorsque vous vous connectez au serveur distant
  3. Ayez une liaison comme dans votre tmux.conf: bind-key C-c run ‘tmux show-buffer | xsel -pbi'
    • où le presse-papiers X de votre choix se trouve après le tuyau

Vous pouvez également effectuer une reliure similaire dans vim si vous le souhaitez.

sage
la source
0

Grâce à la réponse du pape, j'ai essayé l' tmux -Cindice.

  1. Vous n'avez rien à installer, car la version actuelle de tmux prend en charge l' -Cindicateur.
  2. Utilisez -CC, car -Cne fonctionne pas toujours.

Donc, avec tmux -CC(ou tmux -CC attach) tmux, c'est encore mieux qu'il ne l'est déjà.

mamiu
la source