Comment créer de courts extraits dans Vim?
J'ai récemment commencé à utiliser Vim comme mon éditeur de texte et je suis actuellement en train de travailler sur mes propres personnalisations.
Je suppose clavier mappages peuvent faire à peu près tout, mais pour le moment, je suis en les utilisant comme une sorte de fragments de facilité presque exclusivement.
Ainsi, par exemple, si je tape def{TAB}
(:imap def{TAB} def ():<ESC>3ha
), il s'affiche:
def |(): # '|' represents the caret
Cela fonctionne comme prévu, mais je trouve que c'est gênant quand Vim attend une commande complète alors que je suis en tapant un mot contenant "def" et ne suis pas intéressé par l'élargissant.
- Est-il un moyen de les éviter ou de les utiliser cette fonction de manière plus efficace à cette fin?
- Est tout autre Vim fonctionnalité plus adapté pour cela?
Après avoir pris un rapide coup d'oeil à SnippetsEmu, on dirait que c'est la meilleure option et beaucoup plus facile à personnaliser que je ne le pensais.
Pour continuer avec l'exemple précédent:
:Snippet def <{}>():
Une fois défini, vous pouvez élargir votre extrait de code en tapant def{TAB}
.
- Peut-être que les macros serait mieux adapté pour les courts extraits?
Vous devez vous connecter pour publier un commentaire.
SnippetsEmu est utile snippets plugin.
Snipmate - comme texmate 🙂
http://www.vim.org/scripts/script.php?script_id=2540
vidéo:
http://vimeo.com/3535418
Comme une autre suggestion (bien que légèrement différente) à l'aide de vim est une fonctionnalité intégrée:
Maintenant, chaque fois que vous tapez def suivi d'un espace ou autre caractère non alphabétique, il s'étendra à la même chose que ce que vous avez donné à la sortie de SnippetsEmu (l'espace vient de l'espace que vous avez entré pour le déclenchement de l'achèvement).
Cette approche de ne pas subir le "lag" problème que vous rencontré dans l'utilisation :inoremap, et est intégré dans vim. Pour plus d'informations sur cette fonctionnalité, regardez
:help abbrev
.Vous pouvez être préoccupé de ce que qui a été déclenché par l'espace onglet pas il va déclencher inutilement, mais en général, vim est assez intelligent pour savoir quand déclencher. La question peut en outre être atténués par l'activation de l'abréviation seulement pour certains types de fichiers (par exemple, python):
Snip[ets] (Manager|Emu|Mate|.vim) est également une solution parfaite, mais c'est agréable d'être au courant des alternatives (en particulier quand ils sont construits dans).
Si SnippetsEmu est trop lourd ou trop ambitieux pour ce qu'il vous faut (pour moi), j'ai écrit un plugin qui gère les extraits de code, basé sur le type de fichier. Il a même onglet achèvement lors de la prise de l'extrait de code! 🙂
L'obtenir ici: des extraits.vim
Je viens d'installer UltiSnips. Il y a un bon article qui explique pourquoi vous pouvez choisir UltiSnips: Pourquoi UltiSnips?
Je n'ai pas utilisé l'un de l'autre extrait de plugins; j'ai décidé de franchir le pas avec un sujet qui semble complet et serait en mesure de me répondre comme je l'ai gagner plus de Vim compétences et l'envie de faire plus sophistiqué des choses.
Comme l'a noté MDCore, SnippetsEmu populaire est un script Vim qui fait exactement cela et plus encore. Si vous avez besoin seulement d'étendre (sans déplacement de retour l'accent circonflexe), vous pouvez utiliser la norme
:ab[breviate]
commande.