annuler complet

11

Habituellement, insérer le mode achèvement ( <C-n>) insère le bon mot la première fois que j'appuie <C-n>, mais pas toujours. Par conséquent, j'aimerais que Vim insère la correspondance qu'il juge la meilleure lorsque j'appuie sur <C-n>, mais permettez-moi quand même d'annuler cette insertion par la suite si la correspondance correcte n'apparaît pas ou est loin dans la liste.

Bien sûr, je pourrais coder ce comportement, mais j'ai le sentiment qu'il devrait y avoir une clé standard (-combinaison) pour ce faire. Quelqu'un peut-il m'indiquer la bonne direction?

Question bonus: existe-t-il une autre clé que je peux utiliser pour obtenir le match le plus long (comme c'était le cas avant de frapper <C-n>)?

Pour ce que ça vaut, j'utilise completeopt=menu

Octaviour
la source
1
Est ctrl-uce que vous cherchez?
statox
Non, ctrl-u semble supprimer toute la ligne. Je recherche une combinaison qui supprime uniquement le texte inséré en appuyant sur ctrl-n.
Octaviour
Ma première pensée a été "est-ce que cg ne fonctionne pas la touche d'annulation habituelle ici?", Puis j'ai réalisé que c'était emacs. Il y a quelques jours à peine que des années d'apprentissage m'ont corrompu, je vais me baigner dans une rivière sacrée et me purifier!
sundar

Réponses:

13

De :h complete_CTRL-E:

                                                        * complete_CTRL-E *
Lorsque l'achèvement est actif, vous pouvez utiliser CTRL-E pour l'arrêter et revenir au
texte tapé à l'origine. Le CTRL-E ne sera pas inséré.

De plus, si vous dites, apuis tapez ^Pet que vous obtenez une très longue liste, vous pouvez appuyer sur ^N pour revenir à votre texte d'origine avec la fenêtre de complétion toujours active. Vous pouvez ensuite taper des caractères supplémentaires pour réduire la liste d'achèvement.

Antony
la source
C'était précisément ce que je cherchais. Je n'avais pas réalisé que ctrl-p me ramènerait également à l'entrée d'origine. Merci.
Octaviour
2
@Octaviour, je trouve que ctrl-p est généralement plus utile que ctrl-n, car il recherche la correspondance la plus proche avant (plutôt qu'après) où vous êtes. Donc, si vous venez d'écrire un mot, ctrl-p vous montrerait rapidement le même mot si vous devez le répéter (par exemple en utilisant à nouveau la même variable dans le code)
Shahbaz
Oui, j'ai écrit ^Ppar habitude exactement pour cette raison.
Antony