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.

estudiante
fuente
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.

Mikel
fuente
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

benterris
fuente
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.

jchnkl
fuente
1

Agregue lo siguiente a su ~/.zshrc

bindkey '^H' backward-kill-word
bindkey '5~' kill-word
rysama
fuente