3

Мой CDPATH в zsh выглядит так:

export CDPATH='.:..:../..'

К сожалению, это означает, что когда я пытаюсь выполнить автозаполнение после ввода 'cd', появляется слишком много ненужных параметров автозаполнения, в зависимости от того, где я нахожусь. Например, если я нахожусь в моем домашнем каталоге, ввод cd пытается автоматически завершить работу каждого пользователя в системе, потому что CDPATH имеет ".."

Есть ли способ сохранить мой CDPATH, как показано выше, но автозаполнение для cd, pushd и т.д. Игнорирует значение CDPATH и автозаполнение только на основе текущего каталога?

1 ответ1

7

path-directories

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

zstyle ':completion:*:complete:(cd|pushd):*' tag-order \
    'local-directories named-directories'

имена групп

Альтернативно или дополнительно, следующие настройки должны отображать заголовок для всех соответствующих групп предложений о завершении, чтобы вы могли видеть, какие каталоги являются локальными каталогами, а какие - предложениями из вашего cdpath .

zstyle ':completion:*' group-name ''
zstyle ':completion:*:descriptions' format %d

Вы можете применять стандартные форматы приглашений к этим описаниям, чтобы они выделялись:

zstyle ':completion:*:descriptions' format %B%d%b        # bold
# zstyle ':completion:*:descriptions' format %S%d%s        # invert/standout
# zstyle ':completion:*:descriptions' format %U%d%u        # underline
# zstyle ':completion:*:descriptions' format %F{green}%d%f # green foreground
# zstyle ':completion:*:descriptions' format %K{blue}%d%k  # blue background
# etc.

Это помогает понять различные источники в моем опыте.


Примечание 1: zsh имеет два представления для переменных массива, таких как PATH и CDPATH , из которых строчный вариант является фактическим массивом. Это означает, что вы можете:

cdpath=(path/to/dir /path/to/another/dir)

Или, чтобы получить желаемый результат:

cdpath=(.. ../..)

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

Примечание 2: Экспорт CDPATH не требуется, если у вас нет нескольких программ, которые хотят его установить.

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