zsh cdpath e autocompletion

3

Meu CDPATH no zsh é assim:

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

Infelizmente, isso significa que, quando tento preencher automaticamente depois de digitar "cd", há muitas opções de preenchimento automático irrelevantes, dependendo de onde eu estou. Por exemplo, se eu estiver no meu diretório home, digitar cd tentará preencher automaticamente todos os usuários do sistema porque o CDPATH tem ".."

Existe uma maneira de manter meu CDPATH como mostrado acima, mas ter o autocomplete para cd, pushd, etc. ignorar o valor de CDPATH e autocompletar somente com base no diretório atual?

    
por PonyEars 02.04.2011 / 01:09

1 resposta

6

path-directories

Uma maneira é adicionar as seguintes configurações de conclusão em .zshrc para remover path-directories das fontes de sugestão.

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

nomes de grupos

Como alternativa ou adicionalmente, as configurações a seguir devem exibir um cabeçalho para todos os respectivos grupos de sugestões de conclusão, para que você possa ver quais diretórios são diretórios locais e quais são sugestões de seu cdpath .

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

Você pode aplicar formatos de prompt padrão a essas descrições para destacá-los:

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.

Isso ajuda a entender as diferentes fontes em minha experiência.

Nota 1 : zsh tem duas representações para variáveis de matriz como PATH e CDPATH , das quais a variante de minúscula é uma matriz real. Isso significa que você pode:

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

Ou para obter o resultado desejado:

cdpath=(.. ../..)

Pessoalmente, acho que é um pouco mais legível do que o pseudo array separado por dois pontos.

Nota 2 : A exportação de CDPATH não é necessária, a menos que você tenha vários programas que queira definir.

    
por 21.05.2011 / 18:14