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
iskeyword=@,48-57,_,192-255
Je l'ai ensuite réglé à cela plus les caractères supplémentaires ci-dessus
:set iskeyword=@,48-57,_,192-255,{,},,,(,),^
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:
:set iskeyword+={,},,,(,),^
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 taper 01n
ou myvalue
et le développer {0,1}^n
, mais uniquement lorsque 01n
ou myvalue
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)
We find that the value 01n|
Et puis vous frappez EscouSpace ou Tabou déplacez les curseurs, le texte est remplacé, et vous avez (exemple pour utiliser l'espace)
We find that the value {0,1}^n |
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.
: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
.