O que causa esse comportamento ao definir uma função chamada ':'

1

Se eu criar a seguinte função

function :() {
  echo "hi"
}

então, sempre que eu digitar qualquer caractere, a função será executada assim que eu digitá-lo, e antes que eu atinja retorne !

Isso parece ser de alguma forma causado por algo no meu .zshrc , já que ele não acontece se eu iniciar o Z shell com zsh -f , e isso não acontece no Bash.

Como posso descobrir o que está causando esse comportamento estranho?

    
por iconoclast 29.06.2016 / 04:13

1 resposta

2

O : incorporado não faz nada (é um sem op ). É usado em muitos lugares no código de conclusão do zsh, entre outros. Pode muito bem ser usado em algum código relacionado a associações de teclas. Se você substituir por uma função, espere que sua função seja chamada muito.

Substituir nomes de comandos padrão por algo completamente diferente é uma má ideia. Mas se você realmente quiser definir seu próprio : , crie um alias (para uma função com um nome mais longo e explícito). Dessa forma, isso não afetará as funções carregadas automaticamente (exceto as funções carregadas automaticamente com autoload sem a opção -U - então sempre que você usar autoload , pass -U ), incluindo o código de conclusão.

    
por 30.06.2016 / 00:07

Tags