2012-06-11 11 views
11

Me gustaría hacer un mapa Ctrl - w a kill-region en Bash 4.2. Esta clave está vinculada a unix-word-rubout (eliminar palabra hacia atrás) de forma predeterminada. Según el manual, la reasignación debería ser posible con el comando bind que tiene las opciones¿Cómo puedo desvincular y reasignar C-w en Bash?

-u función Unbind todas las teclas con destino a la función llamada.

-r claveseq Elimine cualquier vinculación actual para keyseq.

me trataron bind -r "\C-w" y bind -u unix-word-rubout pero la clave no está definido y, como bind -P | grep unix-word-rubout revela, no hubo cambios en la asignación.

jugaba con bind un poco y soy capaz de desatar otras teclas integradas pero no Ctrl - w.

Respuesta

13

Ctrl - w está ligada en stty-werase. Tendrás que desvincularlo allí primero.

stty werase undef 
bind '"\C-w":kill-region' 
11

Por defecto, readline intenta enlazar los caracteres de control especialmente tratadas por el conductor terminal del núcleo que sus equivalentes de readline. (Para ver la configuración del terminal, ejecute

stty -a 

.) El terminal tiene presumiblemente Ctrl-w conjunto de werase, por lo que se une a fiesta de unix-word-rubout. Este enlace tiene prioridad sobre cualquier combinación de teclas que especifique en ~/.inputrc.

Para evitar este mapeo, es necesario establecer la variable de readline bind-tty-special-chars a off en su archivo ~/.inputrc:

set bind-tty-special-chars off 
Cuestiones relacionadas