zsh autocomplete directory

6

Sou novo no zsh e uma coisa que faço frequentemente é executar scripts de shell que estão em um diretório meu chamado Scripts. Eu não estou sempre dentro do diretório Scripts, no entanto ... eu posso estar em $ HOME e, portanto, gostaria apenas de digitar Sc<Tab> e tê-lo autocomplete para Scripts/ e, em seguida, ser capaz de autocompletar qual script eu quero correr de lá, é claro ...

No entanto, o zsh não parece fazer isso por padrão. Ele só preencherá automaticamente os nomes de diretório para mim se eu tiver digitado ls ou cd . Se eu estou tentando completar automaticamente um diretório, simplesmente não o fará.

Existe uma maneira de mudar esse comportamento?

Edit: Descobri que eu poderia fazer ./Sc<Tab> e seria preenchido automaticamente para mim. Eu acho que estou acostumado a não ter que digitar ./ antes de algo para fazer o autocomplete, então eu ainda gostaria de saber se isso é possível em zsh, mas esta é uma solução aceitável por enquanto.

    
por intargc 12.01.2012 / 20:37

2 respostas

4

Não é exatamente o que você pediu, mas eu uso s para executar scripts. Então, por exemplo, se eu tiver um arquivo ~ / Scripts / run-stuff.sh, eu posso digitar s run-stuff.sh e ele irá rodar o script. Ele também fará a conclusão da guia do nome do script. A única coisa que ele não faz é manipular subdiretórios no diretório de scripts.

# Completion for s (scripts)
_s_comp() {
    if [ $OS = "mac" ]; then
        local LS=gls;
    else
        local LS=ls;
    fi
    reply=('$LS --ignore-backups $HOME/Scripts/');
}

compctl -K _s_comp s

É possível que você também precise de um alias como alias s="$HOME/Scripts

Editar: observe que isso funcionará independentemente do diretório em que você está no momento.

    
por 12.01.2012 / 21:45
3

Você pode adicionar esta instrução ao seu ~/.zshrc :

setopt autocd

Ele também tem um efeito colateral benéfico de não ter que digitar cd para alterar os diretórios. :)

    
por 13.01.2012 / 12:53