Comando autocompletar de Zsh ls apenas com diretórios

4

Suponha que eu tenha os seguintes arquivos e diretórios:

% ls                                                                   
bui00293    buiawer      builds/     buiowpe/

Quero listar o conteúdo de builds

% ls bui[TAB]

No entanto, Zsh mostra as opções com todos os arquivos e diretórios acima. O que eu quero é o autocompletar do comando cd do zsh, por exemplo. somente autocomplete com nomes de diretório.

    
por Lamnk 20.12.2011 / 16:43

1 resposta

4

Se você quiser sempre completar os nomes de diretório apenas para ls , poderá colocar isso em .zshrc :

compdef _dirs ls

Você pode fazer coisas mais extravagantes com o "novo" sistema de completação (inicializado por compinit ) jogando com estilos . Dependendo das suas opções, você pode precisar de unalias ls . Então, para completar apenas diretórios na linha de comando ls :

zstyle ':completion:*:ls:*' file-patterns '*(/):directories'

Você pode completar apenas diretórios por padrão, mas preencha qualquer nome de arquivo se nenhum diretório corresponder:

zstyle ':completion:*:ls:*' file-patterns '%p:globbed-files' '*(/):directories'

Você também pode definir uma ligação de chave para completar apenas diretórios, que você pode usar em qualquer lugar.

zle -C complete_dirs .complete-word _dirs
bindkey '^X/' complete_dirs
    
por 22.12.2011 / 02:55