Sugestões automáticas rápidas/discretas semelhantes a peixes para zsh.
Ele sugere comandos conforme você digita com base no histórico e nas conclusões.
Requisitos: Zsh v4.3.11 ou posterior
Consulte INSTALAR.md.
Ao digitar comandos, você verá uma conclusão oferecida após o cursor em uma cor cinza suave. Esta cor pode ser alterada definindo a variável ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE
. Veja configuração.
Se você pressionar a tecla → (widget forward-char
) ou End (widget end-of-line
) com o cursor no final do buffer, ele aceitará a sugestão, substituindo o conteúdo do buffer da linha de comando pela sugestão.
Se você invocar o widget forward-word
, ele aceitará parcialmente a sugestão até o ponto para onde o cursor se move.
Você pode querer substituir as variáveis de configuração globais padrão. Os valores padrão dessas variáveis podem ser encontrados aqui.
Nota: Se você estiver usando Oh My Zsh, você pode colocar esta configuração em um arquivo no diretório $ZSH_CUSTOM
. Veja seus comentários sobre a substituição de internos.
Defina ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE
para configurar o estilo com que a sugestão é mostrada. O padrão é fg=8
, que definirá a cor de primeiro plano para a cor 8 da paleta de 256 cores. Se o seu terminal suportar apenas 8 cores, você precisará usar um número entre 0 e 7.
A cor de fundo também pode ser definida e a sugestão pode ser estilizada em negrito, sublinhado ou destaque. Por exemplo, isso mostraria sugestões com texto em negrito, sublinhado e rosa em um fundo ciano:
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE= " fg=#ff00ff,bg=cyan,bold,underline "
Para obter mais informações, leia a seção Destaque de caracteres do manual zsh: man zshzle
ou online.
Nota: Alguns usuários do iTerm2 relataram não conseguir ver as sugestões. Se isso afetar você, o problema provavelmente é causado por configurações de cores incorretas. Para corrigir isso, entre nas configurações do iTerm2, navegue até perfil > cores e certifique-se de que as cores de Basic Colors > Background e ANSI Colors > Bright Black sejam diferentes .
ZSH_AUTOSUGGEST_STRATEGY
é um array que especifica como as sugestões devem ser geradas. As estratégias do array são tentadas sucessivamente até que uma sugestão seja encontrada. Existem atualmente três estratégias integradas para escolher:
history
: escolhe a partida mais recente do histórico.completion
: escolhe uma sugestão com base no que a conclusão da guia sugeriria. (requer módulo zpty
, que está incluído no zsh desde 4.0.1)match_prev_cmd
: Semelhante history
, mas escolhe a correspondência mais recente cujo item de histórico anterior corresponde ao comando executado mais recentemente (mais informações). Observe que esta estratégia não funcionará conforme esperado com opções ZSH que não preservam a ordem do histórico, como HIST_IGNORE_ALL_DUPS
ou HIST_EXPIRE_DUPS_FIRST
. Por exemplo, a configuração ZSH_AUTOSUGGEST_STRATEGY=(history completion)
primeiro tentará encontrar uma sugestão do seu histórico, mas, se não conseguir encontrar uma correspondência, encontrará uma sugestão do mecanismo de conclusão.
Este plugin funciona acionando um comportamento personalizado quando certos widgets zle são invocados. Você pode adicionar e remover widgets desses arrays para alterar o comportamento deste plugin:
ZSH_AUTOSUGGEST_CLEAR_WIDGETS
: Os widgets nesta matriz limparão a sugestão quando invocados.ZSH_AUTOSUGGEST_ACCEPT_WIDGETS
: Os widgets nesta matriz aceitarão a sugestão quando invocados.ZSH_AUTOSUGGEST_EXECUTE_WIDGETS
: Os widgets nesta matriz executarão a sugestão quando invocados.ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS
: Os widgets nesta matriz aceitarão parcialmente a sugestão quando invocados.ZSH_AUTOSUGGEST_IGNORE_WIDGETS
: Os widgets nesta matriz não acionarão nenhum comportamento personalizado.Widgets que modificam o buffer e não são encontrados em nenhum desses arrays buscarão uma nova sugestão após serem invocados.
Nota: Um widget não deve pertencer a mais de um dos arrays acima.
Defina ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE
como um valor inteiro para desabilitar a sugestão automática para buffers grandes. O padrão é não definido, o que significa que a sugestão automática será tentada para qualquer tamanho de buffer. O valor recomendado é 20. Isso pode ser útil ao colar uma grande quantidade de texto no terminal, para evitar o acionamento da sugestão automática para strings muito longas.
As sugestões são buscadas de forma assíncrona por padrão nas versões zsh 5.0.8 e superiores. Para desativar sugestões assíncronas e buscá-las de forma síncrona, unset ZSH_AUTOSUGGEST_USE_ASYNC
após obter o plug-in.
Alternativamente, se você estiver usando uma versão do zsh anterior a 5.0.8 e quiser habilitar o modo assíncrono, defina a variável ZSH_AUTOSUGGEST_USE_ASYNC
após obter o plugin (ela pode ser definida como qualquer coisa). Observe que há um bug nas versões do zsh anteriores a 5.0.8, onde ctrl + c falhará ao redefinir o prompt imediatamente após buscar uma sugestão de forma assíncrona.
Defina ZSH_AUTOSUGGEST_MANUAL_REBIND
(pode ser definido como qualquer coisa) para desativar a religação automática do widget em cada pré-cmd. Isso pode ser um grande aumento no desempenho, mas você mesmo precisará lidar com a religação se alguma das listas de widgets for alterada ou se você ou outro plug-in agrupar qualquer um dos widgets de sugestão automática. Para vincular novamente os widgets, execute _zsh_autosuggest_bind_widgets
.
Defina ZSH_AUTOSUGGEST_HISTORY_IGNORE
como um padrão glob para evitar oferecer sugestões para entradas de histórico que correspondam ao padrão. Por exemplo, defina-o como "cd *"
para nunca sugerir nenhum comando cd
do histórico. Ou defina como "?(#c50,)"
para nunca sugerir nada com 50 caracteres ou mais.
Observação: isso afeta apenas as estratégias de sugestão history
e match_prev_cmd
.
Defina ZSH_AUTOSUGGEST_COMPLETION_IGNORE
como um padrão glob para evitar a oferta de sugestões de conclusão quando o buffer corresponder a esse padrão. Por exemplo, defina-o como "git *"
para desabilitar sugestões de conclusão para subcomandos git.
Observação: isso afeta apenas a estratégia de sugestão completion
.
Este plugin fornece alguns widgets que você pode usar com bindkey
:
autosuggest-accept
: Aceita a sugestão atual.autosuggest-execute
: Aceita e executa a sugestão atual.autosuggest-clear
: Limpa a sugestão atual.autosuggest-fetch
: busca uma sugestão (funciona mesmo quando as sugestões estão desativadas).autosuggest-disable
: Desativa sugestões.autosuggest-enable
: Reativa sugestões.autosuggest-toggle
: Alterna entre sugestões habilitadas/desabilitadas.Por exemplo, isso vincularia ctrl + espaço para aceitar a sugestão atual.
bindkey ' ^ ' autosuggest-accept
Se você tiver um problema, pesquise na lista de problemas no GitHub para ver se alguém já o relatou.
Antes de relatar um problema, tente desabilitar temporariamente seções de sua configuração e outros plug-ins que possam estar em conflito com este plug-in para isolar o problema.
Ao relatar um problema, inclua:
.zshrc
que reproduzirá o problema. Veja este comentário para um bom exemplo do que isso significa.zsh --version
) Remova o código que faz referência a este plugin de ~/.zshrc
.
Remova o repositório git do seu disco rígido
rm -rf ~ /.zsh/zsh-autosuggestions # Or wherever you installed
Edite os arquivos de origem em src/
. Execute make
para construir zsh-autosuggestions.zsh
a partir desses arquivos de origem.
Solicitações pull são bem-vindas! Se você enviar uma solicitação pull, por favor:
develop
( NÃO master
) Os testes são escritos em Ruby usando o framework rspec
. Eles usam tmux
para controlar um pseudoterminal, enviando pressionamentos de teclas simulados e fazendo afirmações sobre o conteúdo do terminal.
Os arquivos de teste ficam em spec/
. Para executar os testes, execute make test
. Para executar um teste específico, execute TESTS=spec/some_spec.rb make test
. Você também pode especificar um binário zsh
para usar definindo a variável de ambiente TEST_ZSH_BIN
(ex: TEST_ZSH_BIN=/bin/zsh make test
).
É possível executar os testes para qualquer versão suportada do zsh em uma imagem Docker construindo uma imagem a partir do Dockerfile fornecido. Para construir a imagem docker para uma versão específica do zsh (onde <version>
abaixo é substituído pelo conteúdo de uma linha do arquivo ZSH_VERSIONS
), execute:
docker build --build-arg TEST_ZSH_VERSION= < version > -t zsh-autosuggestions-test .
Após construir a imagem, execute os testes via:
docker run -it -v $PWD :/zsh-autosuggestions zsh-autosuggestions-test make test
Este projeto está licenciado sob licença do MIT. Para o texto completo da licença, consulte o arquivo LICENSE.