Полностью отключить подстановку ? и [] в zsh

Полностью отключить подстановку ? и [] в zsh

zsh добавляет некоторую дополнительную логику подстановки по сравнению с bash:

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

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

Ни один из них не является для меня полезным и делает копирование/ввод URL-адресов и т. п. раздражающим.

Я бы хотел полностью отключить эту функцию, но пока не нашел способа это сделать.

Есть несколько несовершенных решений:

  • setopt NO_NOMATCH

В основном это работает, если только ваш шарик случайно неделаетсовпадение, например:

$ echo README.m?
README.md
  • Добавление цитат

Это работает, но не работает при копировании и вставке фрагментов в Интернете и добавляет дополнительный шаг, который мне нужно помнить при вводе текста.

  • Используйте url-quote-magicдля автоматического выхода

Это загрязняет CLI/историю и работает только для вставки.

решение1

?также является подстановочным знаком в Bash. Разница, которую вы видите, возникает из-за того, что в Zsh неудачное сопоставление приводит к ошибке, тогда как в Bash оно просто игнорируется.

Чтобы получить поведение Bash в Zsh, добавьте в свой ~/.zshrcфайл следующее:

unsetopt NOMATCH

Однако я бы на самом деле рекомендовалнетОтключение. Молчаливое игнорирование ошибок не является хорошей и может быть даже опасным при выполнении разрушительных операций.

Для получения дополнительной информации об этой опции оболочки см.http://zsh.sourceforge.net/Doc/Release/Options.html

Связанный контент