9

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

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

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

Благодарю.

3 ответа3

5

Пытаться:

setopt autolist
unsetopt menucomplete
4

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

setopt noautomenu
0

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

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

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .