Zsh — более интеллектуальная автокоррекция

Zsh — более интеллектуальная автокоррекция

Можно ли заставить Zsh прекратить попытки исправить аргументы, которые не являются файлами, на файлы из текущего каталога, не отключая коррекцию полностью или не ограничивая ее setopt CORRECT(исправлением только команды)?

Например, если CORRECT_ALLзадано значение setopt, происходит следующее:

 gris@arefiev: ~% cd srcc 
change srcc to src-nyae? n

Пока все хорошо (аргумент cdдолжен быть файлом). Однако,

 gris@arefiev: ~% man zile
change zile to .zile-nyae? 

Что? Я бы ожидал, что он исправит zileкогда .zileвызывается manс -Cопцией. Он также пытается исправить параметры хоста ssh, первые аргументы sudoи т. д., что действительно раздражает.

Мне приходится прибегать к костылю: set alias man='nocorrect man'и т. д. и т. п. для каждой затронутой команды, но очевидно, что это не лучшее решение. Мне также не нравится CORRECTи я бы предпочел костыль plus, CORRECT_ALLчем просто CORRECT.

Zsh — это zsh 4.3.17 (x86_64-unknown-linux-gnu)дистрибутив Debian.

Обновлять: вот мой.zshrc http://pastebin.com/67mykgRv

решение1

Zsh поставляется с большим набором дополнений, но меньшим набором исправлений. Есть много команд, для которых дополнение полезно, но не исправление; например, полезно завершать аргументы mkdir(для создания каталогов внутри существующих каталогов), но не исправлять их. Опция correct_allочень жесткая, так как она включает исправление везде; к сожалению, нет опции исправления только при предоставлении набора правильных входных данных.

Вы можете настроить исправления для данной команды, установивcorrectionsтег и настройте, следует ли выполнять исправление, сделав_correctчастьmatcher-listили нет. Они устанавливаются с помощьюzstyleвстроенный.

решение2

Мне кажется, что вы что-то упускаете в своем дистрибутиве. Большинство реализаций ZSH поставляются с большим набором предварительно настроенных настроек завершения для ZSH, которые интеллектуально завершаются на основе команды и позиции аргумента. Например, в моей системе естьzsh-дополненияпакет. При установке и правильной загрузке manзавершается только тем, что находится на страницах руководства, а не файлами, sshтолько именами хостов, ssh -lзавершается именами пользователей системы, но затем ssh -l calebвозвращается к завершению именами хостов и т. д.

Вам следует изучить, какие пакеты zsh доступны и правильно ли вы загружаете конфигурации по умолчанию. Вам не придется настраивать кучу ручных переопределений для стандартных команд, таких как те, что вы перечислили в своем вопросе.

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