J'ai un petit désagrément avec la façon dont zsh
fait des suggestions complètes pour mes commandes.
Si je tape le début d'une commande que je n'ai pas installée et que j'appuie, tab
elle suggérera la fonction d'achèvement qui est installée.
Disons que je veux exécuter, vim
mais il n'est pas installé, il suggérera _vim
.
Y a-t-il un moyen de désactiver cela? Ou ai-je fait quelque chose de mal dans ma configuration?
Tous mes fichiers dot sont publics sur github.com/henrikbjorn/castle
.
zsh
autocomplete
Henrik Bjørnskov
la source
la source
Réponses:
Par défaut, le moteur de complétion de zsh essaie seulement d'ajouter quelque chose à ce que vous tapez. Vous l'avez configuré pour essayer également d'ajouter un préfixe. Le moteur de configuration de complétion interactive simple (
compinstall
) offre ceci sous "contrôle de correspondance → complétion de sous-chaîne". Cela insère une ligne comme celle-ci dans votre.zshrc
:Les
zstyle
paramètres intégrés définissent (principalement) les paramètres d'achèvement. Lematcher-list
style d'achèvement est une liste de façons d'essayer successivement, s'arrêtant lorsqu'il y a au moins une correspondance. La chaîne vide signifie l'achèvement par défaut (suffixes uniquement). L' incantation de contrôle de correspondancel:|=* r:|=*
signifie essayer une correspondance de préfixe*
et une correspondance de suffixe*
, c'est-à-dire n'importe quel préfixe et suffixe.Vous pouvez interdire
_
complètement les préfixes commençant par . Cela permet toujours l'achèvement des mots commençant par_
et l'achèvement en ajoutant un préfixe, mais le préfixe peut ne pas commencer par_
.Cela s'applique à toutes les finitions, pas seulement aux finitions de noms de commandes. Je ne sais pas comment restreindre cela aux noms de commandes.
Il devrait y avoir un moyen d'exclure plus précisément les noms de commande commençant par
_
, mais je ne sais pas comment. Un premier départ est avec leignored-patterns
style d'achèvement.Cela exclut les correspondances commençant par
_
; cependant, s'il n'y a pas de correspondance, zsh réessaye sans ignorer les règles. L'avantage de cela est que si la commande a commencé avec un trait de soulignement en premier lieu, elle sera terminée lors de cette deuxième passe. La mauvaise partie est que zsh essaiera donc d'ajouter un trait de soulignement de toute façon s'il n'y a pas de correspondance, donc si vous avezvi
etview
mais pas envim
appuyant sur Tabaprèsvi
, vous proposerezvi
etview
mais pas_vim
, mais si vous tapez, lavim
complétion sera proposée_vim
.la source
ignore-patterns
fonctionne très bien pour moi, même s'il n'y a pas de correspondance. Je devais juste m'assurer quecompleter
ça ne contient pas_ignored
.