Copiar al portapapeles de Tmux en El Capitan

19

Estoy bastante contento con los cambios en la Terminal en El Capitán (ver, por ejemplo, esta pregunta ).

Sin embargo, no puedo entender cómo habilitar la copia al portapapeles del sistema desde Tmux. Por ejemplo, ahora que puedo seleccionar el texto dentro de Tmux correctamente con el mouse, ¿cómo puedo copiar el texto seleccionado en el portapapeles, además del búfer propio de Tmux?

Tengo lo siguiente en mi tmux.conf:

setw -g mode-mouse on
set -g mouse-select-pane on
set -g mouse-resize-pane on
set -g mouse-select-window on

setw -g mode-keys vi
bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' copy-selection

Traté de modificar la última línea para

bind-key -t vi-copy 'y' copy-selection \; copy-pipe "pbcopy"

Pero en realidad no funcionó. Estaría agradecido por las sugerencias!

¡Gracias!

siphiuel
fuente
Cmd-C no funciona?
nohillside
1
@partix: no, ya que el texto copiado se deselecciona automáticamente después de soltar el botón del mouse (o el panel táctil). Por supuesto, funciona en la Terminal, pero no desde Tmux dentro de la terminal.
siphiuel
La actualización a Tmux 2.1 rompió el desplazamiento del mouse en los paneles de Tmux.
siphiuel

Respuestas:

27

En realidad, acabo de encontrar una solución muy simple sobre cómo habilitar la copia usando Cmd + C nuevamente.

En la aplicación de Terminal predeterminada, vaya a Ver -> "Permitir informes del mouse" y desactívela. Eso es.

PD: Obviamente, las nuevas características agradables como arrastrar la pantalla dividida en tmux dejan de funcionar después de desmarcar los informes del mouse.

Oplatek
fuente
PD: Utilicé previamente la solución de @siphiuel, que también funciona bien.
Oplatek
1
¡¡¡Gracias!!! ¡Esta es la forma más simple! Solo que la historia está rota. Solo puedo ver parte de la historia de éxito
Sato
Super bonito. Esto funciona
ShikharDua
y esto también funciona para una sesión remota de tmux; Estoy pensando que la bind-key ... copy-pipesolución solo podría funcionar si es una sesión tmux local. Por otra parte, tal vez si realiza la sesión tmux remota dentro de una sesión tmux local, ¿podría funcionar? De todos modos, desmarcar "Permitir informes del mouse" funcionó para mí, e incluso hay un atajo ⌘-R (Cmd-R) para que pueda desactivarlo rápidamente para hacer una copia, y luego volver a encenderlo.
Aaron Wallentine
24

Si usa iTerm2 3.x, puede hacer que copiar / pegar funcione al habilitar Applications in terminal may access clipboard:

ingrese la descripción de la imagen aquí

¡Simplemente resalte el texto con el mouse para copiarlo en el portapapeles de OS X!

También puede pegar desde el portapapeles OS X en tmux con el habitual Cmd+ V.

Jerome Dalbert
fuente
2
Esta fue la solución más fácil para mí.
lennart
¡Esto es asombroso!
mljrg
17

Si mantiene presionada la tecla de función, también puede seleccionar y copiar al portapapeles con apple + c.

amohr
fuente
Estamos buscando algo más que una respuesta de una sola línea. Intenta expandir tu respuesta para dar más detalles.
Allan
2
@Allan Esta es una respuesta completa, a pesar de que es solo una línea. Es así de simple.
pkuhar
por cierto, descubrí que solo funciona en el teclado de la computadora portátil, no en los teclados conectados :(
amohr
8

En realidad, me equivoqué al decir que eso copy-pipeno funciona. Lo hace, y copy-selectionluego es superfluo, ya que copy-pipeambos copian el texto en el tablero de Tmux y las tuberías en un comando de shell arbitrario. Entonces la siguiente línea funciona:

bind-key -t vi-copy 'y' copy-pipe "pbcopy"

Sin embargo, uno debe presionar yantes de soltar el botón del mouse. Me topé con esto en la documentación del complemento tmux-yank :

"Al hacer una selección usando tmux mode-mouse on o mode-mouse copy-mode, no puede confiar en el comportamiento predeterminado 'liberar el mouse después de la selección para copiar'. En su lugar, presione y antes de soltar el mouse".

Entonces funciona, pero con una necesidad algo molesta de presionar ypara copiar el texto seleccionado con el mouse.

siphiuel
fuente
3
Si está utilizando Terminal.app: en macOS Sierra, esto no funcionará debido a la regresión en el comportamiento de Terminal.app. Deberá volver a utilizar el truco "volver a conectar al espacio de nombres de usuario".
m1keil
1
De acuerdo en @ m1keil comentario. Además, por alguna razón tuve que compilar volver a conectar el espacio de nombres de usuario con modificadores adicionales, como este: brew install reattach-to-user-namespace --with-wrap-pbcopy-and-pbpaste(estoy usando Homebrew)
siphiuel
4

Con tmux versión 2.2 o posterior, agregue lo siguiente a su archivo tmux.conf:

bind-key -t emacs-copy MouseDragEnd1Pane copy-pipe "pbcopy"
bind-key -t vi-copy MouseDragEnd1Pane copy-pipe "pbcopy"
Kyle Kloepper
fuente
Funciona para El Capitan 10.11, tmux 2.7
Homer
3

La respuesta de @Oplatek surte efecto

En la aplicación de Terminal predeterminada, vaya a Ver -> "Permitir informes del mouse" y desactívela.

Pero de esta manera, no podríamos desplazar la pantalla con el mouse.

Aquí hay otra forma sin desactivar Allow mouse reporting: presione Fny seleccione el texto con el mouse.

libre de segundos
fuente
0

Usando tmux 2.2, OS X El Capitan, Terminal Versión 2.6.1 (el valor predeterminado que se envía con El Capitan), la siguiente configuración funciona sin problemas (hasta ahora).

$ cat ~/.tmux.conf
set -g mouse on
bind-key -t emacs-copy MouseDragEnd1Pane copy-pipe "pbcopy"
bind-key -t vi-copy MouseDragEnd1Pane copy-pipe "pbcopy"

Para copiar, presione el botón izquierdo del mouse, marque el texto y suéltelo. El texto marcado se encuentra en el portapapeles y se puede pegar con Cmd+ vcomo de costumbre.

Kjell
fuente
-2

solo encuentro un camino

abra la configuración / perfiles del terminal en la información del terminal cambie el tipo de terminal de xterm-256 a ansi abra una nueva ventana de terminal y disfrute :)

Levan Petrosian
fuente