
Ich möchte die Erweiterung verwenden, mv 'foo bar' !#:1:s^\ ^-^
um den Befehl zu erzeugen mv 'foo bar' 'foo-bar'
. Wenn ich jedoch die Leertaste drücke, geht zsh davon aus, dass ich die Eingabe der Erweiterung abgeschlossen habe, und gibt dann zurück, mv 'foo bar' !#:1:s^\
was zu ergibt mv 'foo bar' 'foobar'
.
Ich kann dieses Verhalten umgehen, indem ich eingebe mv 'foo bar' !#:1:s^\^-^
und dann mit den Pfeiltasten zurückgehe, um zu erhalten mv 'foo bar' !#:1:s^\ ^-^
, aber das verfehlt den Zweck.
Wie kann ich das Expandieren-bei-Leertaste-Verhalten einfach abschalten? Ich nehme an, mein gewünschtes Verhalten ist, den Befehl unexpandiert zu lassen, bis ich die Eingabetaste drücke. Ich habe dazu nichts in der Manpage für gefunden zshexpn
.
Bearbeiten: Ich habe herausgefunden, dass ich eingeben kann mv 'foo bar' !{#:1:s^\ ^-^}
, wodurch die Erweiterung aufgeschoben wird, bis }
eingegeben wird. Aber die Frage, wie man das Erweitern bei der Leertaste verhindern kann, bleibt bestehen.
Antwort1
Es scheint, dass Sie die Leertaste an gebunden haben magic-space
, denn dieEinführung zuzsherklärt:
Wenn Sie das Leerzeichen an das magische Leerzeichen binden, wird bei jedem Drücken der Leertaste eine Verlaufserweiterung im CSH-Stil in der Zeile durchgeführt.
Entfernen Sie also entweder die Zeile
bindkey " " magic-space
aus Ihrer Konfiguration. Oder (wenn Sie einige vordefinierte Konfigurationsdateien verwenden wieoh mein Gott) Stellen Sie sicher, dass nach allen anderen Tastenkombinationen der folgende Befehl ausgeführt wird:
bindkey " " self-insert