zsh kill Ctrl + Retroceso, Ctrl + Eliminar


11

¿Cómo configurar zsh de modo que Ctrl+ Backspacemate la palabra antes del punto? ¿Cómo lograr eso Ctrl+ Deletemata la palabra después del punto?

Yo uso urxvt como emulador de terminal.


En primer lugar, debe definir "palabra". ¿Son solo caracteres alfabéticos? Todos los personajes no espaciales?
Mikel

palabra como se utiliza en la terminología emacs
estudiante de

Si ninguna de las soluciones siguientes funciona, consulte: stackoverflow.com/questions/21252419/… .
AP.

Respuestas:


11

Me enfocaré en Ctrl+ Deleteprimero.

Se llama al comando zsh para eliminar una palabra completa hacia adelante kill-word. Por defecto está vinculado a Alt+ D.

Cómo hacer Ctrl+ Deletehacerlo también depende del emulador de terminal que esté utilizando.

En mi sistema, esto funciona en xterm y Gnome Terminal:

bindkey -M emacs '^[[3;5~' kill-word

y para urxvt, debes hacer:

bindkey -M emacs '^[[3^' kill-word

Si eso no funciona, intente escribir Ctrl+ V Ctrl+ Deletepara ver cuál es el valor en su sistema.

Incluso podría agregar ambos a su conjunto .zshrc, o usar la salida de en tput kDC5lugar de codificar la secuencia.

Ctrl+ Backspaceparece más difícil.

En mi sistema, presionar eso es lo mismo que presionar solo Backspace.

Si el suyo es el mismo, creo que su mejor opción es usar Alt+ Backspaceo Ctrl+ en su Wlugar.


Uso urxvt como emulador de terminal
estudiante

Ctrl + Backspaceno funciona
estudiante

Necesitas ^[[3^urxvt. Ctrl+V Ctrl+Deletete mostraría esto.
Mikel

1
Gracias, agregué bindkey '^[[3^' kill-word bindkeyy '^H' backward-kill-wordmi .zshrc. ¡Ahora funciona!
estudiante

@ user5289: Ah, lo siento, nos entendimos mal. No creo ^Ho ^?trabajaré para eso Ctrl+Backspace. De hecho, parece que tal enlace no es posible. Alt+Backspaceo Ctrl+Wpodrían ser reemplazos adecuados.
Mikel

3

En urxvt, para la parte de eliminación hacia atrás, simplemente tengo en mi .zshrclo siguiente:

bindkey '^H' backward-kill-word

y me permite eliminar la palabra anterior con ctrl + retroceso


2

Tengo esto en mi .Xresources:

URxvt.keysym.C-BackSpace:       \033[33~

y eso en mi .zshrc:

bindkey -M main -M viins -M vicmd   '^[[33~'    backward-kill-word

Esto mata cada palabra separada por espacios en blanco. Tenga en cuenta que '^ [' es el carácter de escape. Tienes que xrdb -load .Xresourcesabrir una terminal y luego presionar ^Vseguido de ^BackSpace.


1

Agregue lo siguiente a su ~/.zshrc

bindkey '^H' backward-kill-word
bindkey '5~' kill-word
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.