Как частично отключить автозамену zsh

36

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

~$ sudo vim somefile
zsh: correct 'vim' to '.vim' [nyae]? 

Тем не менее, я хочу что-то вроде опции « никогда», которая может остановить его для исправления таких команд навсегда.

Как я могу это сделать?

Шоу Я
источник

Ответы:

53

Вы можете сообщить zsh, что он не должен выполнять автозамену для определенных команд, назначив им псевдоним с префиксом 'noc корректный' в вашем .zshrc (пример здесь: http://dzen.geekmode.org/wiki/wiki.cgi/-main/ZshConfiguration ) :

alias vim='nocorrect vim' 

В качестве альтернативы - если этот процесс внесения в белый список становится слишком неприятным - вы можете полностью отключить автозамену с помощью следующего в вашем .zshrc.

Для более новых версий zsh используйте:

 unsetopt correct

для более старых версий zsh используйте:

 unsetopt correct-all

Поправлено добавить: вот предыдущая дискуссия на эту тему - Исключения для zsh correctall?

соз
источник
1
Хотя это работает, когда команда vim находится в начале, но не работает для таких команд, как bundle exec cucumber <some_specific_feature> && bundle exec rspec <some_specific_spec>. Я добавил псевдоним для rspec. Какие-нибудь советы?
Мартин Фут
@MartinFoot: если вы используете oh-my-zsh, плагин связки
brafales
1
В новых версиях unsetopt correct_allизменено наunsetopt correct
антитоксическое
@antitoxic: Я хотел посмотреть, что означает «новая версия» в терминах номеров версий, но даже в сегодняшнем git checkout (zsh 5.0.2 + 31433) на странице руководства zshoptionsуказано CORRECT_ALL: Попытаться исправить написание всех аргументов в строке , Кроме того, обе записи для мужчин CORRECTи CORRECT_ALLне изменились, по крайней мере, с 2008 года. Поэтому я скучаю по вашей точке зрения; не могли бы вы объяснить, что вы приводите к своему заявлению ?!
mpy
Я хотел бы добавить: порядок загрузки имеет значение! Убедитесь, что вы добавили unsetopt после поиска oh-my-zsh ... Потрачено впустую много моего времени.
Ома
22

Я думаю, что нашел лучший ответ на это.

Я не уверен насчет версий и еще много чего, но похоже, что correct_allон должен исправлять команды и аргументы, а correctисправляет только команды, поэтому устраняет это раздражающее поведение.

Это то, что у меня есть в моих конфигурационных файлах

unsetopt correct_all  
setopt correct
Пауло Кассаретто
источник
Это фактический ответ. correct-allне представляется реальным вариантом ни в какой документации, которую я могу найти, ни в реальной жизни. Это correct_all. Благодарность!
Джейми
Я выбрал правильный ответ от zsh.sourceforge.net/Intro/intro_16.html
zzapper
Ты мой герой!
Мартин К
Если вы используете oh-my-zsh, убедитесь, что вы поставили две строки после, source $ZSH/oh-my-zsh.shиначе это не сработает. Кажется, oh-my-zsh сбросит параметр correct_all.
Мэтт
0

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

Что я должен был сделать, так nocorrectэто сам Зевс:

псевдоним zeus = 'неправильный зевс'

IanVaughan
источник
0

Мне удалось отключить автокоррекцию с помощью

ENABLE_CORRECTION="false"

Я использую zsh версии 5.7.1

Рахул
источник