Me gusta recurrir :clear-history
a paneles con un enorme desplazamiento hacia atrás. Sin embargo, quiero escribir una forma de enviar este comando a todos los paneles en las distintas ventanas.
Sé cómo enviar un comando a todas las ventanas, cortesía de esta pregunta , pero ¿cómo envío un comando a todos los paneles de qué ventana también?
send-keys
y synchronize-panes
de la página de manual de tmux me viene a la mente, pero no estoy seguro de cómo casarlos. Pero tal vez hay una manera más simple de hacer esto.
Observaciones extra:
Pensando en esto un poco, tmux list-panes -a
parece enumerar todos los paneles en la sesión actual. Bastante útil para comenzar. ¿A donde voy desde aqui?
Respuestas:
¿Has intentado seguir en tmux window con múltiples paneles?
fuente
Ctrl-b :setw synchronize-panes off
~/.tmux.conf
agregando:bind -n C-x setw synchronize-panes on
ybind -n M-x setw synchronize-panes off
on/off
. Entoncesbind -n C-x setw synchronize-panes
bind -n C-x setw synchronize-panes
¿qué atajo debo presionar para invocar? ¿Es el prefijo + C y x? Probé muchas opcionesLlegué un poco tarde a la fiesta, pero no quería configurar y desarmar los paneles de sincronización solo para enviar un comando, así que creé una función envolvente alrededor de tmux y agregué una función personalizada llamada
send-keys-all-panes
.También creo un contenedor alrededor del comando tmux para simplificar la llamada a esta función (por conveniencia). El contenedor y el código anterior están todos aquí .
Esto me permite ejecutar
tmux send-keys-all-panes <command>
otmux skap <command
enviar<command>
a todos los paneles.Tenga en cuenta que tmux tiene un alias para mi función de contenedor tmux_pp.
fuente
prefix + :
<prefix>:
?: run "yourscript.sh yourargs..."
); si su comando ha dado salida, su panel activo o especificado mostrará los resultados hasta que presione q, pero en este caso no debería. Por supuesto, puede alias / vincular esto a su gusto. Además, los procesos internos pueden interpretar sus pulsaciones de teclas o sus efectos de manera diferente, por lo que#{pane_current_cmd}
puede ser necesaria una lista blanca o negra . Tengo ctrl + k obligado a enviar ctrl + ly clear-history; Esto funciona bien para las conchas, pero golpea el búfer de Vim. Necesitaría refinamiento antes de poder transmitir mi ctrl + k.<prefix>:
antes de cada comando, perder la salida después de abandonar el comando y todas las trampas que ven con ejecutar a través de Tmux. Por ejemplo,<prefix>:run "man cat"
no da como resultado que el hombre aparezcapidof man
o ni siquieraps auxf | grep man
, ni como 'menos', mi localizador actual para hombre.Actualización de junio de 2019
Ilustración rápida sobre cómo configurar su propio enlace para sincronizar paneles .
Agregué lo siguiente en mi
tmux.conf
(los comentarios ciertamente se aplican a mi configuración general):Ahora, puedo alternar la capacidad de sincronizar comandos en múltiples paneles con
<C-a><C-y>
.(Sí, reasigné la tecla de enlace a Ctrl a).
fuente
Ninguna de las respuestas anteriores funcionó para mí (tmux v2.3), pero esto lo hizo, desde la línea de comando bash:
Un script más generalizado, para comandos tmux que no sean 'clear-history' simplemente reemplazaría ese elemento con un parámetro, por ejemplo. $ 1. Tenga cuidado si tiene la intención de escribir un script para manejar una serie de comandos tmux, ya que "-t $ {_ pane}" deberá aplicarse a cada uno.
Tenga en cuenta que el
-a
parámetro totmux list-panes
es necesario para cubrir todos los paneles en todas las ventanas en todas las sesiones. Sin eso, solo los paneles en su ventana tmux actual se verán afectados. Si tiene más de una sesión de tmux abierta y solo desea aplicar el comando a los paneles dentro de la sesión actual, reemplácela-a
con-s
(Todo está en la página de manual de tmux).No tengo los puntos de mod para comentar directamente sobre cada una de las respuestas anteriores, así que he aquí por qué no funcionaban para mí:
El problema que tuve con la respuesta de @ shailesh-garg fue que la sincronización afectaba solo a los comandos emitidos dentro de los paneles, no a los comandos tmux emitidos usando los
Ctrl-B :
que están fuera de los paneles.Los tres problemas que tuve con la respuesta de @kshenoy fueron:
fuente
mi versión de tmux es 1.9a, y esto funciona para mí, una tecla es suficiente para encender y apagar
fuente
Reemplace el "id de sesión" y el "comando" en consecuencia.
fuente
:D
amigo, debe agregar alguna descripción a su respuesta, ya que tiene un texto muy mínimo y, por esa razón, Stackoverflow lo detecta como una publicación de spam o de baja calidad, solo agregue algunos detalles para que no aparezca debajo.Esta es mi función de utilidad para hacerlo, solo ejecutando el comando cuando no hay nada ejecutándose en el panel.
Ejemplo dirigido a una sesión llamada dev, habilitando un python virtualenv en todos los paneles que están en
bash
ozsh
, evitando ejecutar el comando en paneles con vim o cualquier otro ejecutable:o más fácil de recordar: para hacerlo en la sesión actual:
Encuentra mi archivo de configuración con esta función.
fuente