Вопрос: Как частично отключить автозаправку zsh


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

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

Но то, что я хочу, похоже на никогда который может остановить его для исправления команд, подобных этим навсегда.

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


35
2018-06-20 10:28


Источник




Ответы:


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

alias vim='nocorrect vim' 

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

Для более новых версий zsh:

 unsetopt correct

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

 unsetopt correct-all

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


52
2018-06-20 11:10



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


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

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

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

unsetopt correct_all  
setopt correct

21
2018-06-20 13:42



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


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

Мне нужно было nocorrect zeus себя:

alias zeus = 'nocorrect zeus'


0
2017-11-20 16:22





Если вы используете oh-my-zsh:

unsetopt correct_all

отключит все автокоррекции.

Установка псевдонимов для исключений (см. Ссылку ниже) не подходит для меня.

https://github.com/robbyrussell/oh-my-zsh/blob/master/lib/correction.zsh


-1
2018-04-10 16:56