Wie kann verhindert werden, dass zsh den Verlauf erweitert, wenn die Leertaste gedrückt wird?

Wie kann verhindert werden, dass zsh den Verlauf erweitert, wenn die Leertaste gedrückt wird?

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

verwandte Informationen