¿Cómo omitir palabras en el terminal OS X?


11

Digamos que escribí un comando largo en el terminal Mac OSX, es decir

say "Hello, how are you? I am good thank you. How is it going with you? Fine, thanks"

y ahora quiero cambiar la palabra Helloa Hi.

Para hacer eso, en este momento tengo que seguir presionando (o mantener presionada) la tecla izquierda del teclado hasta que el "cursor" llegue al final de la palabra Hello, y luego eliminarla. La técnica habitual de 'mantener presionada la opción' no funciona como lo hace en la mayoría de las otras aplicaciones de OS X.

¿Hay alguna forma de saltear una palabra a la vez (o alguna otra forma más corta de colocar el cursor allí)?

Respuestas:


19

La edición de la línea de comandos es una función de su shell, no de Terminal . Probablemente su shell sea bash y probablemente su estilo de edición de línea de comandos esté configurado en "emacs".

Estas son algunas de las combinaciones de teclas de estilo Emacs que puede encontrar útiles:

  • California: beginning-of-line
  • Ce: end-of-line
  • Mf: forward-word
  • Megabyte: backward-word
  • Discos compactos: delete-char
  • Md: kill-word(eliminar la siguiente 'palabra')
  • M-DEL: backward-kill-word

C- x significa Control+ x, entonces Ca es Control+ a.

M- x significa Meta+ x, pero probablemente no haya una tecla Meta en su teclado. Entonces, en su lugar, puede usar ESC x (es decir, Escapeentonces x). El terminal tiene una configuración para enviar ESC automáticamente antes de presionar las teclas presionadas Option. El uso de esta función deshabilita el manejo extendido de caracteres que Mac OS X generalmente proporciona al usar el modificador de Opción. Entonces, si usa pocos caracteres extendidos y desea tener Option+ xenviar ESC x , entonces puede habilitar esta opción de Terminal .

Hay muchas formas de pasar a "Hola" en su ejemplo:

  • Busque "Hola": Cr H ello Cj (o ESC)
    • En Emacs normales, solo usaría RET ( Return) para finalizar la búsqueda en la ubicación actual y volver a la edición. Pero en bash , los enlaces predeterminados hacen que RET (es decir, Cm) siempre ejecute la línea actual, incluso si una búsqueda incremental está activa. Entonces, la parte Cj / ESC es una desviación de Emacs normal.
  • Saltar al comienzo de la línea y avanzar: Ca Mf Cf (o )
  • Salta al comienzo de la línea, luego muévete con palabras: Ca Mf Mf Mb
  • Use mucho Mb (solo realmente factible si asigna Opción a Meta).

También hay varias formas de lograr su reemplazo deseado:

  • borre la palabra y reemplácela: Md H i
  • eliminar caracteres y reemplazarlos: Cd Cd Cd Cd Cd H i
  • pasar "H" y eliminar el siguiente trabajo, reemplazarlo: Cf Md i
  • pasar "H" y eliminar los caracteres restantes, reemplazarlos: Cf Cd Cd Cd Cd i

Si se detuvo al final de la palabra (tal vez a través de Ca Mf Mf), podría usar M-DEL H i.

Puede hacer algo como bind -P | lessencontrar otras uniones interesantes. Consulte la sección de línea de lectura de la página de manual de bash (o las partes de línea de lectura de las páginas de información de bash ) para obtener más detalles.


Ok, esto realmente no pertenece a la pregunta, pero ¿cómo colocas las palabras que parecen teclas de teclado allí?
Wuffers

1
@Señor. Hombre: Usa <kbd>elementos. Se permite un subconjunto de HTML en el marcado aquí . La apariencia se debe al estilo local de la etiqueta (fondo, color del borde, estilo del borde, ancho del borde, etc.). Puede revisar el marcado de origen de mi publicación ("ver código fuente" en esta página ). Consulte meta.stackexchange.com/questions/5527 aunque el estilo elegante esté deshabilitado en MSO: meta.stackexchange.com/questions/1939/#23571
Chris Johnsen

No estoy seguro de si esto es obvio o no, me llevó un minuto resolverlo, pero estoy en un MBP sin una meta clave y estoy usando una configuración de Terminal predeterminada. Para avanzar y retroceder en las palabras, puedo presionar Esc y luego F, o Esc y luego B. Solo quería mencionar eso porque la forma en que se explicó anteriormente me estaba haciendo intentar presionar Esc + x y luego f o b ...
cwd

¿Hay alguna manera de cambiar el entorno o el shell para que pueda hacer ctrl o fn + teclas de flecha para que coincida con mi IDE?
codecowboy

1
¡También puede usar enlaces vi agregando set -o visu .bashrc! gnu.org/software/bash/manual/html_node/…
Will Munn

2

El enlace de línea de lectura predeterminado forward-wordes Meta-F ( bash(1)página de manual , sección READLINE , Comandos para la subsección Mover ). Sin embargo, no estoy seguro de a qué se traduce Meta en OS X. Opción, tal vez.


+1: en realidad tienes razón. esto funciona en bash en OSX
Yuval
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.