Aquí hay dos editores de línea en juego: el editor de línea básico proporcionado por el núcleo (editor de línea tty en modo canónico) y el editor de línea de bash (implementado a través de la biblioteca readline). Ambos tienen un comando de borrar a la palabra anterior que está vinculado a Ctrl+ Wpor defecto. La clave se puede configurar para el editor de línea tty en modo canónico a través de stty werase
; bash imita el enlace de teclas que encuentra en la configuración tty a menos que se anule en su propia configuración.
La werase
acción en el editor de líneas tty no se puede configurar. Siempre borra (ASCII) palabras delimitadas por espacios en blanco. Es raro interactuar con el editor de líneas tty: es lo que obtienes, por ejemplo, cuando escribes cat
sin argumento. Si desea combinaciones de teclas sofisticadas allí, puede ejecutar el comando bajo una herramienta como rlwrap que usa readline.
Bash proporciona dos comandos para eliminar la palabra anterior : unix-word-rubout
( Ctrl+ wo según lo establecido stty werase
), y backward-kill-word
( M-DEL
, es decir, Esc Backspace) que trata una palabra como una secuencia de caracteres alfanuméricos en la configuración regional actual y_
. Si desea Ctrl+ Backspacepara borrar la secuencia anterior de caracteres alfanuméricos, no establezca stty werase
y, en su lugar, coloque la siguiente línea en su .inputrc
:
"\C-h": backward-kill-word
Tenga en cuenta que esto supone que su terminal envía el carácter Ctrl + H para Ctrl+ Backspace. Desafortunadamente, es una de esas claves sin enlace estándar (y Backspaceen particular es un desastre por razones históricas).
También hay un comando simétrico kill-word
que está vinculado a M-d
( Alt+ D) de forma predeterminada. Para vincularlo a Ctrl+ Delete, primero debe averiguar qué secuencia de escape envía su terminal, luego agregar una línea correspondiente en su .inputrc
. Escriba Ctrl+ Vluego Ctrl+ Delete; esto insertará algo como ^[[3;5~
donde la inicial ^[
es una representación visual del carácter de escape. Entonces la unión es
"\e[3;5~": kill-word
Si no está satisfecho con cualquiera de las definiciones de una palabra, puede proporcionar la suya propia en bash: vea el comportamiento confuso de las combinaciones de teclas de estilo emacs en bash