Comment copier à partir de tmux courant dans putty vers windows clipbard
ENV: j'exécute tmux en putty, sur un ordinateur portable windows 7. Je travaille sur des systèmes SSH à linux.
je dois résoudre deux pépins avec tmux, avant de l'utiliser pour tous mes besoins.
je dois copier du texte sur le bloc-notes windows à partir de vim ou du terminal tmux. J'ai activé le support de la souris pour vim et putty.
j'ai essayé
"*y
et"+y
mais les deux ne fonctionne pas. Si j'utilise la capacité de putty pour copier alors il copie le contenu des grilles adjacentes.je dois copier du contenu d'un fichier vim dans un volet vers un fichier VIM ouvert dans un autre volet. Est-il vim tour de ce. Je ne veux pas utiliser
<C-b>[
moyen de le faire.
le problème 1 me hante davantage, parce qu'il y a un w/A pour le problème 2.
5 réponses
PuTTY est juste un émulateur de terminal; le Vim registres *
et +
sont préoccupés par la sélection X et le bloc-notes; il n'y a pas de chevauchement.
PuTTY vous permet seulement de copier le contenu du terminal sélectionné dans le presse-papiers Windows; lorsque vous exécutez tmux, qui inclura inévitablement la disposition de la fenêtre.
vous devez passer de PuTTY à quelque chose qui permet une réelle intégration, comme le Cygwin XWIN server, qui est un vrai X Serveur qui intègre le bloc-notes X avec le bloc-notes Windows. Au lieu d'entrer dans la session PuTTY, vous avez ssh -X
dans votre serveur, et lancer Vim dans un terminal Linux, ou gvim directement. Ensuite, extraire à l'aide de "+y
fonctionne comme prévu.
alternativement, si vous voulez continuer à utiliser PuTTY, vous devez utiliser une solution de contournement, comme :write
transférer la sélection à un fichier local, et le transférer à Windows via scp
, par exemple.
j'utilise putty v0.62 et tmux v1.8.
config tmux: setw-G mode-mouse on
je veux copier du texte de tmux vers le presse-papiers système, j'appuie et tiens MAJ et je sélectionne le texte par la souris, puis je clique sur le bouton gauche de la souris.
je veux coller du texte dans tmux, appuyez sur MAJ et cliquez sur le bouton droit de la souris.
c'est absolument possible. Toutes les lignes de configuration ci-dessous ont été copiées à partir de machines dans différents panneaux de tmux vers ma machine Windows. Oui, je putty dans une machine et tmux et ssh de là à d'autres et peut déplacer mes yanks vim à n'importe quelle machine, y compris mon navigateur Windows.
j'exécute un serveur X sur Windows (il n'est pas nécessaire D'être sur Windows, mais vous en avez besoin quelque part).
ingrédients Essentiels:
- mastic 0.62 (sur Windows)
- tmux 1.8 (sur une machine Linux)
- xclip (sur les machines Linux)
- MobaXterm (sur Windows pour leur serveur x)
votre configuration réseau peut différer un peu, surtout sur la configuration d'affichage du serveur X, mais voici:
tmux
# allow mouse to select panes
setw -g mode-mouse on
set-option -g mouse-select-pane on
# allow yank into system clipboard
#bind C-y run "tmux save-buffer - | xclip -i"
bind C-y run-shell -b "tmux show-buffer | xclip -selection clipboard -i"
# move x clipboard into tmux paste buffer
bind C-p run-shell -b "xclip -o -selection clipboard | tmux load-buffer - ; tmux paste-buffer"
vim
" get some autoselect interaction with the system clipboard
set guioptions=aA
MobaXterm
je garde ceci en marche mais je n'ai jamais à lancer tmux dans un interpréteur de commandes xterm. Assurez-vous que le presse-papiers partagé est sélectionné dans les paramètres X11. Je suppose que xming devrait fonctionner, mais les paramètres pour mes autres besoins ne semblait fonctionner. MobaXterm a d'autres goodies que j'aime de toute façon (navigateurs de fichiers, etc.).
je suppose que je pourrais lancer la session ssh avec tmux dans MobaXterm mais je préférez le mastic de fenêtre où j'ai ma palette de couleurs solarisées.
mastic
ssh à la machine avec tmux. A ce point, j'ai mis le DISPLAY
variable d'environnement et mettez-la dans un fichier env qui provient de bash. De cette façon, chaque fenêtre créée, pour l'avoir défini. Le réglage sur d'autres machines que je saute à partir de la machine tmux est un exercice entièrement séparé.
dans n'importe quelle machine qui partagera le presse-papiers, assurez-vous d'avoir le bon $DISPLAY
définir. Vous devriez être en mesure d'exécuter xeyes
et de le voir sur votre machine locale.
tout le monde partagera le bloc-notes. vim copiera sur le bloc-notes quand vous yankerez. Pour coller dans un autre volet tmux, utilisez la touche CTRL-p (ctrl-a CTRL-p pour moi).
Si ça ne fonctionne pas, vous pouvez toujours essayer xclip -o -selection clipboard
pour voir ce qui doit coller. vous pourrez également déplacer n'importe quel texte" tmux selected " (souris ou bind-key [
) au bloc-notes (et ainsi à une fenêtre windows régulière) avec bind-key ctrl-y
(i.e. Yank tmux).
avec un peu de ruse, il est possible de récupérer le tampon tmux par PuTTY et sur le client. J'ai réalisé cela en utilisant les codes d'échappement ANSI pour le port "AUX" (imprimante série).
Voici juste une implémentation de cette méthode de transfert:
1) côté serveur tmux.conf
, ajouter:
# Send the tmux copy buffer to a file. The file is read for ANSI printing by "t" alias in .bashrc
bind -t vi-copy y copy-pipe 'cat > ~/.tmux-buffer'
2) côté serveur .bashrc
, ajouter:
t() {
# Configure a PuTTY profile to send "t" as the "Remote command". This
# function will automatically reattach to an existing tmux session if one
# exists, or start a new one. This function also repeatedly sends our
# homemade tmux clipboard back to the PuTTY client in the form of an ANSI
# printer escape sequence. The contents of the homemade clipboard are
# populated by `bind -t vi-copy y copy-pipe 'cat > ~/.tmux-buffer'` in
# tmux.conf. It is expected that the PuTTY client will be configured to
# print to a "Microsoft XPS Document Writer" which saves the printer output
# to a file. The file is subsequently read by an AutoHotkey macro, and the
# contents are made available for paste.
[[ "$TERM" == "xterm" ]] || return 0 # This prevents recursive runs, in case t() is called after tmux is started.
{ while :; do tput mc5; cat ~/.tmux-buffer; tput mc4; sleep 5; done } &
tmux attach || tmux
}
3) côté client (Microsoft Windows), créer de nouveaux imprimante:
- Ajouter une Imprimante
- Créer un nouveau port > Port
- Entrez un nom de port > "
PuTTY_Printer_File
" - Driver > Microsoft XPS Document Writer
- nom de l'Imprimante > "
PuTTY Printer
" - optionnel: imprimer une page test et s'assurer qu'elle apparaît dans le contenu de file @ "
%USERPROFILE%\Documents\PuTTY_Printer_File
"
4) dans la configuration de PuTTY côté client:
- Terminal de paramétrage > "imprimante pour envoyer une imprimante ANSI sortie:" nouvellement créés imprimante nommée "
PuTTY Printer
" - Set Connection > SSH > "commande à Distance:""
t
" (faisant référence au .bashrc fonction ci-dessus)
a ce point vous pouvez envoyer le contenu du tampon tmux à votre client PuTTY en mettant en surbrillance du texte en mode copie de tmux, et en appuyant sur y
. Le texte sélectionné sera fin dans %USERPROFILE%\Documents\PuTTY_Printer_File
retour sur le client. Si vous souhaitez aller plus loin et d'émuler "coller" de ce fichier, vous pouvez utiliser une séquence de raccourci clavier pour lire le contenu du fichier et insérez-la. Voici un exemple qui utilise L'AutoHotKey, mais il est probablement possible d'obtenir le même résultat en PowerShell si vous préférez.
5) macro AutoHotKey côté Client:
;### Get contents of PuTTY ANSI printer device output and paste it
#v:: ;Winkey + v
FileRead, PuTTYPrinter, %USERPROFILE%\Documents\PuTTY_Printer_File
SendInput %PuTTYPrinter%
PuTTYPrinter = ; Free up memory
return
6) Complète l'utilisation de la procédure:
- Se connecter au serveur avec PuTTY et tomber dans tmux par la fonction t ().
- lorsque vous êtes prêt à sélectionner le texte à copier, utilisez tmux hotkey pour copier-mode (
Ctrl + b
,[
) - déplacer le curseur avec les flèches
- Commencer la sélection avec
spacebar
- Fin de la sélection et de le copier avec
y
- Retour sur le côté client de l'exécution de Mastic,
WindowsKey + v
coller la sélection
puisque les images valent 1000 mots, voici un aperçu de ce happening: https://media.licdn.com/mpr/mpr/AAEAAQAAAAAAAAfiAAAAJDYzM2RmMzYzLTk1NmQtNGQxMi1iN2YyLTQ4NGUxNjExMmVlOA.png
en supposant que le mode souris est déjà activé, ajoutez ceci à votre configuration tmux et sélectionnez va maintenant copier dans votre presse-papier.
bind -Tcopy-mode MouseDragEnd1Pane send -X copy-selection-and-cancel\; run-shell -b "tmux show-buffer | clip"
Testé sur v2.6