Мой CDPATH в zsh похож на это:
export CDPATH='.:..:../..'
К сожалению, это означает, что, когда я пытаюсь автоматически заполнить после ввода 'CD', существует слишком много несоответствующих опций автоматического заполнения, в зависимости от того, где я. Например, если я нахожусь в своем корневом каталоге, вводя попытки CD автоматически заполнить каждого пользователя в системе, потому что CDPATH имеет ".."
Существует ли способ сохранить мой CDPATH как показано выше, но иметь автоматическое заполнение для CD, pushd, и т.д. проигнорировать значение CDPATH и автоматически заполнить только на основе текущего каталога?
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
не необходимо, если у Вас нет нескольких программ, которые хотят это набор.