Conclusão da guia zsh para executar scripts na pasta atual (. <TAB> scr <TAB>) -> ./ script.sh

2

Eu tenho um problema com o 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 terminaria com./script.sh

Agora, o problema é que, quando o faço .<TAB>no zsh, recebo uma lista de alternativas onde nenhuma delas está ./.

A razão pela qual não estou apenas digitando ./é que é bastante complicado em um layout de teclado norueguês: .então SHIFT+7. Faz-me sentir ineficiente :)

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

setopt autolist
unsetopt menucomplete `

Mas nada parece funcionar para mim.

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

Paaske
fonte
Eu sei que este irritante SHIFT+7muito bem ... Algum tempo atrás eu mapeado uma destas teclas janelas inúteis ;)para /. Desde então, é realmente divertido digitar //////////. Talvez seja uma opção para você também.
Mpy #

Respostas:

1

Não sei como ajustar o sistema de conclusão, para que ele .sempre se expanda ./. Mas aqui está uma solução alternativa 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 invólucro para a expand-or-completefunção normal à qual (por padrão) está vinculado TAB.

mpy
fonte
Brilhante! Este é exatamente o comportamento que eu quero :)
Paaske