2011-02-17 16 views
55

Estoy acostumbrado a utilizar la tecla CTRL para moverme más rápido cuando uso las teclas de flecha izquierda y derecha (va al final de una palabra, en lugar de una char a la vez).Bash CTRL para mover el cursor entre palabras/cadenas

¿Puedo hacer eso en bash de alguna manera?

Probablemente podría codificarlo, pero me preguntaba si hay algo más fácil/ya hecho.

Respuesta

67

Con las combinaciones de teclas de readline defecto, ALT +B retrocede una palabra, ALT +F va hacia adelante una palabra.

La configuración predeterminada de Ubuntu proporciona adicionalmente CTRL + flechas como las que está acostumbrado. Estos son en /etc/inputrc y especifica como sigue:

# 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 
No

seguro de por qué necesitamos tres de ellos ...

+0

Es interesante que las encuadernaciones que especificó no coincidan con las encuadernaciones que descubrí y mencioné en mi respuesta. Me pregunto cuál es esa discrepancia. Además, tengo curiosidad de cómo puedes determinar qué es una secuencia de caracteres cuando miras a/etc/inputrc. (por ejemplo, ¿cómo sé qué 1; 5C significa arriba?) –

+14

@bryan_ruiz: Diferentes teclados (emuladores de terminal, etc.) dan salida a diferentes secuencias. Para ver la secuencia, presione Ctrl-v y luego la tecla. Para mí en PuTTY, Ctrl-v Ctrl-RightArrow me da '^ [OC' que es el mismo que el tuyo. En 'xterm' obtengo'^[[1; 5' que es lo mismo que Thomas '. –

+0

¿Puedo saber por qué dio 3 pares? Pensé que uno sería suficiente? – Viet

35

Como explicó Thomas, puede añadir los enlaces a /etc/inputrc.

Otra alternativa para que se cargue cada vez que se conecte, ellos es la puesta en ~/.bashrc así:

#use ctl keys to move forward and back in words 
bind '"\eOC":forward-word' 
bind '"\eOD":backward-word' 

he aprendido que se puede utilizar cat > /dev/null mirar a los personajes que su teclado está enviando, por ejemplo, Ctrl + flecha derecha muestra:

^[OC 

donde ^[ es lo mismo que \e así que de ahí viene el código en el comando bind.

También puede consultar los enlaces de la siguiente manera:

bind -p | grep forward-word 

Todo esto es muy muy impresionante y estoy contento de haber encontrado hacia fuera mayor poder de bash.

+5

I * think * esto solo afectará a bash, mientras que la solución 'inputrc' también se aplicará a otros programas usar readline, por ej. el intérprete de Python, la mayoría de las demás conchas. Tenga en cuenta que también puede poner los comandos en '~/.inputrc' si no tiene root, o no quiere que se apliquen a todos los usuarios. – Thomas

+0

muy interesante, actualizará mi $ HOME para reflejar eso. –

+0

Por alguna razón, esto solo funcionó para mí cuando cambié el orden de las líneas anteriores. Nota adicional. Estoy usando Ubuntu 14.04LTS detrás de la masilla de Windows 8.1. – Dez

Cuestiones relacionadas