2008-09-10 14 views
5

Au fur et à mesure que je développe plus avec vim, je me retrouve à vouloir copier des blocs de code utiles, similaires aux "templates" dans Eclipse.Quelle est la meilleure stratégie pour les morceaux de code et les macros dans vim?

Je pensais faire un fichier distinct pour chaque morceau de code et il suffit de les lire avec

:r code-fornext 

mais que tout semble un peu primitif. Googler autour je trouve les macros de vim mentionnées et quelque chose au sujet des "cartes" mais rien qui semble simple.

Ce que je cherche, par exemple, quelque chose comme les "Templates" d'Eclipse, donc je saute dans un morceau de code avec le curseur assis au milieu de celui-ci. Ou les "macros" de JEdit que je peux enregistrer en effectuant des suppressions compliquées et en les renommant sur une ligne, alors je peux les rejouer sur 10 autres lignes donc ça leur fait la même chose.

Est-ce que vim a quelque chose comme ces deux fonctionnalités?

Répondre

8

Pour enregistrer des macros dans Vim, en mode de commande, appuyez sur la touche q et sur une autre touche à laquelle vous souhaitez attribuer la macro. Pour les macros à jet rapide, je clique généralement sur qq et j'affecte la macro à la touche q. Une fois que vous êtes en mode d'enregistrement, exécutez vos frappes de touches. Lorsque vous avez terminé, assurez-vous de revenir en mode de commande et appuyez à nouveau sur q pour arrêter l'enregistrement. Ensuite, pour rejouer manuellement la macro, vous pouvez taper @q. Pour rejouer la macro exécuter précédemment, vous pouvez taper @@ ou pour exécuter 10 fois vous pouvez taper [email protected] ou [email protected], etc ..

En résumé:

+----------------------------------+-------------------------------------+ 
| start recording a macro   | qX (X = key to assign macro to)  | 
+----------------------------------+-------------------------------------+ 
| stop recording a macro   | q         | 
+----------------------------------+-------------------------------------+ 
| playback macro     | @X (X = key macro was assigned to) | 
+----------------------------------+-------------------------------------+ 
| replay previously played macro | @@         | 
+----------------------------------+-------------------------------------+ 

En ce qui concerne les morceaux de code, je l'ai trouvé et a commencé à utiliser un plug-in Vim appelé snipMate, qui imite la fonctionnalité des extraits de TextMate. Vous pouvez obtenir le plug-in ici:

http://www.vim.org/scripts/script.php?script_id=2540

Et un court article sur l'utilisation snipMate (avec une courte screencast montrant en cours d'utilisation):

http://www.catonmat.net/blog/vim-plugins-snipmate-vim/

espère que vous trouverez ce utile!

+0

@@ semble ne fonctionner que pour la version 7, mais je peux l'appeler avec @q dans la version 6, très utile, merci! –

0

Sur vim.wikia, vous trouverez un category of tips dédié à l'expansion des extraits et des abréviations. Vous verrez également une liste de plugins qui facilitent la définition de snippets/templates-files complexes.

HTH,