6

Допустим, у меня есть следующие файлы в каталоге:

  • abc123ABC
  • abc123QWE
  • abc456

Теперь предположим, что я набираю и нажимаю TAB.

В bash завершение, как это обычно работает, просто завершает abc и останавливает меня, чтобы "разрешить" следующий символ. так что если я наберу 1, я смогу завершить до abc123 со следующей вкладкой.

В zsh, по крайней мере, в том виде, как он настроен на моей машине, он завершит весь вариант, первый в данном случае: abc123ABC и предоставит мне меню, чтобы изменить его на другие варианты.

Обычно это хорошо, но оказывается уродливым и совершенно бесполезным, когда нужно заполнить много файлов. обычно в таких случаях было бы легко / тривиально сузить выбор, набрав пару символов после «обычной» части.

Мне нравится часть меню, но я бы предпочел, чтобы она только заканчивала «общие» части и полностью выполняла их на втором вкладке или используя меню, но все же без потери возможности вручную сузить выбор, набрав символ или два.

Есть ли что-нибудь подобное в zsh?

1 ответ1

8

Вы должны изучить программу настройки завершения compinstall .

autoload -Uz compinstall && compinstall

В версии, которую я использую (zsh 4.3.10), опция для вставки однозначных префиксов находится внутри следующего меню

  • 3 «Стили для изменения способа отображения и вставки завершений».
    • 2 «Изменить способ добавления дополнений:…»
      • 1 «… вставьте любой однозначный префикс вместо того, чтобы [идти] прямо к завершению меню»
        • Y

После сохранения это приводит к тому, что следующая команда сохраняется в файле настройки завершения (обычно .zshrc):

zstyle ':completion:*' insert-unambiguous true
  • 3 «Стили для изменения способа отображения и вставки завершений».
    • 3 «Настроить… списки пополнения, выбор предметов…»
      • 2 «Используйте клавиши курсора для выбора завершений из списков завершений».
        • 1
        • Вернуть

После сохранения это приводит к следующей настройке:

zstyle ':completion:*' menu select=1
zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s

Вы можете настроить первый, добавив interactive:

zstyle ':completion:*' menu select=1 interactive

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