Ins-achèvement des WORD


13

<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}^net à (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-completioncommande connexe )?


1
Il vaut peut-être mieux utiliser à la :abbreviateplace. Par exemple, exécutez la :ab 01n {0,1}^ncommande. Ensuite, chaque fois que vous tapez 01nen tant que mot indépendant en mode Insertion, il se développe en {0,1}^n.
200_success

@ 200_success, merci. J'avais pensé aux abréviations mais je voulais quand même savoir si c'était possible avec ins-completion.
Gonçalo Ribeiro

Réponses:


5

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}^nbeaucoup 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 01nou myvalueet le développer {0,1}^n, mais uniquement lorsque 01nou myvalueest 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}^npour 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.


Il me semble que cela :set iskeyword+={,},,,(,),^fonctionne comme prévu.
Karl Yngve Lervåg

1
En effet. Lorsque je l'ai essayé la dernière fois, Vim ne cessait de me répéter que c'était une erreur de syntaxe. Ça devait être ailleurs. Mise à jour de ma réponse.
John O'M.

@ JohnO'M. pourriez-vous ajouter une référence sur la abbreviatemeilleure façon de convenir à ce travail?
Gonçalo Ribeiro

@ GonçaloRibeiro fait. J'espère que ça aide.
John O'M.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.