asociar el prefijo tmux a la clave cmd de OS X (o cualquier otro enlace)

21

Estoy acostumbrado a iTerm2 (o Terminal.app para este caso) en OS X. Pero quiero moverme para usar tmux (o pantalla, pero el problema es similar a ambas aplicaciones).

Entonces, mi idea es tener una sola pestaña iTerm con una sesión tmux abierta con múltiples pestañas. Para hacer la transición, tengo una característica básica que necesito configurar en tmux: cambie la pestaña 'n' usando cmd + n (como Firefox, Chrome, iTerm2, etc.)

Sin embargo, no puedo encontrar una manera de asignar la tecla cmd en el teclado mac. Primero intenté implementar cmd como una clave de prefijo, sin éxito. He intentado configurar

set-option -g prefix M-a (hoping for Meta-a)

set-option -g prefix ^a (hoping for ^ to work)

Pero nada funciona. es posible? Realmente no necesito vincular el prefijo a cmd, pero quiero poder cambiar las pestañas tmux con cmd + n.

Gracias

rubenfonseca
fuente
karabiner-elements tiene un enlace específico para tmux pqrs.org/osx/karabiner/complex_modifications/#modifier-keys
Fabrizio Bertoglio

Respuestas:

8

Desea invocar una secuencia de pulsaciones de teclas (primero Ctrl-b, luego n que va de 0 a 9).

Su mejor opción es utilizar una utilidad de atajo de teclado como Butler o Keyboard Maestro para hacer esto por usted.


Usando Butler :

Seleccione + »Elemento inteligente» Pulsaciones de teclas , configure la tecla de acceso rápidoCmd-1 . Presione Ctrl-B, luego 1para las pulsaciones de teclas . Configúrelo para que solo sea válido en Terminal (o iTerm). Te advertirá que otras aplicaciones podrían no gustarle, pero eso ya lo sabes.


Usando Keyboard Maestro :

Cree un nuevo grupo a la izquierda que solo esté disponible en Terminal (o iTerm).

Agregue un nuevo elemento, activado por Hot Key Trigger ( Cmd-1) y agregue dos pulsaciones de teclas a sus acciones: Ctrl-By 1.


También es posible que desee echar un vistazo a este tema ; sin Commandembargo, no se usa y no funcionó para mí usando Terminal.


De la documentación de tmux :

Ate la tecla clave al comando. Las claves se pueden especificar con el prefijo 'C-' o 'ˆ' para las teclas Ctrl, o 'M-' para las teclas alt (meta). La bandera −r indica que esta tecla puede repetirse, vea la opción de tiempo de repetición.

No admiten una tercera tecla modificadora.

Daniel Beck
fuente
Dios mío, qué truco increíble! ¡Funciona también! usó Keyboard Maestro porque Butler parece excesivo. ¡Gracias!
rubenfonseca
Keyboard Maestro trabaja maravillosamente para esto
Sam Selikoff
19

En iTerm2, puede asignar accesos directos a códigos hexadecimales que se envían al terminal. Ir a las preferencias de iTerm2 -> Teclas. En Global Shortcut Keys, haga clic en + y agregue el tipo de acceso directo deseado, como cmd + 1, que se capturará. Luego seleccione "Enviar código hexadecimal". En el cuadro que aparece, escriba los códigos hexadecimales que desea enviar a tmux separados por espacios. Ctrl-B es 0x02, por lo que para "Ctrl-B 1", escriba "0x02 0x31". Consulte aquí para obtener más códigos hexadecimales: http://www.nthelp.com/ascii.htm

Mapeé Cmd con h, j, k, l para moverse entre los paneles tmux, y Cmd con% y "para crear las divisiones. Probablemente haré algo similar para mover entre divisiones vim con una tecla de control.

sesotek
fuente
Esta es definitivamente la mejor respuesta para aquellos que usan iTerm2. ¡Gracias!
newUserNameHere
1
Por alguna razón, esto no funciona en mi iTerm2 build 3.0.2
jasonszhao
Si esto no funciona, puede deberse a que iTerm2 vincula la clave cmd a la pestaña de cambio de forma predeterminada. Su modificador puede estar en conflicto. Tuve que cambiar la tecla de tabulación swith a opción para que esto funcione en CMD + n
Surfrdan
2

Se pueden hacer accesos directos especiales con Terminal.app. Me acabo de enterar el otro día, pero esto puede haber sido posible antes de Lion.

Vaya a Preferencias> Configuración y haga clic en la pestaña "Teclado". Ahora necesita agregar un nuevo atajo de teclado haciendo clic en el ícono más debajo del cuadro. Ahora desea establecer un combo de teclas que "Envía cadena a shell".

Ejemplo: Digamos que quiero configurar M-LeftArrow para que se asigne a prefix-p(ventana anterior).

Key: Left Arrow 
Modifier: Option 
Action: send string to shell

Ahora solo escriba en prefix-pel cuadro de entrada donde prefixestá lo que haya configurado para tmux (uso cntrl-a para que aparezca el cuadro \001p). Tenga en cuenta que si comete un error, se insertarán los caracteres eliminados en lugar de eliminarlos, así que presione el botón "Eliminar un carácter" para retroceder, en caso de que se equivoque.

Caracteres especiales que he establecido para hacer la vida más fácil:

M-Left  > Previous Window
M-Right > Next Window
M-Up    > Enter scrolling mode
M-Down  > Next Pane

También puede modificar cntrl-anything y shift-anything, pero recuerde que estos podrían interferir con su $ EDITOR u otros programas, así que tenga cuidado con las funciones especiales que podrían volverse inútiles.

Además, tenga en cuenta que no pude descubrir cómo duplicar esta funcionalidad en iTerm2.

scicalculator
fuente
1

También puede considerar la integración nativa (pero muy experimental) que iTerm2 ofrece con tmux: http://code.google.com/p/iterm2/wiki/TmuxIntegration

De esa manera, cuando presione Cmd-D para dividir la pantalla, iTerm2 dividirá la pestaña por usted. Esto es genial, porque la división es nativa, por lo que puede arrastrar el borde en el medio para reajustar los anchos, o puede seleccionar un panel haciendo clic. Lo mismo ocurre con las nuevas pestañas / ventanas (pero los accesos directos son ligeramente diferentes; de lo contrario, no tendría forma de agregar pestañas que no sean tmux).

Y al igual que tmux, si desconecta y vuelve a conectar, todo se guardará para usted.

Sin embargo, hay dos advertencias: * esta es una característica muy experimental y muy escamosa para mí. * Tendrá que construir tmux usted mismo (usando el archivo en algún lugar del enlace de arriba).

-Chris

Chris
fuente
Sé que han pasado dos años, pero ¿alguna idea de si esto sigue funcionando? Seguí las instrucciones en su enlace, pero cmd+Ddivide los paneles de iTerm2, no los de tmux.
Sam Selikoff
1
@SamSelikoff Tienes que comenzar con tmux -CC.
jasonszhao
0

También puede consultar esta publicación de blog que tiene explicaciones muy detalladas sobre la integración de tmux / iterm: http://tangledhelix.com/blog/2012/04/28/iterm2-keymaps-for-tmux/

Jérémie
fuente
2
Las páginas web desaparecen y se mueven todo el tiempo. Resuma al menos el contenido de la publicación del blog y brinde detalles de su título y autor para que su respuesta no tenga ningún valor si se rompe el enlace.
David Richerby