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 ⌥ + →
Para una referencia rápida de cualquier persona que quiera ir al final de la línea o al comienzo de la línea en iTerm2, el enlace anterior http://hackaddict.blogspot.com/2007/07/skip-to-next-or-previous-word- in-iterm.html observa que en iTerm2:
- Ctrl + A , salta al inicio de la línea, mientras
- Ctrl + E , salta al final de la línea.
Siga el tutorial que mencionó anteriormente para configurar sus preferencias clave en iterm2 .
- Crear una nueva tecla de acceso directo
- Elige "Enviar secuencia de escape" como la acción
- 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
- Introduzca [ H para inicio 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 lugaro
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.
explicado en https://aaronaddleman.com/articles/hexcodes-and-iterm/
puedes usar xxd -psd
para obtener el código hexadecimal clave.
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.