ACTUALIZAR

ACTUALIZAR

De zshforma predeterminada, CTRL+ wy ALT+ Backspaceparecen tener exactamente el mismo efecto.

¿Cómo puedo mantener CTRL+ wcomo está y cambiar ALT+ Backspacepara que se detenga en caracteres no alfanuméricos?

es decir, cuando el cursor está al final del siguiente comando: echo /aaa/bbb/cccpresionar CTRL+ wdebería salir echo, mientras que presionar ALT+ Backspacedebería salir echo /aaa/bbb/.

ACTUALIZAR

Según la respuesta de @Thomas Dickey, he agregado lo siguiente a mi .zshrc:

 my-backward-delete-word () {
    local WORDCHARS='~!#$%^&*(){}[]<>?+;'
    zle backward-delete-word
 }
 zle -N my-backward-delete-word

 bindkey    '\e^?' my-backward-delete-word

Ahora el editor de línea de comando se comporta de manera diferente a lo que esperaba.

Por ejemplo, el carácter de comilla simple 'no está enumerado en mi WORDCHARS, por lo que cuando presiono Alt+BackSpace, backward-delete-worddebería detenerse en '.

Esto funciona en el primer ejemplo, pero no en el segundo:

$ echo 'asdf'
$ echo '

$ echo '=asdf'
$ echo '=
$

en el segundo ejemplo, lo había echo '=dejado en la línea de comando. Después de presionar Alt+BackSpacepor segunda vez, se comió todo, incluido echo. Habría esperado que solo =se lo hubieran comido, porque debería haberse detenido en '.

¿Por qué esto no funciona como se esperaba?

Respuesta1

En realidad, no veo esto en la lista de enlaces zsh, pero si bindkeylo muestra para, entonces es configurable vinculándolo a una función que usted defina.

Trabajando desde mi respuesta en

    Utilizo este bit aportado por alguien de la lista (Oliver Kiddle); controlar
    Consulte los archivos del lunes 8 de octubre para obtener más información sobre esto:

    tcsh-borrar-palabra-hacia atrás () {
      local WORDCHARS="${WORDCHARS:s#/#}"
      zle palabra-borrada-hacia atrás
    }

    lo tengo obligado a controlar-W con:
    bindkey '^W' tcsh-borrar-palabra-hacia atrás

    pero puedes cambiar eso obviamente.

    Creo que eso es lo que estás buscando, ¿no?

    la variable '$WORDCHARS' es cómo zsh determina los límites de las palabras para que usted
    Podría agregar '/' a eso globalmente, sin embargo, esto podría afectar otras cosas.
    quieres dejarlo, así que prefiero esta función.

Entonces: puede usarla $WORDCHARScomo variable local en su propia función, definiendo las palabras que desee y vinculándolas a una clave arbitraria.

Cuando definas tu función, no olvides agregarla comomapa de teclas:

zle -N tcsh-backward-delete-word

información relacionada