2008-09-17 9 views
642

sé la combinación Ctrl +Un para saltar al principio del comando actual y Ctrl +E para saltar hasta el final.¿Hay alguna manera en el terminal OS X para mover el cursor palabra por palabra?

Pero ¿hay alguna manera de saltar palabra por palabra, como Alt + / en aplicaciones Cocoa hace?

+2

¿Qué shell estás usando? ¿Intento? –

+4

iTerm2 es mucho más agradable que la terminal incorporada. Publiqué las instrucciones a continuación sobre cómo personalizar el teclado :) – cwd

+2

¿Por qué no se mueve al superusuario? –

Respuesta

451

Fuera de la caja se puede utilizar el bastante extraño Esc + F a moverse al comienzo de la siguiente palabra y Esc + B a desplazarse al principio de la palabra actual.

+34

Era inconveniente volver a presionar ambas teclas para volver a presionar -ejecutar el comando otra vez. Me parece bastante cojo hacer esto en el terminal Mac OSX, compararlo con el terminal GNOME. –

+199

Puedes habilitar "Usar opción como meta-clave" en ** Terminal> Preferencias> Configuraciones> [perfil]> Teclado **. Entonces no tienes que escribir manualmente el Esc por separado. –

+6

También si presionas 'Esc' +' F' cuando está al final de una línea o el otro combo de tecla al principio de la línea, simplemente inserta ts la letra en su lugar. ¡Molesto! – Noldorin

261

Here's how you can do it

Por defecto, el terminal cuenta con estos atajos para moverse (izquierda y derecha), palabra por palabra:

  • esc + B (izquierda)
  • esc + F (derecha)

Puede configurar alt + y para generar esas secuencias para usted:

preferencias
  • Terminal abierto (cmd +,);
  • En la pestaña Configuración, seleccione Teclado y haga doble clic en ⌥ ← si está allí, o agréguela si no está.
  • Establecer el modificador como se desee, y escriba la clave de acceso directo en el cuadro: esc + B , generando el texto \033b (no se puede escribir este texto de forma manual).
  • Repita por palabra-derecha (esc + F convierte \033f)

Como alternativa, puede hacer referencia a esta entrada de blog sobre al textmate:

http://blog.macromates.com/2006/word-movement-in-terminal/

+1

Absolutamente esencial. Lo amo. – Jonathan

+0

Hace tiempo que quería esto. Gracias. – Andy

+0

no puede abrir, creo que el enlace está roto :( – tobinharris

75

tengo Alt + / de trabajo: abiertas Preferencias »Ajustes» Teclado, establezca la entrada de cursor opción que queda a texto enviado a la shell: \ 033b y establece cursor opción correcta a texto enviado a la shell: \ 033f . También puede usar esto para otras combinaciones de teclas de control.

+19

Para obtener el \ 033b, realmente necesita presionar Esc, luego b. –

+7

Estoy en Snow Leopard y encuentro que solo funciona cuando habilita 'Habilitar opción como meta clave'. Por cierto, es genial. La clave es mucho más conveniente para ser alcanzado en comparación con Esc + B o Esc + F –

+1

me funciona bien con la opción de habilitar como meta key "off. Ftr. –

7

En Bash, éstos están obligados a Esc - B y Esc - F. Bash tiene muchos, muchos más atajos de teclado; Eche un vistazo a la salida bind -p para ver cuáles son.

14

Si marca Use option as meta key en la pestaña Teclado de las preferencias, a continuación, ordena el estilo por defecto para emacs orientadas hacia el y hacia atrás palabra y ⌥F (Alt +F) y ⌥B (Alt +B) respectivamente.

Recomiendo leer From Bash to Z-Shell. ¡Si quieres aumentar tu destreza bash/zsh!

+1

Sí, eso funciona. Pero el problema es cuando quiero escribir llaves ([] {} |) que están en la Opción-7, la Opción-8 y la Opción-9. Las opciones ahora son meta así que termina con Meta-7, Meta-8 ... ¿Alguna idea? –

37

En realidad, depende de qué shell uses, sin embargo la mayoría de las shells tienen enlaces similares. Los enlaces que usted se refiere (por ejemplo Ctrl +Un y Ctrl +E) son fijaciones que encontrará en muchos otros programas y se utilizan para las edades, por cierto también trabajar en la mayoría de aplicaciones de interfaz de usuario.

He aquí un vistazo de enlaces predeterminados para Bash:

Most Important Bash Keyboard Shortcuts

Tenga en cuenta también que puede personalizarlos. Necesitas crear un archivo, el nombre que desees, llamé al mío .bash_key_bindings y lo puse en mi directorio personal. Allí puede establecer algunas opciones generales de bash y también puede establecer enlaces de teclas. Para asegurarse de que se apliquen, debe modificar un archivo denominado ".bashrc" que bash lee al iniciarse (debe crearlo, si no existe) y realizar la siguiente llamada allí:

bind -f ~/.bash_key_bindings 

~ significa el directorio de inicio en bash, como se indicó anteriormente, puede nombrar el archivo como desee y también colocarlo donde desee, siempre y cuando alimente la ruta de acceso correcta + nombre para enlazar.

Te voy a enseñar algunos extractos de mi archivo .bash_key_bindings:

set meta-flag on 
set input-meta on 
set output-meta on 
set convert-meta off 
set show-all-if-ambiguous on 
set bell-style none 
set print-completions-horizontally off 

Estos acaba de establecer un par de opciones (por ejemplo, desactivar la señal acústica, lo que puede ser todo lo miraron hacia arriba en la página web bash).

"A": self-insert 
"B": self-insert 
"C": self-insert 
"D": self-insert 
"E": self-insert 
"F": self-insert 
"G": self-insert 
"H": self-insert 
"I": self-insert 
"J": self-insert 

Estos asegúrese de que los personajes solos simplemente no hacer nada, pero asegurándose de que el personaje es "escribir" (se insertan en la cáscara).

"\C-dW": kill-word 
"\C-dL": kill-line 
"\C-dw": backward-kill-word 
"\C-dl": backward-kill-line 
"\C-da": kill-line 

Esto es bastante interesante.Si presiono Ctrl + D solo (seleccioné d para eliminar), no pasa nada. Pero si escribo una letra minúscula w, se borrará la palabra a la izquierda del cursor. Sin embargo, si escribo una mayúscula, la palabra a la derecha del cursor se elimina. Lo mismo vale para ly L con respecto a toda la línea comenzando desde el cursor. Si escribo una "a", la línea completa se borrará (todo antes y después del cursor).

coloqué saltar una palabra hacia adelante en Ctrl + F y la palabra anterior en Ctrl + B

"\C-f": forward-word 
"\C-b": backward-word 

Como se puede ver, se puede crear un acceso directo, que conduce a una acción de inmediato, o puede hacer una, que solo entra en una secuencia de caracteres y luego debe escribir uno (o más) caracteres para hacer que se lleve a cabo una acción como se muestra en el ejemplo anterior.

Así que si no está satisfecho con los enlaces predeterminados, puede personalizarlos a su gusto. Aquí hay un link to the bash manual para más información.

+0

¿cómo es el código de la tecla 'comando'? En su ejemplo, 'control' es' \ C', pero ¿cómo es 'command'? – Paschalis

+0

Básicamente quiero asignar Ctrl + A a cmd + izquierda (ir al comienzo de la línea) – Paschalis

+1

@Paschalis En MacOS X, la clave de comando se asigna a 'Meta' en bash (' \ M'), cmd + a la izquierda be '\ M- \ e [D'. Sin embargo, no puede asignar cmd + ... a nada, todos los accesos directos de comando se manejan (y, por lo tanto, se tragan) la propia aplicación Terminal (los que nunca se reenvían al shell) y los mapas cmd + left a "ventana anterior" si tiene múltiples ventanas de terminal abiertas. Lo siento, simplemente no es posible con la aplicación Terminal. – Mecki

298

En Mac OS X: los siguientes métodos abreviados de teclado funcionan de manera predeterminada. Tenga en cuenta que usted tiene que hacer Opción acto clave, como Meta en las preferencias de terminales (en la pestaña Teclado)

  • alt ⌥ + F para saltar F orward por una palabra
  • alt ⌥ + B saltar B ackward por una palabra

He observado que las asociaciones de teclas predeterminadas de emacs para la navegación de texto simple parecen funcionar en los depósitos de bash.Puede utilizar

  • alt ⌥ + D eliminar una palabra a partir de la posición actual del cursor
  • ctrl + Un para saltar al inicio de la línea
  • ctrl + E para saltar al final de la línea
  • ctrl + K para matar a la línea a partir de la posición del cursor
  • ctrl + Y para pegar texto desde la caché de eliminación
  • ctrl + R para revertir búsqueda de comandos que ingresó en el pasado de su historia
  • ctrl +S de búsqueda hacia delante (funciona en zsh para mí, pero no bash)
  • ctrl + F para avanzar por un char
  • ctrl + B para desplazarse hacia atrás por un char
  • ctrl + W para quitar la palabra hacia atrás desde la posición del cursor
+1

¡Gracias! Me preguntaba por qué no funcionó de la caja, eso es exactamente lo que necesitaba. – Flov

+1

Ctrl-y y Ctrl-k también funcionan en aplicaciones OSX normales. – RaytheonLiszt

+3

Puede cambiar meta en iterm2 de la siguiente manera: Preferencias -> Perfiles -> Teclas -> La tecla de opción izquierda actúa como '+ ESC', luego puede usar OPTION f/b para mover la palabra hacia adelante y hacia atrás en consecuencia. [Más] (http://ss64.com/bash/syntax-keyboard.html) –

13

Si usted es un usuario de Vim, puede probar el modo vim de bash. Ejecutar este o ponerlo en su ~/.bashrc archivo:

set -o vi 

Por defecto está en el modo de inserción; pulse escape y puede moverse como puede en modo normal Vim, por lo que el movimiento por palabra es w o b y usual movement keys also work.

12

A partir de Mac OS X Lion 10.7, mapas Terminal Opción - Flecha izquierda/derecha a Esc - b/f por defecto, por lo que esta ahora está incorporado por el golpe y los otros programas que utilice estas combinaciones de teclas compatibles con emacs.

142

Cambiar a iTerm2. Es gratis y mucho mejor que la antigua terminal. También tiene muchas más opciones de personalización, como atajos de teclado.

También me encanta que puede usar cmd y 1-9 para cambiar entre pestañas.Pruébalo y nunca volverá a punto de destino normal :)

cómo configurar las preferencias de teclado personalizados en iterm2

  • Instalar iTerm2
  • lanzamiento y luego ir al panel de preferencias.
  • Elija el teclado en la ficha Perfiles
  • Va a tener que copiar el perfil a algo nuevo y luego eliminar los accesos directos de flecha clave como ^ + derecho/izquierda o si no se preocupan una copia de seguridad simplemente elimínelos del perfil predeterminado.
  • A continuación asegúrese de que esté seleccionado el perfil modificado (protagonista)

Picture 1.png

  • Ahora seleccione la pestaña Teclado (última fila superior)

iTerm 2

  • Haga clic en el botón más para agregar un nuevo atajo de teclado
  • En el primer tipo de caja CMD + Flecha izquierda
  • En el segundo cuadro de elegir la opción "enviar código de escape"
  • En la tercera casilla escriba la letra B

Picture 2.png

  • Repita con la tecla deseada com Sesiones escapar + B mueve una palabra a la izquierda, de escape + f mueve una palabra a la derecha.
  • también puede desear establecer cmd + d para borrar la palabra delante del cursor con de escape + d

menudo me golpeó el botón equivocado (cmd/control/alt alt), así que tengo mis combinaciones de teclas de flecha con esos botones, todos configurados para avanzar y retroceder palabras, pero haga lo que le quede mejor.

+1

Esto funcionó perfectamente. Gracias. –

+3

¡Usted señor es un genio! –

+5

¡Si solo los valores predeterminados estuvieran cuerdo! – boxed

127

En realidad, hay un enfoque mucho mejor. Mantenga presionada la tecla y presione las teclas de flecha hacia la izquierda o hacia la derecha para moverse por palabra. Simple como eso.

opción
opción

también ctrle le llevará hasta el final de la línea y ctrlun le llevará a la comienzo.

+13

Esto tiene que ser más arriba. – Toby

+3

gran consejo, mucho más fácil que usar Esc – user273895

+2

A veces esto no funciona en ciertos casos. Para mí, cuando abrí Terminal.app, estaba bien, pero para IntelliJ, acaba de imprimir '[D' y' [C'. Para arreglar esto, agregue 'bind '" [D ": backward-word'' y' bind' "[C": forward-word'' a mi '.bashrc'. –

Cuestiones relacionadas