¿Cómo muevo un panel existente a otra ventana en tmux cuando tengo varias ventanas y viceversa?
Vengo de la pantalla , donde puedo cambiar al panel y luego cambiar las ventanas hasta llegar al que quiero; tmux no parece permitir esto.
El comando para hacer esto está join-pane
en tmux 1.4.
join-pane [-dhv] [-l size | -p percentage] [-s src-pane] [-t dst-pane] (alias: joinp) Like split-window, but instead of splitting dst-pane and creating a new pane, split it and move src-pane into the space. This can be used to reverse break-pane.
Para simplificar esto, tengo estos enlaces en mi .tmux.conf
para eso:
# pane movement
bind-key j command-prompt -p "join pane from:" "join-pane -s '%%'"
bind-key s command-prompt -p "send pane to:" "join-pane -t '%%'"
El primero toma el panel de la ventana de destino y lo une a la actual, el segundo hace lo contrario.
Luego puede volver a cargar su sesión tmux ejecutando lo siguiente desde la sesión:
$ tmux source-file ~/.tmux.conf
Prefix+s
y entrar en el nombre de la ventana en el indicador para enviar el panel de la ventana ...join-pane es la respuesta. Yo también estaba teniendo problemas con mis intentos de usarlo según la documentación de tmux. Descubrí que los modificadores -t y -s parecen aceptar [sesión]: ventana y no [sesión:] ventana. Es decir que especificar la sesión es opcional, pero incluir: es obligatorio. (Estoy usando tmux 1.5)
Por lo tanto, para agregar un panel a la ventana actual y colocar la ventana 1 en el panel, el comando sería (Ctrl-B o lo que sea su clave de enlace, seguido de) ...
Luego puede dividirlos con un panel de interrupción que, de forma predeterminada, es: Ctrl-B! Si desea vincularlo a un acceso directo, le sugiero que NO anule un enlace predeterminado como s, porque en el futuro buscará en Internet una respuesta que implique elegir sesión y no funcionará en su sistema. ¡Observe que el panel de ruptura está vinculado a! y @ está justo al lado y no está vinculado a nada de forma predeterminada. Por eso sugiero este enlace ...
Alternativamente, para tener un selector interactivo ...
Alternativamente, para unirse siempre a la ventana visitada más recientemente ...
NOTA: Esto
-h
hace que apile los paneles horizontalmente (con una división vertical) en oposición al comportamiento predeterminado que es el reverso.Lo más importante es que APRENDAS lo que elijas atajar. Porque si solo lo configura y lo olvida, se lo atormentará cuando se encuentre en un servidor extranjero. Y seamos sinceros, lo más importante que le brinda un multiplexor de terminal es sesiones confiables en servidores remotos.
Esto completa mi conversión de GNU Screen a Tmux. Nunca miraré hacia atrás.
¡Disfrutar!
fuente
window.pane
por ejemplo,join-pane -s 1.0
a mover el panel 0 en la ventana 1 a la ventana actual. Más detalles en maciej.lasyk.info/2014/Nov/19/tmux-join-pane:
aparentemente ya no es necesario (por ejemplo, simplemente hazlo:join-pane -s 1
). Tal vez eso fue un error en versiones anterioresCreo que me gusta más lo que he estado usando para mover paneles a su propia ventana. yo suelo
Lo descubrí a través de la experimentación, pero parece funcionar muy bien. Puede vincularlo o asignarle un alias fácilmente, sin necesidad de secuencias de comandos.
fuente
join-pane
.Si no desea escribir el identificador del panel en una solicitud, también puede usar
que unirá el último panel / ventana activo a la ventana actual.
fuente
unknown command: join-pane -s !
con 1.6.bind-key j join-pane -s !
Después de leer las otras respuestas y examinar la página de manual de tmux, me decidí por los siguientes enlaces por ahora:
Esto le permitirá seleccionar de forma interactiva la ventana para unir y reflejar mis minúsculas
s
/v
enlaces para crear nuevas divisiones verticales / horizontales. Si alguien sabe cómo seleccionar paneles individuales en lugar de ventanas, hágamelo saber.fuente
-v
y-h
no crean "divisiones" verticales y horizontales, respectivamente. Crean " paneles apilados " verticales y horizontales, respectivamente. (Es decir que los paneles apilados verticalmente tienen una división horizontal). Así que tienes que entrenar tu cerebro de esa manera. También-v
es el valor predeterminado, así que lo dejaría fuera y solo lo pondría-h
allí para que~/.tmux.conf
actúe como una hoja de trucos para que lo vea.Clave de enlace
Por defecto, Ctrl+ b, !sería romper el panel activo en una nueva ventana y cambiar a ella.
Donde Ctrl+ bes el prefijo predeterminado para tmux .
Detalles
El
tmux
comando que ejecuta esta tecla esbreak-pane
(alias:)breakp
como se implementacmd-break-pane.c
y enlaza como predeterminado en key-bindings.c como se ve en la salida del comandolist-keys
(aliaslsk
:):fuente
No tiene que cambiar sus combinaciones de teclas.
Mientras que el panel que desea mover tiene el foco, escriba Prefijo y
:join-pane -t :1
dónde1
está el número de la ventana de destino en la misma sesión. Puede moverlo a otra sesión anteponiendo su nombre comoproject:3
. Para míjoin-pane
tab-autocompletes dej
.Agregue un
-h
o-v
cambie al comando para establecer la orientación de la nueva división creada en el destino, o simplemente vaya a ella y Prefijo + spacepara reorganizar.fuente