AKTUALISIEREN

AKTUALISIEREN

Standardmäßig scheinen + und + genau dieselbe zshWirkung CTRLzu whaben ALT.Backspace

Wie kann ich CTRL+ so belassen w, wie es ist, und ALT+ Backspaceso ändern, dass es bei nicht-alphanumerischen Zeichen stoppt?

Wenn sich der Cursor beispielsweise am Ende des folgenden Befehls befindet: echo /aaa/bbb/ccc, sollte durch Drücken CTRLvon + verlassen werden , während durch Drücken von + verlassen werden sollte .wechoALTBackspaceecho /aaa/bbb/

AKTUALISIEREN

basierend auf der Antwort von @Thomas Dickeyhabe ich Folgendes zu meinem hinzugefügt .zshrc:

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

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

Jetzt verhält sich der Kommandozeilen-Editor anders als erwartet.

Beispielsweise 'wird das einfache Anführungszeichen in meinem nicht aufgelistet WORDCHARS, wenn ich also drücke Alt+BackSpace, sollte das backward-delete-wordbei aufhören '.

Dies funktioniert im ersten Beispiel, im zweiten jedoch nicht:

$ echo 'asdf'
$ echo '

$ echo '=asdf'
$ echo '=
$

im zweiten Beispiel hatte ich echo '=auf der Kommandozeile left gedrückt. Nachdem ich ein zweites Mal gedrückt habe Alt+BackSpace, wurde alles aufgefressen, einschließlich echo. Ich hätte erwartet, dass nur =aufgefressen werden sollte, weil es bei hätte aufhören sollen '.

Warum funktioniert das nicht wie erwartet?

Antwort1

Eigentlich sehe ich dies nicht in den ZSH-Bindungen aufgelistet, aber es bindkeyzeigt es fürDu, dann ist es durch Bindung an eine von Ihnen definierte Funktion konfigurierbar.

Ausgehend von meiner Antwort in

    ich verwende diesen Beitrag von jemandem aus der Liste (Oliver Kiddle); siehe
    Weitere Informationen hierzu finden Sie im Archiv vom Montag, 8. Oktober:

    tcsh-rückwärts-löschen-wort () {
      lokales WORDCHARS="${WORDCHARS:s#/#}"
      zle rückwärts-löschen-wort
    }

    ich habe es an Strg-W gebunden mit:
    Bindkey '^W' tcsh-rückwärts-löschen-Wort

    aber das können Sie natürlich ändern.

    ich denke, das ist es, wonach Sie suchen, oder?

    Die Variable '$WORDCHARS' bestimmt die Wortgrenzen, sodass Sie
    könnte global '/' hinzufügen, dies könnte jedoch andere Dinge beeinflussen
    Sie möchten es belassen, daher bevorzuge ich diese Funktion.

Also: Sie können es als lokale Variable in Ihrer eigenen Funktion verwenden $WORDCHARS, Wörter nach Wunsch definieren und an einen beliebigen Schlüssel binden.

Wenn Sie Ihre Funktion definieren, vergessen Sie nicht, sie alsTastenbelegung:

zle -N tcsh-backward-delete-word

verwandte Informationen