Annuler l'achèvement de l'onglet zsh

10

Existe-t-il un moyen d'annuler une fin une fois qu'elle a été lancée? J'appuie parfois sottement sur tab pour compléter automatiquement les cibles de création (uniquement par pure indolence), puis je dois attendre plus longtemps que si je venais de taper moi-même "installer" ou "vérifier".

Je n'ai rien vu de notable dans la page de manuel de zshzle, mais peut-être que j'ai raté quelque chose? D'autres obus ont-ils cette capacité?

EDIT : réponse triviale. Donc à la place: existe-t-il un moyen pour zsh d'estimer que la complétion de l'onglet prendrait un temps relativement long à exécuter et à la place de demander si l'utilisateur souhaite que cela soit fait?

Zorawar
la source
2
ctrl-cne fonctionne pas?
llua
1
Bon sang, ça le fait! Cela ne m'est pas venu à l'esprit pour une raison quelconque. Je suppose que je pensais que Ctrl-C aurait fait quelque chose de plus dramatique. Supprimer la question? (Ou peut-être que vous voulez un représentant?)
Zorawar
1
Je ne pense pas qu'il existe un moyen d'estimer le temps qu'il faut pour terminer un onglet. Vous pouvez mettre en cache les résultats, mais c'est probablement tout.
Ulrich Dangel
1
@zorawar, j'essaie juste d'aider, pas d'obtenir le meilleur score:]
llua
1
ctrl-c ne fonctionne pas pour tous les mécanismes d'achèvement de zsh. Si quelqu'un connaît d'autres moyens d'y mettre un terme. Ce serait formidable d'avoir cette réponse ici.
xer0x

Réponses:

7

Un SIGINT interrompt l'opération de fin en cours et vous ramène à l'éditeur de ligne. Appuyez donc sur Ctrl+ C. L'effet peut ne pas être immédiat: l'interpréteur ne vérifie que les signaux à certains moments de l'exécution (ils sont cependant fréquents), et le signal peut prendre un certain temps si le processus zsh est bloqué dans un appel système (par exemple, s'il est attendre qu'un système de fichiers réponde).

Malheureusement, si vous appuyez sur Ctrl+ Cau mauvais moment et qu'aucune opération n'est en cours au moment où le signal est délivré, votre ligne de commande actuelle sera annulée. C'est difficile à résoudre sans avoir deux clés d'interruption différentes, une pour l'achèvement et une pour le reste, et je ne suis pas sûr que zsh le supporte.

Il n'est pas vraiment possible de vous avertir si un achèvement peut prendre du temps. La vitesse d'une fonction d'achèvement est souvent principalement déterminée par la vitesse à laquelle certaines informations peuvent être lues à partir du système de fichiers; que ces informations soient dans le cache ou non, combien il y en a et de quel type de système de fichiers il s'agit (par exemple, disque virtuel, disque dur ou montage NFS) a beaucoup d'influence.

Gilles 'SO- arrête d'être méchant'
la source
1
Peut-être qu'un délai configurable pour l'achèvement de l'onglet serait un défaut sain.
antiduh
3

Vous pouvez utiliser ctrl+ kpour annuler l'auto-complétion. cependant, je ne trouve pas non plus d'informations dans le guide zsh , mais cela annule la complétion automatique.

j_tt2011
la source