iTerm - yendo una palabra hacia atrás y hacia adelante

166

¿Sería posible configurar iTerm 2 para ir hacia atrás y hacia adelante una palabra a través del texto actual en la línea de comando usando un atajo de teclado?

sintagma
fuente
14
Esto realmente no responde la pregunta, pero es relevante: puede hacer una opción + hacer clic en cualquier lugar de la línea de comando para mover el cursor allí.
David Winiecki
Downvoting por no aceptar la respuesta correcta
Pi-
@ Pi- ¿Por qué crees que la respuesta aceptada no es la correcta? 1. Apareció casi 3 años antes del que tenía más votos. 2. Presenta una solución que no funciona por defecto.
sintagma

Respuestas:

48

Ctrl-[ bsalta una palabra hacia atrás. También puede usar Escen su lugar o Ctrl-[, y fpara avanzar.

Eso es Ctrl+ [lanzamiento y luego bo f. O Escy bo f.

Se puede encontrar más información en esta otra discusión en AskDifferent.

Volsk
fuente
3
Esto sería mejor si hubiera una manera de retroceder muchas palabras rápidamente mientras mantiene presionado un botón, en lugar de tener que escribir una secuencia de teclas para cada palabra.
user1717828
¿Qué es "Ctrl- ["?
Shihao Xu
Con "Ctrl- [" me refiero a presionar la tecla "Ctrl" y la tecla "[" simultáneamente.
Volsk
327

Matar una mosca con un cañón:

  • Vaya a Preferencias ... > Perfiles > Claves
  • Presione Load Preset ...
  • Seleccionar edición de texto natural

Luego, puede mover una palabra hacia atrás usando Option ⌥+ y una palabra hacia adelante usando Option ⌥+ , moverse al comienzo de la línea usando fn+ y al final de la línea con fn+ . También puede eliminar una palabra hacia atrás con Option ⌥+ , eliminar toda la línea con Command ⌘+ .

Si el valor predeterminado no aparece, reinstale iTerm2. Si lo instaló usando Homebrew + Cask:

brew cask reinstall iterm2
Ricardo Stuven
fuente
49
¡Esta debería ser la respuesta aceptada!
guyarad
3
Esto no funciona para mi. Parámetros: iTerm2 3.1.2, macOS 10.12.6, teclado alemán. Y no estoy solo ...
t0r0X
2
Esto es genial y agregará la mayoría de sus necesidades. Sin embargo, no agrega un 'ir al inicio / final de línea a través de CMD + flecha izquierda / flecha derecha'. Para esa acción, consulte: stackoverflow.com/questions/6205157/…
MikeyN0
38
Mi vida ha cambiado después de ver esta respuesta. Me divorcié de mi esposa, ahora estoy en un Lambo con una supermodelo.
Dragos Rizescu
12
Tenga en cuenta que esto es Preferencias> Perfiles > Claves> Cargar ajustes preestablecidos no Preferencias> Claves> Cargar preferencias
kevin
148

Me gusta la siguiente configuración.

  1. Preferencias> Claves (o Preferencias> Perfiles> Claves)
  2. Haz clic en el signo más.

avanzar una palabra

option+right
send escape sequence
f

retroceder una palabra

option+left
send escape sequence
b

borrar al comienzo de la palabra ( crédito )

option+delete
send hex code
0x1B 0x08

borrar al final de la palabra

fn+option+delete
send escape sequence
d

(No lo recuerdo con certeza, pero creo que copié esta respuesta de la respuesta de jherran a continuación y agregué más. Debería haber agregado la información adicional en los comentarios o ediciones sugeridas en esa respuesta. No sé cómo mejorar la situación, pero ahora se sabe)

David Winiecki
fuente
2
En MacOS 10.12, necesito usar el código hexadecimal 0x17 para eliminar al comienzo de la palabra
midopa
funciona como un encanto con macOS 10.12 y zsh
Sébastien
1
mejor respuesta cada vez que tiene una cerveza de mí :)
infinito
1
Considere votar por la respuesta de jherran. Creo que mejoré un poco su respuesta y probablemente debería haber sugerido una edición en lugar de crear mi propia respuesta. Siento que me lo robé.
David Winiecki
Hice referencia a esto : para hacer Esc-b, tuve que enviar 0x1b 0x42, y para Esc-f, tuve que enviar 0x1b 0x46: D
Meredith
36

Para avanzar (Alt-f), Retroceder (Alt-b) y Eliminar (Alt-d) Word

  1. Abre iTerm.
  2. Vaya a iTerm> Preferencias ...> Perfiles> Claves
  3. En Teclas de acceso directo de perfil, haga clic en el signo +.
  4. Escriba su atajo de teclado (opción-b, opción-f, opción-d, opción-izquierda, etc.)
  5. Para Acción, elija Enviar secuencia de escape.
  6. Escriba b, dof en el campo de entrada.

Esto funciona al menos para bash. Para zsh hay otras formas de navegar.

jherran
fuente
2
Intenté agregar una opción + acceso directo a la derecha y recibí un mensaje de advertencia sobre un conflicto, porque no me di cuenta de que puede configurar las teclas en Preferencias> Teclas> Teclas de acceso directo global y también en Preferencias> Perfiles> Teclas> Teclas de acceso directo de perfil. Configurarlo en el perfil predeterminado funcionó.
David Winiecki
1
¡Funciona también para zsh!
Andrii Abramov
2
Creo que su respuesta (a la misma solución) fue la más fácil de entender +1
nzaleski
1
Muy útil explicación.
Conti
Perfecto. También puede usar Comando + F, etc. para que la tecla "Alt" esté en la misma posición y no sea necesario realizar ningún ajuste al cambiar entre PC y Mac.
Friederbluemle
12

Similar a otras respuestas, pero para Zsh me llevó un tiempo encontrar esto:

Si está utilizando Zsh, como Oh My Zsh, en iTerm, vaya a: Preferencias> Perfiles > submenú Teclas

Haga clic en + signo

Agregue su combinación de acceso directo, elija "Enviar secuencia de escape"

entradas para izquierda y derecha debajo.

izquierda:

[1;5D

derecho:

[1;5C
bdanin
fuente
1
Salvaste mi compañero de vida
thibaut noah
Esta es la única solución que funcionó para mí
Bryji
Finalmente, una solución simple que funciona: D ¡Gracias por compartirla con nosotros!
Periback
Esta debería ser la respuesta. Votado.
Ehime
2

ingrese la descripción de la imagen aquí

Preferencias abiertas

Configure la tecla de opción izquierda (y / o derecha) para enviar Esc +

Si te equivocaste con tus preajustes, es posible que debas cargar el preajuste predeterminado (¡cuidado con que esto podría borrar tus combinaciones de teclas personalizadas!)

ingrese la descripción de la imagen aquí

Si ve caracteres extraños después de hacer esto, es posible que necesite configurar su ~ / .inputrc o / etc / inputrc

Agregue esto a su ~ / .inputrc:

"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

ejemplo completo inputrc:

# /etc/inputrc - global inputrc for libreadline
# See readline(3readline) and `info rluserman' for more information.

# Be 8 bit clean.
set input-meta on
set output-meta on

# To allow the use of 8bit-characters like the german umlauts, uncomment
# the line below. However this makes the meta key not work as a meta key,
# which is annoying to those which don't need to type in 8-bit characters.

# set convert-meta off

# try to enable the application keypad when it is called.  Some systems
# need this to enable the arrow keys.
# set enable-keypad on

# see /usr/share/doc/bash/inputrc.arrows for other codes of arrow keys

# do not bell on tab-completion
# set bell-style none
# set bell-style visible

# some defaults / modifications for the emacs mode
$if mode=emacs

# allow the use of the Home/End keys
"\e[1~": beginning-of-line
"\e[4~": end-of-line

# allow the use of the Delete/Insert keys
"\e[3~": delete-char
"\e[2~": quoted-insert

# mappings for "page up" and "page down" to step to the beginning/end
# of the history
# "\e[5~": beginning-of-history
# "\e[6~": end-of-history

# alternate mappings for "page up" and "page down" to search the history
# "\e[5~": history-search-backward
# "\e[6~": history-search-forward

# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

$if term=rxvt
"\e[7~": beginning-of-line
"\e[8~": end-of-line
"\eOc": forward-word
"\eOd": backward-word
$endif

# for non RH/Debian xterm, can't hurt for RH/Debian xterm
# "\eOH": beginning-of-line
# "\eOF": end-of-line

# for freebsd console
# "\e[H": beginning-of-line
# "\e[F": end-of-line

$endif
Yosefrow
fuente
1
Perfecto ... tks.
Paivaric
¡No hay problema! Me alegro de que ayude :)
yosefrow
2

Puede configurar su terminal en modo vi set -o vipara poder usar los comandos de movimiento vi habituales (agregue la línea .bash_profilepara almacenar la configuración de forma permanente).

Entonces, como en vi, puede presionar Esc, luego bpara mover una palabra hacia atrás ( whacia adelante), ir al comienzo de la línea con 0, o buscar un carácter hacia atrás con F+ el carácter.

Presione ipara volver al modo Normal e insertar.

Aquellos familiarizados con vi pueden hacer mucho más. Una hoja de trucos se puede encontrar aquí .

sebnukem
fuente
2
¡vim lo resuelve todo! : D
Breno Salgado
EscLuego, presionar Ipara ir una vez al principio de la línea es un poco menos conveniente que Ctrl-a: este caso de uso ocurre a menudo cuando solo desea modificar el nombre del comando. Así que uso el modo vi con algunos cambios de combinación de teclas en iTerm2 para mapear Ctrl-Ay similar a la secuencia de escape Esc+0. De esta manera, estos casos son aún más rápidos, ya que termina en modo de edición.
rfabbri
-1

Con iTerm2 3.1.4, pude configurar lo siguiente sin agregar asignaciones de teclas individuales.

  1. Vaya a Preferencias> Perfiles> Claves
  2. Tecla / izquierda / derecha: seleccione Esc +

Con una nueva sesión de Terminal ahora puede usar:

Option ⌥+ fpara avanzar

Option ⌥+ bpara avanzar

Option ⌥+ Delete ⌫para eliminar Word

Fate.AKong
fuente
2
¿Cómo difiere esto de la otra respuesta altamente votada? apple.stackexchange.com/a/293988/237
user151019