<C-p>
et <C-n>
permettre l'achèvement des mots trouvés dans le document actuel.
Je prends des notes et écrire mot à dire {0,1}^n
et à (E,D)
plusieurs reprises. Ce sont des MOTS constitués de plusieurs mots.
Existe-t-il un moyen de compléter les mots avec <C-p>
et <C-n>
(ou toute autre ins-completion
commande connexe )?
autocompletion
Gonçalo Ribeiro
la source
la source
:abbreviate
place. Par exemple, exécutez la:ab 01n {0,1}^n
commande. Ensuite, chaque fois que vous tapez01n
en tant que mot indépendant en mode Insertion, il se développe en{0,1}^n
.ins-completion
.Réponses:
Insertion du mode d'achèvement avec Ctrl-n
Je ne sais pas si vous pourriez faire l'achèvement de WORD en dehors de l'écriture de votre propre fonction (comme omnifunc). Cependant, si cela ne vous dérange pas d'élargir ce qu'est un mot pour correspondre à vos caractères, vous pouvez ajouter ces caractères à 'iskeyword'
Par exemple, mon «iskeyword» par défaut est
Je l'ai ensuite réglé à cela plus les caractères supplémentaires ci-dessus
Cela ajoute
{
,}
,,
,(
,)
et^
aux personnages qui composent un mot (en plus de ce qui a déjà fait)Après cela, la saisie se
{
Ctrl-ntermine dans{0,1}^n
(dans un fichier contenant uniquement les deux exemples que vous avez donnés)Remarque: il serait préférable de faire un
:set iskeyword+=
avec juste les éléments supplémentaires, comme suit:De cette façon, vous laissez déjà tout ce qui constitue un mot-clé en ajoutant les nouveaux caractères au paramètre existant.
Extension avec abréviations
Bien que cela ne fasse pas partie de la question d'origine, une autre fonctionnalité similaire (ish) consiste à utiliser la fonctionnalité d'abréviation de nvi ou Vim. Contrairement à l'achèvement des mots clés, les abréviations n'ont pas à ressembler au texte final. Contrairement à l'achèvement des mots clés, les abréviations se développent automatiquement, au lieu de seulement lorsque vous les demandez. En fonction de votre objectif et de votre utilisation, cela peut économiser beaucoup de dactylographie et vous permettre de taper beaucoup de texte sans interrompre la demande de complétion.
Les abréviations sont bonnes pour un petit ensemble de mots clés et lorsque vous pouvez les définir à l'avance (elles ne sont pas découvertes dans votre texte comme l'achèvement des mots).
L'idée de base derrière les abréviations est que vous associez un WORD à un autre texte, et à chaque fois que l'éditeur détecte que vous avez tapé ce WORD (c'est-à-dire que le texte que vous avez tapé est entouré d'un espace blanc, où l'action de complétion ajoute le blanc après le mot-clé ou quitter le mode d'insertion), il est remplacé par cet autre texte.
Disons que votre fichier en contient
{0,1}^n
beaucoup et qu'il n'y en a pas d'autres variantes. Taper c'est un peu étirer le doigt, alors peut-être voulez-vous simplement taper01n
oumyvalue
et le développer{0,1}^n
, mais uniquement lorsque01n
oumyvalue
est un mot seul (c'est-à-dire, s'il apparaît dans un autre mot, ne le faites pas changes le).Dans nvi, vous pouvez le faire
:abbrev 01n {0,1}^n
. Vous pouvez faire de même dans Vim, mais je recommande d'utiliser:iabbrev 01n {0,1}^n
pour limiter l'expansion au mode insertion uniquement.Ensuite, si vous avez du texte (où
|
représente le curseur)Et puis vous frappez EscouSpace ou Tabou déplacez les curseurs, le texte est remplacé, et vous avez (exemple pour utiliser l'espace)
et vous pouvez continuer à taper sans interruption.
Ceci est généralement utilisé pour corriger automatiquement les fautes de frappe courantes (par exemple, changer «teh» en «the») mais il peut être également utile pour votre cas d'utilisation, en supposant à nouveau que cela ne vous dérange pas de configurer les mappages à l'avance.
la source
:set iskeyword+={,},,,(,),^
fonctionne comme prévu.abbreviate
meilleure façon de convenir à ce travail?