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.