En mis configuraciones de Ubuntu 12.04, mis comandos de copiar y pegar del portapapeles tmux se configuran de la siguiente manera:
set -g prefix M-a
unbind C-b
bind C-c run "tmux save-buffer - | xclip -i -sel clipboard"
bind C-v run "tmux set-buffer \"$(xclip -o -sel clipboard)\"; tmux paste-buffer"
Esto funcionó muy bien por el tiempo más largo hasta hace aproximadamente un mes, cuando sospecho que se realizó algún cambio de configuración o cambio de paquete que rompió lo anterior. En el terminal GNOME, pegar aún funciona bien con prefix+ ctrl-vy ctrl-shift-v.
Sin embargo, el xclip
comando copiar ya no funciona sin importar lo que haga, y he intentado eliminar el enlace de prefijo personalizado anterior, usando en -select
lugar de -sel
, no usando, clipboard
etc. Esto es más o menos un show stopper para un usuario de GVim como yo, ya que no ' Incluso tiene la solución de terminal de GNOME ctrl-shift-ccon tmux tomando el control del shell. Entro en modo copia, selecciono texto con space+ movement, y cuando ejecuto prefix+ ctrl-cno pasa absolutamente nada. Antes de que esto se rompiera, tmux mostraría un mensaje de confirmación en la sección de notificaciones en la parte inferior.
¿Alguien tiene sugerencias en cuanto a cómo se podría depurar esto? Este es un gran éxito de productividad. Probablemente pueda usar el truco de solución temporal de archivos temporales por ahora , pero sería genial saber qué sucedió xclip
.
type xclip
?xsel -b
?xsel -i -b
parece hacer el truco!xsel -b
yxclip -selection clipboard
haría lo mismo!Respuestas:
La
xsel
utilidad es similarxclip
pero implementada de manera un poco diferente. Normalmente esperaría que se comportaran de la misma manera, pero no hacen exactamente la misma llamada a la biblioteca X, por lo que es posible que en algunos casos de esquinaxsel
funcione pero noxclip
, o viceversa. Tratar:fuente
Agregar
-b
arun-shell
(orun
) comando solucionó el problema. Con-b
el comando shell se ejecuta en segundo plano.bind C-c run-shell -b "tmux save-buffer - | xclip -i -sel clipboard"
fuente
Aunque ya no puedo reproducirlo, aquí está la respuesta técnica de lo que podría haber sucedido en su caso.
Primero, debe comprender cómo funciona el portapapeles X11. Puede leer el ensayo de jwz sobre esto: http://www.jwz.org/doc/x-cut-and-paste.html
En resumen, la aplicación que contiene el contenido del portapapeles debe ejecutarse hasta que otra aplicación confirme la propiedad. Entonces, cuando ejecuta
xclip -i <<< test
, puede ver xclip ejecutándose en segundo plano hasta que realice otra selección:Ahora todo está bien, pero cuando sale de este shell, todos los procesos que pertenecen a esta sesión se eliminan de forma predeterminada al enviarles una señal HUP. Esto significará que xclip será eliminado y que ya no podrá acceder al contenido del portapapeles.
Entonces, la solución sugerida (en caso de que no tenga xsel) es ignorar la señal HUP mediante el siguiente enlace:
xsel
No se ve afectado por este problema porque lo primero que hace después de la bifurcación () es desasociarse del terminal de control para que no reciba la señal HUP cuando sale su shell (ni siquiera lo verá en el ps anterior salida pero solo cuando haces aps -e | grep xsel
).fuente
Estoy experimentando un problema similar y el archivo temporal no ayudará en este caso particular, me temo. Esto se debe a que
xclip
parece comportarse de manera diferente cuando es generado por tmux que cuando se ejecuta "interactivamente" y espera a que otra aplicación tome posesión del área del portapapeles. Intente usarloxclip -l 1
para que se cierre inmediatamente (consulte la página del manual para obtener más detalles).fuente
bind C-y run-shell "tmux save-buffer - | xclip -l 1 -i"
.xclip
está haciendo cuando intenta copiar el búfer. Si se queda colgando allí esperando algo, ¿ayuda matarlo? Además, debe salir del modo de selección presionando Entrar (y, por lo tanto, almacenarlo en el búfer) antes de intentar copiar el búfer en el portapapeles X.Esta es una vieja pregunta, pero sospecho que tengo la solución, tomada de la página de Tmux de la wiki de Arch :
Entonces su comando debería convertirse en:
fuente
Esta es una configuración de trabajo que uso:
fuente