Copiar (al portapapeles X) acceso directo en .tmux.conf

22

Para copiar texto al portapapeles X en tmux, lo que hago actualmente es:

  • ir al modo de selección con prefix[
  • comenzar la selección con space(usando mode-keys viBTW)
  • selecciona el texto y presiona enter
  • copiar el búfer tmux al portapapeles X usando prefixctrl+c

(Tengo un mapeo como bind C-c run "tmux show-buffer | xclip -selection clipboard -i"

Estoy tratando de eliminar algunos de estos pasos haciendo un mapeo para el modo de selección. Yo he tratado:

bind-key -t vi-copy C-c run "tmux show-buffer | xclip -selection clipboard -i"

lo que me da y error:

.. usage: bind-key [-cnr] [-t key-table] key command [arguments]

(No pude copiar el error)

¿Cómo puedo arreglar esto?

EDITAR: Me di cuenta de que puedo seleccionar y copiar en el búfer tmux (primeros 3 pasos) usando el mouse como una selección normal (aunque el resaltado no dura, todavía selecciona el texto) y luego usar el siguiente enlace para copiar al portapapeles x :

bind-key -n C-c run "tmux show-buffer | xclip -selection clipboard -i"

(Utilicé este método para copiar este texto y fue fácil;)

tenga en cuenta que -ndenota "sin prefijo", por lo tanto, no se necesita escapar. Si no se confunde con el resaltado que desaparece, esto es análogo a la copia regular (interfaz de usuario común).

esto es lo mejor que se me ocurrió hasta ahora ...

Edit2: resultó ctrl+csolapamientos con lo proceso de interrupción así que cambié a ctrl+alt+cpor ahora. (no me gustó)

EDIT3: tmux 1.8 más o menos agregó soporte para agregar combinaciones de teclas en modo copia, por lo que ahora mi primera intención original es posible usando algo como:

bind-key -tvi-copy y copy-pipe "xclip -selection clipboard -i"
bind-key -tvi-copy enter copy-pipe "xclip -selection clipboard -i"

Estos dos enlaces permiten copiar texto al portapapeles cuando lo usé entero yterminar de copiar.

Todavía mantengo esta línea en caso de que copie con el mouse y decida obtener el contenido del búfer tmux en el portapapeles más adelante:

bind-key y run "tmux show-buffer | xclip -selection clipboard -i"
ninguna
fuente
1
Puede cambiar la interrupción de ctrl-c a otra cosa usando stty. Por ejemplo, para utilizar Ctrl-Z: stty intr=^Z. Tenga cuidado con ese comando, es posible establecer un carácter regular para que sea el carácter de interrupción (si lo hace, use ctrl-v para ingresarlo hasta corregir la configuración). Y no se confunda con la clave que se utiliza (por ejemplo, ctrl-z es normalmente la clave de suspensión).
ceniza
@ash anotó, gracias ... pero creo que seguiré ^csiendo la tecla de interrupción ya que la uso con más frecuencia que la copia. También he actualizado la respuesta para reflejar mi solución actual a este problema.
ninguno el
suena bien. También tenga en cuenta que muchas ejecuciones de xmodmap pueden poner las cosas en un estado divertido que es difícil de corregir, por lo que recomiendo comenzar de nuevo con una nueva sesión X si el efecto de los comandos parece incorrecto.
ceniza
correr en bind-key -t vi-copy C-c run "tmux show-buffer | xclip -selection clipboard -i"vivo da:Unknown command: run
Alexej Magura
1
Sin embargo, correr bind-key C-c run "tmux show-buffer | xclip -selection clipboard -i"funciona bien.
Alexej Magura

Respuestas:

13

Esta respuesta no responde directamente a su pregunta sobre la creación de un acceso directo. Pero esto es lo que hago.

Puede suspender temporalmente el paso de sus eventos de teclas / mouse a tmux manteniendo presionado shift. Por lo tanto, puede mantener presionada la tecla Mayús y los accesos directos regulares del usuario de terminal / X para hacer la copia. En mi caso usando Terminator, presiono shift, resalto con el mouse lo que quiera, copio conCtrl+Shift+C

Y en caso de que tenga paneles divididos, puede hacer zoom en el panel actual con la tecla de alternar zoom Prefix + zy realizar la operación de copia. (probado en tmux v1.8)

Muneeb
fuente
No pude usar esto debido a las divisiones horizontales, pero el truco de zoom suena genial, gracias por la punta.
ninguno
Esto funciona en gnome-terminal, seguro; pero se aplica a todos los emuladores de terminal? Probablemente no
jpaugh
En wsl-terminal, esto funciona. Salva mi día!
Qinsi