O melhor plugin de Auto Complete para ZSH

O zsh-autosuggestions completa comandos do seu histórico enquanto você digita. Como instalar no Oh My Zsh ou Homebrew, e por que a tecla de aceite não é o Tab.

Uma das maiores maravilhas de usar o ZSH é sua flexibilidade de customização, tendo uma grande quantidade de plugins desenvolvido por usuários. Em torno de um ano atrás (em 2017) eu achei o melhor plugin, o zsh-autosuggestions.

O que ele faz

Conforme você digita, o plugin procura no seu histórico e mostra o resto do comando mais recente que bate com o que você escreveu, em uma cor "cinzenta silenciada", logo depois do cursor. Nada é executado e nada entra na linha até você pedir, então ele não atrapalha quando você está escrevendo um comando novo.

O histórico que ele lê é o que estiver em $HISTFILE, que é o ~/.zsh_history no Oh My Zsh e o ~/.zhistory no Prezto. Comando que você nunca rodou não vira sugestão, e essa é a graça: ele repete você, não adivinha.

Instalando

No Oh My Zsh, clone dentro da pasta de plugins customizados e adicione na lista de plugins:

git clone https://github.com/zsh-users/zsh-autosuggestions \
  ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
# ~/.zshrc
plugins=(
  # outros plugins...
  zsh-autosuggestions
)

Com o Homebrew, instale o pacote e dê source no seu .zshrc:

brew install zsh-autosuggestions
source $(brew --prefix)/share/zsh-autosuggestions/zsh-autosuggestions.zsh

Se você também usa o zsh-syntax-highlighting, deixe o source dele por último. Ele embrulha os widgets que os outros plugins definem e precisa encontrar todos já no lugar.

Aceitando a sugestão

Aperte para pegar a sugestão inteira, ou End, que faz o mesmo de qualquer ponto da linha. Ctrl + aceita uma palavra por vez, e é o que eu mais uso: o começo do comando costuma estar certo e o último argumento costuma não estar.

O Tab não aceita sugestão. O Tab é o sistema de completion do ZSH, um mecanismo separado que expande caminhos, flags e argumentos. Os dois rodam lado a lado e se completam, que é justamente por que as pessoas confundem.

Se o cinza ficar escuro demais no tema do seu terminal, resolve em uma linha:

ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=245'

O aumento de produtividade é perceptível nos primeiros dias. Comando longo que você já rodou uma vez, com as flags certas, volta com uma tecla só.

Bora construir algo, ou só dar um oi

Se você tem um projeto em mente, quer falar sobre tecnologia ou só dar um oi, eu leio tudo que chega na caixa de entrada.