Как я могу заставить zsh-завершение вести себя как Bash-завершение?

12

Я переключился на Zsh, но мне не нравится завершение. Если у меня есть 20 файлов, каждый с общим префиксом, при нажатии клавиши Tab Zsh полностью завершит первый файл, а затем продолжит просмотр списка при каждом нажатии клавиши Tab. Если я хочу один в конце, мне придется нажимать клавишу Tab много раз.

В bash это было просто - нажмите tab, и я получу префикс. Если бы я продолжал печатать (и нажимал клавишу табуляции), bash завершил бы настолько, насколько это было возможно. Я нахожу это поведение более интуитивным, но предпочитаю другие функции zsh bash.

Есть ли способ получить этот стиль завершения? Google предложил setopt bash_autolist, но это не повлияло на меня (и сообщение об ошибке не было напечатано при запуске моей оболочки).

Спасибо.

NSM
источник

Ответы:

7

Пытаться:

setopt autolist
unsetopt menucomplete
Приостановлено до дальнейшего уведомления.
источник
Работает довольно хорошо, не совсем так, но я определенно могу привыкнуть. Большое спасибо!
2010 г.
8

Что вы хотите, вероятно, это:

setopt noautomenu
ggustafsson
источник
1
(10 лет спустя) Принятый ответ не имел (очевидного) эффекта для меня. Это было именно то, что я хотел, и то, что, похоже, просил ФП.
Иер
1

Есть еще один вариант, если вы используете опцию «выбор меню» в .zshrc следующим образом:

autoload -U compinit
compinit
zstyle ':completion:*:*:*:*:*' menu select

Вы сможете перемещаться по результату с помощью клавиш со стрелками. Давайте возьмем ваш пример с «20 файлами с общим префиксом»:

  • при первом нажатии [TAB] zsh завершит работу, а затем отобразит список возможностей.
  • тогда вы можете выполнить все как в bash (введите дополнительный символ, перейдите к 0)
  • или повторно введите [TAB], и затем вы увидите возможные варианты, выделенные в меню под приглашением оболочки; бонус, вы можете перемещаться в возможностях с помощью клавиш со стрелками

В конце концов, чтобы достичь последней возможности:

  • с Bash, в лучшем случае вы нажимаете [TAB], затем дополнительный символ, затем [TAB] снова (возможно, больше)
  • с Zsh вы нажимаете [TAB], затем [TAB] снова (чтобы войти в меню), затем «<-» (клавиша со стрелкой влево), чтобы добраться до последних элементов

Оба - 3 ключевых удара в этом самом случае. Остальное в основном дело вкуса.

jbbarth
источник