Deaktivieren Sie ? und []-Globbing in zsh vollständig

Deaktivieren Sie ? und []-Globbing in zsh vollständig

zsh fügt gegenüber bash eine zusätzliche Globbing-Logik hinzu:

$ zsh
$ echo foo[]
zsh: no matches found: foo[]
$ echo bar?
zsh: no matches found: bar?

$ bash
$ echo f[]
f[]
$ echo bar?
bar?

Keines davon ist für mich nützlich und macht das Kopieren/Eingeben von URLs und anderen Dingen lästig.

Ich würde dies gerne vollständig deaktivieren, habe aber noch keine Möglichkeit dazu gefunden.

Es gibt einige unvollkommene Lösungen:

  • setopt NO_NOMATCH

Das funktioniert meistens, es sei denn, Ihr Glob versehentlichtutÜbereinstimmung, wie:

$ echo README.m?
README.md
  • Anführungszeichen hinzufügen

Dies funktioniert, funktioniert jedoch nicht beim Kopieren und Einfügen von Snippets online und fügt einen zusätzlichen Schritt hinzu, den ich beim Eintippen im Hinterkopf behalten muss.

  • url-quote-magicZum automatischen Verlassen verwenden

Dies verunreinigt die CLI/den Verlauf und funktioniert nur zum Einfügen

Antwort1

?ist auch in Bash ein PlatzhalterDer Unterschied, den Sie sehen, entsteht, weil in Zsh eine fehlgeschlagene Übereinstimmung zu einem Fehler führt, während sie in Bash stillschweigend ignoriert wird.

~/.zshrcUm das Bash-Verhalten in Zsh zu erhalten, fügen Sie Ihrer Datei Folgendes hinzu :

unsetopt NOMATCH

Ich würde jedoch eigentlich empfehlennichtausschalten. Fehler stillschweigend zu ignorieren ist keine gute Sache und kann bei destruktiven Operationen sogar gefährlich sein.

Weitere Informationen zu dieser Shell-Option finden Sie unterhttp://zsh.sourceforge.net/Doc/Release/Options.html

verwandte Informationen