zsh tab conclusão para executar scripts na pasta atual (.TABscrTAB) -. / script.sh

2

Eu tenho um problema com zsh (ou oh-my-zsh):

Quando eu quero executar um script no diretório atual, eu faço ./script.sh . No bash eu poderia fazer .<TAB> e me daria ./ onde eu poderia continuar digitando o nome do script ./sc<TAB> que acabaria com ./script.sh

Agora, o problema é que quando eu faço .<TAB> no zsh, eu recebo uma lista de alternativas onde nenhum deles é ./ .

O motivo pelo qual não estou apenas digitando ./ é que é bastante complicado em um layout de teclado norueguês: . then SHIFT+7 . Me faz sentir ineficiente:)

Eu tentei com zstyle ':completion:*' special-dirs true e algumas opções como

setopt autolist
unsetopt menucomplete '

Mas nada parece funcionar para mim.

Sou muito novo nisso, então eu realmente aprecio qualquer ajuda para resolver isso!

    
por Paaske 02.04.2014 / 11:03

1 resposta

1

Eu não sei como ajustar o sistema de conclusão, para que ele expanda . sempre para ./ . Mas aqui está uma solução para o caso especial que você descreveu, ou seja, no início da linha de comando:

expand-or-complete-special-dot() {
  if [[ $BUFFER == "." ]]; then
    LBUFFER="./"          
  fi 
  zle expand-or-complete
}
zle -N expand-or-complete-special-dot
bindkey "^I" expand-or-complete-special-dot

Este é um wrapper para a função normal expand-or-complete , que é (por padrão) vinculada a TAB .

    
por 02.04.2014 / 19:11