zp cdpath e autocompletion

Il mio CDPATH in zsh sembra questo:

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

Purtroppo questo significa che quando cerco di completare l'autocompletamento dopo aver digitato "cd", ci sono troppe opzioni di autocompletamento irrilevante, a seconda di where sono. Ad esempio, se sono nella mia home directory, digitando cd cerca di completare automaticamente each utente del sistema perché CDPATH ha ".."

C'è un modo per mantenere il mio CDPATH come mostrato in precedenza, ma avere l'autocompletamento per cd, pushd, ecc ignorare il valore CDPATH e l'autocompletamento solo sulla base della directory corrente?

path-directories

Un modo è quello di aggiungere le seguenti impostazioni di completamento nel tuo .zshrc per rimuovere path-directories dalle origini di suggerimento.

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

nomi di gruppo

In alternativa o in aggiunta, le seguenti impostazioni devono visualizzare una voce per tutti i gruppi di suggerimenti di completamento rispettivi in ​​modo da poter vedere quali directory sono le directory locali e quali suggerimenti del cdpath .

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

È ansible applicare formati di prompt standard a queste descrizioni per renderli esposti:

 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. 

Questo aiuta a rendere il senso delle diverse fonti piuttosto un po 'nella mia esperienza.


Nota 1 : zsh ha due rappresentazioni per le variables di arrays come PATH e CDPATH , di cui la variante minuscola è una matrix effettiva. Ciò significa che puoi:

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

Oppure, per get il risultato desiderato:

 cdpath=(.. ../..) 

Personalmente la trovo un po 'più leggibile di quella pseudo arrays separata dal colon.

Nota 2 : L'esportzione di CDPATH non è necessaria a less che non disponga di più programmi che lo desiderino impostare.