Autosuggestions rapides/discrètes semblables à celles d'un poisson pour zsh.
Il suggère des commandes au fur et à mesure que vous tapez, en fonction de l'historique et des complétions.
Exigences : Zsh v4.3.11 ou version ultérieure
Voir INSTALL.md.
Lorsque vous tapez des commandes, vous verrez une complétion proposée après le curseur dans une couleur grise atténuée. Cette couleur peut être modifiée en définissant la variable ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE
. Voir configuration.
Si vous appuyez sur la touche → (widget forward-char
) ou End (widget end-of-line
) avec le curseur à la fin du tampon, il acceptera la suggestion, remplaçant le contenu du tampon de ligne de commande par la suggestion.
Si vous invoquez le widget forward-word
, il acceptera partiellement la suggestion jusqu'au point où le curseur se déplace.
Vous souhaiterez peut-être remplacer les variables de configuration globales par défaut. Les valeurs par défaut de ces variables peuvent être trouvées ici.
Remarque : Si vous utilisez Oh My Zsh, vous pouvez placer cette configuration dans un fichier du répertoire $ZSH_CUSTOM
. Voir leurs commentaires sur les composants internes prioritaires.
Définissez ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE
pour configurer le style avec lequel la suggestion est affichée. La valeur par défaut est fg=8
, ce qui définira la couleur de premier plan sur la couleur 8 de la palette de 256 couleurs. Si votre terminal ne prend en charge que 8 couleurs, vous devrez utiliser un nombre compris entre 0 et 7.
La couleur d’arrière-plan peut également être définie et la suggestion peut être en gras, soulignée ou remarquable. Par exemple, cela afficherait des suggestions avec du texte rose en gras, souligné sur fond cyan :
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE= " fg=#ff00ff,bg=cyan,bold,underline "
Pour plus d'informations, lisez la section Mise en évidence des personnages du manuel zsh : man zshzle
ou en ligne.
Remarque : Certains utilisateurs d'iTerm2 ont signalé ne pas pouvoir voir les suggestions. Si cela vous concerne, le problème est probablement dû à des paramètres de couleur incorrects. Afin de corriger cela, accédez aux paramètres d'iTerm2, accédez à Profil > Couleurs et assurez-vous que les couleurs de Couleurs de base > Couleurs d'arrière-plan et ANSI > Noir brillant sont différentes .
ZSH_AUTOSUGGEST_STRATEGY
est un tableau qui spécifie comment les suggestions doivent être générées. Les stratégies du tableau sont essayées successivement jusqu'à ce qu'une suggestion soit trouvée. Il existe actuellement trois stratégies intégrées parmi lesquelles choisir :
history
: Choisit la correspondance la plus récente de l’historique.completion
: choisit une suggestion en fonction de ce que suggérerait la complétion de l'onglet. (nécessite le module zpty
, qui est inclus avec zsh depuis 4.0.1)match_prev_cmd
: Comme history
, mais choisit la correspondance la plus récente dont l'élément d'historique précédent correspond à la commande la plus récemment exécutée (plus d'informations). Notez que cette stratégie ne fonctionnera pas comme prévu avec les options ZSH qui ne préservent pas l'ordre de l'historique, telles que HIST_IGNORE_ALL_DUPS
ou HIST_EXPIRE_DUPS_FIRST
. Par exemple, définir ZSH_AUTOSUGGEST_STRATEGY=(history completion)
tentera d'abord de trouver une suggestion de votre historique, mais, s'il ne trouve pas de correspondance, trouvera une suggestion du moteur de complétion.
Ce plugin fonctionne en déclenchant un comportement personnalisé lorsque certains widgets zle sont invoqués. Vous pouvez ajouter et supprimer des widgets de ces tableaux pour modifier le comportement de ce plugin :
ZSH_AUTOSUGGEST_CLEAR_WIDGETS
: les widgets de ce tableau effaceront la suggestion lorsqu'ils seront invoqués.ZSH_AUTOSUGGEST_ACCEPT_WIDGETS
: les widgets de ce tableau accepteront la suggestion lorsqu'ils seront invoqués.ZSH_AUTOSUGGEST_EXECUTE_WIDGETS
: les widgets de ce tableau exécuteront la suggestion lorsqu'ils seront invoqués.ZSH_AUTOSUGGEST_PARTIAL_ACCEPT_WIDGETS
: les widgets de ce tableau accepteront partiellement la suggestion lorsqu'ils seront invoqués.ZSH_AUTOSUGGEST_IGNORE_WIDGETS
: les widgets de ce tableau ne déclencheront aucun comportement personnalisé.Les widgets qui modifient le tampon et ne se trouvent dans aucun de ces tableaux récupéreront une nouvelle suggestion après avoir été invoqués.
Remarque : Un widget ne doit pas appartenir à plus d'un des tableaux ci-dessus.
Définissez ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE
sur une valeur entière pour désactiver la suggestion automatique pour les tampons volumineux. La valeur par défaut n'est pas définie, ce qui signifie que la suggestion automatique sera tentée pour n'importe quelle taille de tampon. La valeur recommandée est 20. Cela peut être utile lors du collage d'une grande quantité de texte dans le terminal, pour éviter de déclencher l'autosuggestion pour des chaînes trop longues.
Les suggestions sont récupérées de manière asynchrone par défaut dans les versions zsh 5.0.8 et supérieures. Pour désactiver les suggestions asynchrones et les récupérer de manière synchrone, unset ZSH_AUTOSUGGEST_USE_ASYNC
après avoir recherché le plugin.
Alternativement, si vous utilisez une version de zsh antérieure à 5.0.8 et que vous souhaitez activer le mode asynchrone, définissez la variable ZSH_AUTOSUGGEST_USE_ASYNC
après avoir recherché le plugin (elle peut être définie sur n'importe quoi). Notez qu'il existe un bug dans les versions de zsh antérieures à 5.0.8 où ctrl + c ne parviendra pas à réinitialiser l'invite immédiatement après avoir récupéré une suggestion de manière asynchrone.
Définissez ZSH_AUTOSUGGEST_MANUAL_REBIND
(il peut être défini sur n'importe quoi) pour désactiver la re-reliure automatique des widgets sur chaque precmd. Cela peut améliorer considérablement les performances, mais vous devrez gérer vous-même la re-liaison si l'une des listes de widgets change ou si vous ou un autre plugin encapsulez l'un des widgets de suggestion automatique. Pour relier à nouveau les widgets, exécutez _zsh_autosuggest_bind_widgets
.
Définissez ZSH_AUTOSUGGEST_HISTORY_IGNORE
sur un modèle global pour éviter de proposer des suggestions d'entrées d'historique qui correspondent au modèle. Par exemple, définissez-le sur "cd *"
pour ne jamais suggérer de commandes cd
de l'historique. Ou définissez-le sur "?(#c50,)"
pour ne jamais suggérer quoi que ce soit de 50 caractères ou plus.
Remarque : Cela affecte uniquement les stratégies de suggestion history
et match_prev_cmd
.
Définissez ZSH_AUTOSUGGEST_COMPLETION_IGNORE
sur un modèle global pour éviter de proposer des suggestions d'achèvement lorsque le tampon correspond à ce modèle. Par exemple, définissez-le sur "git *"
pour désactiver les suggestions de complétion pour les sous-commandes git.
Remarque : Cela affecte uniquement la stratégie de suggestion completion
.
Ce plugin fournit quelques widgets que vous pouvez utiliser avec bindkey
:
autosuggest-accept
: Accepte la suggestion actuelle.autosuggest-execute
: Accepte et exécute la suggestion actuelle.autosuggest-clear
: Efface la suggestion actuelle.autosuggest-fetch
: récupère une suggestion (fonctionne même lorsque les suggestions sont désactivées).autosuggest-disable
: désactive les suggestions.autosuggest-enable
: réactive les suggestions.autosuggest-toggle
: bascule entre les suggestions activées/désactivées.Par exemple, cela lierait ctrl + espace pour accepter la suggestion actuelle.
bindkey ' ^ ' autosuggest-accept
Si vous rencontrez un problème, veuillez parcourir la liste des problèmes sur GitHub pour voir si quelqu'un d'autre l'a déjà signalé.
Avant de signaler un problème, essayez de désactiver temporairement les sections de votre configuration et les autres plugins susceptibles d'être en conflit avec ce plugin afin d'isoler le problème.
Lorsque vous signalez un problème, veuillez inclure :
.zshrc
la plus petite et la plus simple qui reproduira le problème. Voir ce commentaire pour un bon exemple de ce que cela signifie.zsh --version
) Supprimez le code faisant référence à ce plugin de ~/.zshrc
.
Supprimez le référentiel git de votre disque dur
rm -rf ~ /.zsh/zsh-autosuggestions # Or wherever you installed
Modifiez les fichiers sources dans src/
. Exécutez make
pour créer zsh-autosuggestions.zsh
à partir de ces fichiers sources.
Les demandes de tirage sont les bienvenues ! Si vous envoyez une pull request, veuillez :
develop
( PAS master
) Les tests sont écrits en Ruby en utilisant le framework rspec
. Ils utilisent tmux
pour piloter un pseudoterminal, envoyant des frappes simulées et faisant des assertions sur le contenu du terminal.
Les fichiers de test vivent dans spec/
. Pour exécuter les tests, exécutez make test
. Pour exécuter un test spécifique, exécutez TESTS=spec/some_spec.rb make test
. Vous pouvez également spécifier un binaire zsh
à utiliser en définissant la variable d'environnement TEST_ZSH_BIN
(ex : TEST_ZSH_BIN=/bin/zsh make test
).
Il est possible d'exécuter les tests pour n'importe quelle version prise en charge de zsh dans une image Docker en créant une image à partir du fichier Docker fourni. Pour créer l'image Docker pour une version spécifique de zsh (où <version>
ci-dessous est remplacé par le contenu d'une ligne du fichier ZSH_VERSIONS
), exécutez :
docker build --build-arg TEST_ZSH_VERSION= < version > -t zsh-autosuggestions-test .
Après avoir construit l'image, exécutez les tests via :
docker run -it -v $PWD :/zsh-autosuggestions zsh-autosuggestions-test make test
Ce projet est sous licence MIT. Pour le texte complet de la licence, consultez le fichier LICENSE.