plugin agnoster macos bash iterm iterm2

macos - agnoster - iTerm 2: ¿Cómo configurar los atajos de teclado para saltar al principio/final de la línea?



iterm2 windows (13)

Como se explica here , puede hacerlo con unos simples pasos:

De forma predeterminada, los saltos de palabra (opción + → o ←) y las eliminaciones de palabra (opción + retroceso) no funcionan. Para habilitar estos, vaya a "iTerm → Preferencias → Perfiles → Teclas → Cargar preset ... → Edición de texto natural → ¡Boom! La cabeza explota"

Puedo ver que Ctrl + izquierda / derecha salta al principio / final de la línea. ¿Cómo cambiar esto a Cmd + flecha izquierda / derecha ?

Para que Alt + la flecha izquierda / derecha funcionen correctamente para el salto de palabra, siga este artículo .


En iTerm 3.0.12 puede cambiar al ajuste preestablecido de Natural Text Editing :

iTerm → Preferencias → Perfiles → Teclas

Advertencia Como es un ajuste preestablecido, puede anular las claves que ha enlazado anteriormente. Por lo tanto, es mejor guardar los enlaces de teclas actuales antes de aplicar un ajuste preestablecido.


Las únicas cosas que funcionan para pasar al principio y al final de la línea son

⌘← "SEND ESC SEQ" OH - para moverse al principio de la línea
⌘→ "SEND ESC SEQ" OF - para moverse hasta el final de la línea


Los antiguos enlaces emacs de moda todavía pueden funcionar en iterm2 y os x terminal:

Preferencias -> Perfiles -> Teclas (subficha en perfiles)

  • La Left/Right option <kbd>⌥</kbd> key acts as +Esc (similar en el terminal os x)

Esto debería habilitar alt - f y alt - b para mover palabras por palabras. (Todavía ctrl - a y ctrl - e siempre funcionan como de costumbre)

Si se establece como meta esos enlaces antiguos funcionarán mientras que algunos enlaces iterm2 no estarán disponibles.


Para mí, la siguiente combinación funcionó:
| Key Action Esc+ End result | |-----------------------------------------------------| | Send Escape Sequence a Send ^[ a | | Send Escape Sequence e Send ^[ e |


Para saltar entre las palabras y el inicio / final de las líneas en iTerm2, siga estos pasos:

  • iTerm2 -> Preferencias ( + , )
  • Abra la pestaña "Llaves"
  • Agregue las siguientes teclas de acceso directo globales

Mueve el cursor una palabra a la izquierda

  • Combinación de teclado: +
  • Acción: Enviar código hexadecimal
  • Código: 0x1b 0x62

Mueve el cursor una palabra hacia la derecha

  • Combinación de teclado: +
  • Acción: Enviar código hexadecimal
  • Código: 0x1b 0x66

Mueve el cursor al principio de la línea

  • Combinación de teclado: +
  • Acción: Enviar código hexadecimal
  • Código: 0x01

Mueve el cursor al final de la línea

  • Combinación de teclado: +
  • Acción: Enviar código hexadecimal
  • Código: 0x05

Eliminar palabra

  • Combinación de teclado: + ← Borrar
  • Acción: Enviar código hexadecimal
  • Código: 0x1b 0x08

Eliminar linea

  • Combinación de teclado: + ← Borrar
  • Acción: Enviar código hexadecimal
  • Código: 0x15

Deshacer

  • Combinación de teclado: + z
  • Acción: Enviar código hexadecimal
  • Código: 0x1f

No te olvides de eliminar los enlaces anteriores :

  • Abra la pestaña "Perfiles"
  • Haga clic en la sub-pestaña "Claves"
  • Eliminar las asignaciones para combinaciones de teclas + y +


Siga el tutorial que mencionó anteriormente para configurar sus preferencias clave en iterm2 .

  1. Crear una nueva tecla de acceso directo
  2. Elige "Enviar secuencia de escape" como la acción
  3. Luego, para establecer cmd-left , en el texto debajo de eso:
    • Introduzca [ H para inicio de línea
      O
    • Introduzca [ F para final de línea

Solo para ayudar a cualquier persona que tenga el mismo problema, pero específicamente use el shell Zsh con iTerm 2. ¡Resulta que Zsh no lee /etc/inputrc correctamente , y por lo tanto no puede entender los enlaces de teclas que configuró a través de las preferencias!

Para solucionar este problema, debe agregar algunos enlaces de teclas a su archivo .zshrc , como:

# key bindings bindkey "/e[1~" beginning-of-line bindkey "/e[4~" end-of-line

Tenga en cuenta las barras invertidas en el ejemplo anterior antes de la "e", el artículo vinculado no las muestra, así que agréguelos a su archivo .zshrc cuando agregue enlaces.


Veo que ya hay muchas respuestas buenas, pero esto debería proporcionar la funcionalidad de OSX más cercana posible en más que solo su shell. Verifiqué que esto funciona en sesiones ZSH, Bash, node, python -i, iex e irb / pry (usando la gema rb-readline para readline, pero debería funcionar para todos).

Abra las preferencias de iTerm + y navegue a la pestaña Profiles (la pestaña Keys se puede usar, pero agregar un enlace de teclas a su perfil le permite guardar su perfil y sincronizarlo con varias computadoras) y la subpestaña de keys e ingresar lo siguiente:

Borrar todos los caracteres a la izquierda del cursor

+ ← Borrar Enviar códigos hexadecimales:

0x15 Más compatible, pero a veces la funcionalidad es eliminar toda la línea en lugar de solo los caracteres a la izquierda del cursor. Personalmente uso esto y luego sobrescribo mi clave de enlace zsh para que ^U elimine solo las cosas a la izquierda del cursor (ver más abajo).

o

0x18 0x7f Menos compatible, no funciona en el nodo y no funciona en zsh de forma predeterminada, consulte a continuación para corregir zsh (bash / irb / pry debería estar bien), realiza la funcionalidad deseada cuando funciona.

Borrar todos los caracteres a la derecha del cursor

+ fn + ← Eliminar o + Eliminar → Enviar códigos hexadecimales: 0x0b

Eliminar una palabra a la izquierda del cursor

+ ← Borrar Enviar códigos hexadecimales:

0x1b 0x08 Descansos en el IEX de Elixir, parece funcionar bien en cualquier otro lugar

o

0x17 Funciona en todas partes, pero no se detiene en los saltos de palabra normales en IRB, sino que se eliminará hasta que vea un espacio literal.

Eliminar una palabra a la derecha del cursor

+ fn ← Eliminar o + Eliminar → Enviar códigos hexadecimales: 0x01b 0x64

Mueve el cursor al frente de la línea

+ Enviar códigos hexadecimales: 0x01

Mueve el cursor al final de la línea

+ Enviar códigos hexadecimales: 0x05

Mueve el cursor una palabra a la izquierda

+ Enviar códigos hexadecimales: 0x1b 0x62

Mueve el cursor una palabra hacia la derecha

+ Enviar códigos hexadecimales: 0x1b 0x66

Deshacer

+ z Enviar códigos hexadecimales: 0x1f

El rehacer normalmente no está vinculado en bash, zsh o readline, por lo que podemos establecerlo en un código hexadecimal no utilizado que luego podemos corregir en zsh

+ + Z o + y Enviar códigos hexadecimales: 0x18 0x1f

Ahora como arreglar alguno que no funcione.

Para zsh, puede configurar el enlace para el aún no funcional + ← Delete y + + Z / + y ejecutando:

# changes hex 0x15 to delete everything to the left of the cursor, # rather than the whole line $ echo ''bindkey "^U" backward-kill-line'' >> ~/.zshrc # binds hex 0x18 0x7f with deleting everything to the left of the cursor $ echo ''bindkey "^X//x7f" backward-kill-line'' >> ~/.zshrc # adds redo $ echo ''bindkey "^X^_" redo'' >> ~/.zshrc # reload your .zshrc for changes to take effect $ source ~/.zshrc

No puedo encontrar una solución para agregar rehacer en bash o readline, así que si alguien sabe una solución para cualquiera de ellos, comente a continuación e intentaré agregarlos.

Para cualquier persona que busque la tabla de búsqueda sobre cómo convertir secuencias de clave a hexadecimal, encuentro esta tabla muy útil.



bind -p mostrará una lista de claves escapadas enlazadas en su shell, que podrían ayudarlo a darle más ideas / términos de búsqueda.


Agregue en iTerm2 las siguientes teclas de acceso directo del perfil

FOR ACTION SEND ⌘← "SEND HEX CODE" 0x01 ⌘→ "SEND HEX CODE" 0x05 ⌥← "SEND ESC SEQ" b ⌥→ "SEND ESC SEQ" f

Aquí hay un visual para quienes lo necesitan.