Как частично отключить автозамену 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 = 'неправильный зевс'


0

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

ENABLE_CORRECTION="false"

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


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.