zsh cd completo com dois argumentos

2

Contexto para aqueles que sabem sobre a conclusão do zsh, mas não sobre todos os recursos: Um dos recursos únicos e realmente úteis do zsh é o seguinte:

[/usr/dir1/dir2/dir3/]$ cd dir1 dirnew
/usr/dirnew/dir2/dir3
[/usr/dirnew/dir2/dir3]$ 

i.e. Se um usuário puder substituir um diretório específico na hierarquia por outro. É um recurso muito útil. (supondo que dirnew tenha dir2 / dir3). Se dirnew não tivesse dir2 / dir3, este comando falharia.

Gostaria de saber como posso completar o cd, para nomes de diretórios longos. Quando eu faço cd <TAB> , além dos diretórios no diretório atual, o que também deve aparecer são os diretórios na hierarquia atual. Depois de escolher ou digitar um dos diretórios da hierarquia, se eu pressionar <TAB> novamente, devo obter opções de conclusão dos diretórios no pai que possuem uma hierarquia semelhante. No exemplo acima, digamos / usr / tem dirnew e diranother beisdes dir1. O dirnew tem dir2 / dir3, mas o diranother está vazio. cd dir1 <TAB> deve me dar um novo como uma opção, mas não mais.

    
por 0fnt 07.03.2015 / 06:37

1 resposta

2

Você tem uma versão antiga do Zsh ou sua configuração está quebrando. A conclusão de cd do Zsh tem esse recurso e funciona. Você pode verificar isso executando zsh sem usar nenhuma das suas configurações:

zsh -f # all settings at their default values
autoload compinit && compinit
mkdir -p tmp/a/b
mkdir -p tmp/c/b
mkdir -p tmp/b
cd tmp/a/b
cd a [TAB]

Estou executando o Zsh 5.1 e ele é concluído corretamente em c . Se eu criar uma segunda conclusão possível, por exemplo mkdir -p d/b , isso me dá c e d .

    
por 14.09.2015 / 10:16

Tags