Algo como $ CDPATH que funciona para todos os comandos bash

1

Estou tentando descobrir se há uma maneira de obter $CDPATH trabalhando para todas as ferramentas de linha de comando. No momento, tenho um diretório no meu homedir chamado src/ , que contém todos os meus projetos. Dessa forma, posso digitar cd <foo> de qualquer diretório, em vez de digitar cd ~/src/foo todas as vezes.

Eu gostaria de poder fazer algo como vim foo/bar.c e ter o bash automaticamente entendendo o que quero dizer. Além disso, eu gostaria de poder ir em vim foo/<Tab> e fazer com que eu dê sugestões para o que quero editar por meio do preenchimento automático, além de também poder ir em vim fo<Tab> e concluí-lo automaticamente. foo para mim.

Existe um script de autocompletar pré-existente para algo assim? Eu tentei fazer um dos meus próprios, mas isso não faz exatamente o que eu quero. Se possível, eu também gostaria que preenchesse automaticamente subdiretórios como foo/baz/thing.c .

Obrigado!

    
por jibcage 16.07.2016 / 23:33

1 resposta

0

Como comentei, não acho que haja uma maneira fácil de fazer isso de forma transparente para qualquer comando.

Você pode criar um script de wrapper e chamá-lo, digamos, f , para fazer

f() {
    local command=$1; shift
    local files=() arg file
    for arg in "$@"; do
        file=$(some method to look up the current file in $CDPATH)
        files+=("$file")
    done
    "$command" "${files[@]}"
}

f vim foo.c bar.h

Claro, isso não tem conhecimento de opções ou argumentos que não sejam de nome de arquivo (isto é, isso não permite fazer grep -i pattern foo.c ) e você terá que pensar sobre o que fazer se o argumento não puder ser encontrado em um diretório CDPATH .

    
por 17.07.2016 / 20:18