Як частково відключити автокорекцію zsh


36

Функція автокорекції zsh дуже корисна для мене, але це не завжди дає належний результат.

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

І все ж те, що я хочу, - це щось на зразок ніколи не налаштованого варіанту, який може перешкодити йому виправляти команди, такі як назавжди.

Як я можу це зробити?

Відповіді:


53

Ви можете повідомити 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?


1
Хоча це працює, коли команда vim знаходиться на старті, але не працює для таких команд, як bundle exec cucumber <some_specific_feature> && bundle exec rspec <some_specific_spec>. Я додав псевдонім для rspec. Якісь поради?
Мартін Фут

@MartinFoot: якщо ви використовуєте oh-my-zsh, плагін постачальника може вам допомогти: coderwall.com/p/weixga
brafales

1
У нових версіях unsetopt correct_allзмінено наunsetopt correct
антитоксичний

@antitoxic: Я хотів знайти, що означає "нова версія" з точки зору номерів версій, але навіть у сьогоднішній день перевірки на git (zsh 5.0.2 + 31433) в zshoptionsmanpage зазначено CORRECT_ALL: Спробуйте виправити написання всіх аргументів у рядку . Окрім того, обидві статті записалися на CORRECTта CORRECT_ALLне змінилися принаймні з 2008 року. Тож я пропускаю вашу думку; чи можете ви поясніть, до чого ви призводите до своєї заяви ?!
mpy

Я хотів би додати: питання завантаження має значення! Переконайтеся, що ви додали незрозумілу інформацію після пошуку oh-my-zsh ... Витратили багато мого часу.
ома

22

Я думаю, що я знайшов кращу відповідь на це.

Я не впевнений у версіях та ін., Але, здається correct_all, слід виправляти команди та аргументи, в той час як correctвиправляє лише команди, тому усуваючи цю дратівливу поведінку.

Це те, що я маю в своїх конфігураційних файлах

unsetopt correct_all  
setopt correct

Це фактична відповідь. correct-allне видається реальною можливістю в жодній документації, яку я можу знайти, ні в реальному житті. Це correct_all. Спасибі!
Джеймі

У мене є setopt correctall від zsh.sourceforge.net/Intro/intro_16.html
zzapper

Ви - мій герой!
Мартін К

Якщо ви використовуєте oh-my-zsh, переконайтеся, що ви поставите два рядки після того, як source $ZSH/oh-my-zsh.shінакше це не працює. Здається, о-мі-zsh скине параметр true_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.