Question

J'ai récemment commencé à utiliser Vim comme éditeur de texte et je travaille actuellement sur mes propres personnalisations.

Je suppose que les mappages de clavier peuvent faire à peu près tout, mais pour le moment, je les utilise presque exclusivement comme une sorte de fonction d'extraits de code.

Ainsi, par exemple, si je tape def{TAB} (:imap def{TAB} def ():<ESC>3ha), il s'étend à :

def |(): # '|' represents the caret

Cela fonctionne comme prévu, mais je trouve cela ennuyeux lorsque Vim attend une commande complète pendant que je tape un mot contenant "def" et que je ne suis pas intéressé à le développer.

  • Existe-t-il un moyen d'éviter cela ou d'utiliser cette fonction plus efficacement à cette fin ?
  • Existe-t-il une autre fonctionnalité de Vim mieux adaptée à cela ?

Après avoir jeté un rapide coup d'oeil à ExtraitsEmu, il semble que ce soit la meilleure option et beaucoup plus facile à personnaliser que je ne le pensais au départ.

Pour continuer avec l'exemple précédent :

:Snippet def <{}>():

Une fois défini, vous pouvez développer votre extrait en tapant def{TAB}.

Était-ce utile?

La solution

ExtraitsEmu est un plugin d'extraits de code utile.

Autres conseils

Snipmate - comme texmate :)http://www.vim.org/scripts/script.php?script_id=2540

vidéo:http://vimeo.com/3535418

snippet def 
     """ ${1:docstring} """
     def ${2:name}:
         return ${3:value}

Comme autre suggestion (bien que légèrement différente) utilisant la fonctionnalité intégrée de vim :

:iabbrev def def(): #<LEFT><LEFT><LEFT><LEFT><LEFT>

Désormais, chaque fois que vous tapez def suivi d'un espace ou d'un autre caractère autre qu'un mot, il se développera de la même manière que ce que vous avez donné comme sortie de SnippetsEmu (l'espace provient de l'espace que vous avez entré pour déclencher l'achèvement).

Cette approche ne souffre pas du problème de « décalage » que vous avez rencontré avec :inoremap et est intégrée à vim.Pour plus d'informations sur cette fonctionnalité, consultez :help abbrev.

Vous craignez peut-être qu'en étant déclenché par l'espace et non par la tabulation, il se déclenche inutilement, mais en général, vim est assez intelligent quant au moment de le déclencher.Le problème peut être atténué en activant l'abréviation uniquement pour certains types de fichiers (par exemple, python) :

au filetype python :iabbrev ... etc

Snip[ets] (Manager|Emu|Mate|.vim) est bien sûr aussi une solution parfaite, mais il est bon de connaître les alternatives (surtout lorsqu'elles sont intégrées).

Si SnippetsEmu est trop lourd ou ambitieux pour ce dont vous avez besoin (c'était pour moi), j'ai écrit un plugin qui gère les extraits en fonction du type de fichier.Il y a même une complétion par onglet lors de la sélection de l'extrait !:)

Obtenez-le ici: extraits.vim

je viens d'installer UltiSnips.Il existe un bon article qui explique pourquoi vous pourriez choisir UltiSnips : Pourquoi UltiSnips ?

Je n'ai utilisé aucun des autres plugins d'extraits de code ;J'ai décidé de franchir le pas avec un modèle qui semblait complet et qui serait capable de m'adapter à mesure que j'acquérais plus de compétences Vim et que je souhaitais faire des choses plus sophistiquées.

Comme l'a noté MDCore, ExtraitsEmu est un script Vim populaire qui fait exactement cela et bien plus encore.Si vous avez seulement besoin de développer (sans reculer le curseur), vous pouvez utiliser la norme :ab[breviate] commande.

:ab[breviate] [<expr>] {lhs} {rhs}
        add abbreviation for {lhs} to {rhs}.  If {lhs} already
        existed it is replaced with the new {rhs}.  {rhs} may
        contain spaces.
        See |:map-<expr>| for the optional <expr> argument.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top