Obteniendo <ctrl> + <retroceso> para eliminar palabras en gnome-terminal y vim insert mode

10

Parece que ctrl+ Welimina al revés una palabra a la vez. Eso es genial, pero realmente me gustaría que esto funcione con ctrl+ backspacecomo la mayoría de las otras aplicaciones.

¿Cuál es la mejor manera de hacer esto? Necesitaría el cambio para afectar los comandos gnome-terminal, la línea de comandos vim y la GUI vim.

Costa
fuente
1
En vim puede presionar D y luego B y hará lo mismo. Sin embargo, también extraño esta característica en el terminal porque tiene que escindir y no funciona mientras funciona en modo Insertar.
Consejo

Respuestas:

7

Tenga en cuenta que esto funcionará en el terminal y en el modo predeterminado de emacs (que está utilizando si Ctrl+ Welimina la palabra anterior para usted). No funcionará en el modo vi de bash y no afectará a vi / vim. Por lo tanto, esta es solo una respuesta parcial, pero lo mejor que puede ofrecer este usuario de emacs.


Este tipo de cosas es administrado por la readlinebiblioteca cuyo comportamiento se puede controlar a través de ~/.inputrc. Edite (o cree, si no existe) ~/.inputrcy agregue esta línea:

"\C-H":"\C-W"

Ahora, abra una nueva terminal y debería funcionar.

Explicación

El \C-Hes en realidad Control+ BackSpace. Puede ver los códigos de tecla presionando Ctrl+ y Vluego la tecla que busca. Verás que BackSpacevuelve ^H.

Ahora, debería ser posible vincular Control+ BackSpacea la función bash que elimina la palabra anterior ( backward-kill-wordo unix-word-rubout) usando "\C-H": backward-kill-word. Sin embargo, no puedo hacer que eso funcione. Funciona perfectamente bien con diferentes teclas ( "\C-E": backward-kill-wordpor ejemplo, hace Ctrl+ Eeliminar la palabra anterior) pero por alguna razón, no puedo hacer que funcione BackSpace.

Entonces, como solución alternativa, solo asignamos Ctrl+ Backspacea Ctrl+ Wque ya está asignado backward-kill-word. Entonces, cuando presiona Ctrl+ Backspace, eso se traducirá a Ctrl+ Wque, a su vez, enviará backward-kill-word. Se me ocurrió la idea de esta solución alternativa de esta publicación SU .

terdon
fuente
4

Hasta hace muy poco, gnome-terminal emitía el mismo código en Backspacey Ctrl+ Backspace, por lo tanto, no puede distinguir los dos en su aplicación.

Esto se solucionó en vte-0.42, que es parte de Gnome 3.18 lanzado este otoño.

Si está utilizando Wily, puede encontrar paquetes actualizados en Gnome3 Staging .

egmont
fuente
¿puedo hacer que esto se ejecute de manera confiable sin agregar ese enorme PPA?
Ciprian Tomoiagă
No sin descargar, parchar, compilar e instalar el paquete libvte 2.90 que coincide con el de confianza. El parche está en bugzilla.gnome.org/show_bug.cgi?id=733246 .
egmont 01 de
3

Use Alt+ en su Backspacelugar: funciona igual que Ctrl+ Backspacey no requiere ninguna configuración.

Marco Lackovic
fuente
1

Funciona en mi maquina. ¡Solo asegúrese de usar tmux de master y nvim de linuxbrew y control + retroceso funciona en bash y vim también!

(Obtenga bash de linuxbrew también)

Fábio Santos
fuente