switch vim tmux

vim - switch - Cómo copiar desde tmux ejecutando en masilla a windows clipbard



tmux switch windows (5)

ENV :: Estoy ejecutando tmux en masilla, en una computadora portátil con Windows 7. Hago ssh a linux systems mientras trabajo.

Tengo que resolver dos fallos con tmux, antes de usarlo para todas mis necesidades.

  1. Tengo que copiar un poco de texto en el bloc de notas de Windows desde vim o el terminal tmux. He habilitado el soporte del mouse para vim y putty.

    He intentado "*y y "+y pero ambos no funcionan. Si utilizo la capacidad de putty para copiar, también copia el contenido de las cuadrículas adyacentes.

  2. Tengo que copiar parte del contenido del archivo vim en un panel para que el archivo vim se abra en otro panel. ¿Hay algún truco vim para esto? No quiero usar <Cb>[ forma de hacerlo.

El problema 1 me persigue más, porque hay aw / a para el problema 2.


Con algunos trucos, es posible recuperar el búfer tmux a través de PuTTY y al cliente. Logré esto utilizando códigos de escape ANSI para el puerto "AUX" (impresora en serie).

Aquí hay solo una implementación de ese método de transferencia:

1) En el servidor tmux.conf , agregue:

# 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) En el servidor .bashrc , agregue:

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) En el lado del cliente (Microsoft Windows), cree una nueva impresora:

  • Añadir una impresora
  • Crear un nuevo puerto> Puerto local
  • Ingrese un nombre de puerto> " PuTTY_Printer_File "
  • Controlador> Microsoft XPS Document Writer
  • Nombre de la impresora> " PuTTY Printer "
  • Opcional: imprima una página de prueba y asegúrese de que aparezca en el contenido del archivo @ " %USERPROFILE%/Documents/PuTTY_Printer_File "

4) En la configuración de PuTTY del lado del cliente:

  • Establezca Terminal> "Impresora para enviar salida de impresora ANSI a:" a la impresora recién creada llamada " PuTTY Printer "
  • Establezca Conexión> SSH> "Comando remoto:" en " t " (haciendo referencia a la función .bashrc arriba)

En este punto, puede enviar el contenido del búfer tmux a su cliente PuTTY resaltando algún texto en el modo de copia de tmux y presionando y . El texto seleccionado terminará en %USERPROFILE%/Documents/PuTTY_Printer_File nuevo en el cliente. Si desea ir un paso más allá y emular el "pegado" de este archivo, puede usar una secuencia de teclas de acceso rápido para leer el contenido del archivo e insertarlo. Este es un ejemplo que aprovecha AutoHotKey, pero es probable que pueda lograr el mismo resultado en PowerShell si lo prefiere.

5) Macro AutoHotKey del lado del cliente:

;### 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) Procedimiento de uso completo:

  • Conéctese al servidor con PuTTY y déjese caer en la función tmux by t ().
  • Cuando esté listo para seleccionar texto para copiar, use la tecla de acceso rápido tmux para el modo de copia ( Ctrl + b , [ )
  • Mueve el cursor con las teclas de flecha
  • Comenzar selección con spacebar
  • Finaliza la selección y cópialo con y
  • De vuelta en el lado del cliente ejecutando PuTTY, WindowsKey + v la selección

Dado que las imágenes valen 1,000 palabras, aquí hay una descripción general de lo que está sucediendo: https://media.licdn.com/mpr/mpr/AAEAAQAAAAAAAAfiAAAAJDYzM2RmMzYzLTk1NmQtNGQxMi1iN2YyLTQ4NGUxNjExMmVlOA.png


Esto es absolutamente posible. Todas las líneas de configuración a continuación fueron copiadas desde máquinas en diferentes paneles tmux a mi máquina Windows. Sí, me meto en una máquina y tmux y ssh de allí a otras y puedo mover mis vim yanks a cualquier máquina, incluido mi navegador de Windows.

Ejecuto un servidor X en Windows (no es necesario que esté en Windows, pero necesitas uno en algún lugar).

Ingredientes esenciales:

  • putty 0.62 (en Windows)
  • tmux 1.8 (en una máquina Linux)
  • xclip (en máquinas Linux)
  • MobaXterm (en Windows para su servidor x)

La configuración de su red puede diferir un poco, especialmente en la configuración de pantalla del servidor X, pero aquí va:

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"

empuje

" get some autoselect interaction with the system clipboard set guioptions=aA

MobaXterm

Sigo funcionando, pero nunca tengo que ejecutar tmux en un shell xterm. Asegúrese de que el portapapeles compartido esté seleccionado en la configuración de X11. Supongo que xming debería funcionar, pero la configuración para mis otras necesidades nunca pareció funcionar. MobaXterm tiene otras cosas que me gustan de todos modos (navegadores de archivos, etc.).

Supongo que podría ejecutar ssh session con tmux en MobaXterm pero prefiero la ventana de masilla donde tengo mi paleta de colores solarizada .

masilla

ssh a la máquina con tmux. En este punto, configuro la variable de entorno DISPLAY y la puse en un archivo env que se basa en bash. De esta manera, cada ventana subsiguiente creada la tendrá configurada. Ponerlo en otras máquinas a las que salto desde la máquina tmux es un ejercicio completamente diferente.

En cualquier máquina que vaya a compartir el portapapeles, asegúrese de tener el conjunto de $DISPLAY adecuado. Debería poder ejecutar xeyes y verlo en su máquina local.

Todos estarán compartiendo el portapapeles. vim se copiará en el portapapeles cuando tires. Para pegar en otro panel tmux, use la tecla de vinculación ctrl-p (ctrl-a ctrl-p para mí).

Si no funciona, siempre puedes probar con xclip -o -selection clipboard para ver qué debería pegar. También podrá mover cualquier texto "tmux seleccionado" (ratón o bind-key [ ) al portapapeles (y, por lo tanto, a una ventana de ventana normal) con bind-key ctrl-y (es decir, tmux yank).


PuTTY es solo un emulador de terminal; los registros Vim * y + están preocupados por la selección X y el portapapeles; no hay superposición

PuTTY solo le permite copiar el contenido del terminal seleccionado al portapapeles de Windows; cuando ejecute tmux , eso inevitablemente incluirá el diseño de la ventana.

Debe cambiar de PuTTY a algo que permita una integración real, como el servidor Cygwin XWin , que es un servidor X real que integra el portapapeles X con el portapapeles de Windows. En lugar de dentro de la sesión de PuTTY, debería ssh -X en su servidor y lanzar Vim en un terminal de Linux, o GVIM directamente. Entonces, tirar a través de "+y funcionará como cabría esperar.

Alternativamente, si desea seguir utilizando PuTTY, tendrá que utilizar alguna solución alternativa, como :write la selección en un archivo local y transferirla a Windows a través de scp , por ejemplo.


Suponiendo que el modo de mouse ya está activado, agregue esto a su configuración de tmux y la selección ahora se copiará en su portapapeles.

bind -Tcopy-mode MouseDragEnd1Pane send -X copy-selection-and-cancel/; run-shell -b "tmux show-buffer | clip"

Probado en v2.6


Yo uso masilla v0.62 y tmux v1.8.

configuración tmux: setw -g modo-mouse en

Quiero copiar un poco de texto desde tmux al portapapeles del sistema, presiono y mantengo presionada MAYÚS y selecciono el texto con el mouse, luego hago clic en el botón izquierdo del mouse.

Quiero pegar texto en tmux, presionar MAYÚS y hacer clic en el botón derecho del mouse.