Utilisation de Vim lors du codage d'une application à grande échelle


17

Je commence à apprendre Vim et à suivre certains des conseils donnés ici dans stackexchange. Je commence à l'utiliser dans certains projets de jouets et je suis cool avec ça.
Mais j'ai commencé à me demander comment vous pouvez être productif sans ouvrir d'autres fichiers tout le temps juste pour savoir comment est le nom de cette classe, quelle est cette macro incluse dans un autre fichier, etc. etc.

Quels sont les conseils communs que vous pouvez donner?


1
Vous aurez certainement besoin d'ajouter des scripts Vim pour vous aider. J'utilise Vim pour programmer beaucoup, et j'utilise toujours des ctags pour m'aider à naviguer dans le code source. Quelle langue utilisez-vous?
tehnyit

Réponses:


10

Un aspect des programmeurs expérimentés qui passent d'un IDE à un environnement console / xterm est de trouver un remplacement pour l'indexation des objets de code source (noms de fonction, variables). Je crois que le terme général utilisé pour Visual Studio de Microsoft est Intellisense ou quelque chose comme ça.

Dans le monde Unix / Linux, comme vim, un outil utilisé si ctagsou l'implémentation Open Source multilingue populaire, des ctags exubérants . Il n'est pas vimspécifique et est pris en charge par un certain nombre d'éditeurs de texte Unix, Linux, MS Windows, Mac OS, y compris Emacs, CRiSP, vile et un certain nombre d'autres clones vi, nedit, gedit, JED, UltraEdit, BBEdit et DreamWeaver (certains d'entre eux sont via des plugins tiers).

Au-delà de cela, une bonne conception et une décomposition réfléchie, l'organisation de projets plus importants rend le projet gérable dans la mesure où il n'y a que 1-2 endroits potentiels évidents pour rechercher un bit d'information donné ( typedefou classdéfinitions, etc.).

J'utilise également plusieurs instances de vim (souvent via viewpour l'affichage en lecture seule des fichiers source), ainsi qu'une utilisation limitée de plusieurs tampons d'édition par instance de vim (principalement pour déplacer ou refactoriser le code entre les fichiers). Je trouve que l'utilisation de quelques fichiers source ouverts à la fois peut aider à sa manière, pour me concentrer sur la tâche à accomplir.


1
+1 pour avoir suggéré des ctags exubérants !
Attila O.

1
Je trouve que le simple fait d’organiser aide beaucoup. Si vous pouvez regarder un artefact dans la source et dire "Oh, cela doit être défini à cet endroit" alors les choses deviennent beaucoup plus simples. Du côté positif, le démarrage de sessions Vim est si rapide que le fait d'avoir une demi-douzaine ouverte à la fois devient une chose assez normale
Zachary K

@ZacharyK Une demi-douzaine? J'en ai généralement une douzaine complète d'ici la fin de la journée
Izkata

dépend du jour
Zachary K

7

Je n'ai pas l'intention de faire partie du débat VIM contre IDE. Je suppose que c'est une préférence personnelle. Mais j'utilise beaucoup de VIM et voici pourquoi je trouve très puissant d'utiliser vim

Deux parties de la réponse:

A. La plupart des choses que VIM permet la plupart des choses que vous pouvez faire avec les IDE, (je n'essaie pas de mettre toutes les fonctionnalités mais juste quelques-unes non évidentes qui rendent vi limité)

  1. vous pouvez parcourir les prototypes si vous avez ctagsactivé et faitesctrl+{

  2. Vous pouvez ouvrir plusieurs fenêtres simultanément avec la commande sing: sp 'filename'. Bien sûr, parfois j'ouvre simplement plusieurs terminaux pour vous faciliter la vie.

  3. Mise en évidence de la syntaxe puissante. Par défaut ainsi que d'autres choses. De plus, contrairement à certains IDE, s'il y a un décalage entre accolades ouvertes, chaîne ou ne correspond pas à celles fermées, vous donne une indication très claire. C'est pour la plupart des langues plutôt que spécifique.

  4. Vous pouvez exécuter la ligne de commande à l'aide de la commande ":!make"sans sortir de la fenêtre.

  5. Traversez beaucoup plus rapidement en fonction du mot, en fonction de la recherche (vi supporte regexp si vous êtes disponible), et vous pouvez parcourir { to } en utilisantESC %

  6. Il est possible de travailler dans GDB tout en faisant le débogage des étapes et en gardant vi (dans une autre fenêtre pour travailler sur le code). Lorsque vous décidez de modifier le fichier, vous pouvez le refaire et le recharger dans GDB.

B. Beaucoup de choses que vous trouvez mieux dans VIM

  1. La recherche et le remplacement sont nettement plus puissants.

  2. Vous pouvez créer votre apparence personnalisée et (noir + vert comme oppsed à blanc + bleu) et plus important encore votre propre commande puissante.

  3. Sélection de bloc vertical. Essayez de ctrl+vdéplacer le curseur verticalement. C'est vraiment une fonctionnalité inimaginable!

  4. Cela semble bizarre, mais essayez de couper / copier un bloc et de le coller 30 fois! Cela ne prend pas plus d'efforts que de le faire 1 fois. Essayez également de refaire (et non d'annuler) une activité une ou plusieurs fois.

  5. Indentation automatique, contrôle des onglets et moyen automatisé de convertir vos commentaires en commentaires de bloc ou en commentaires de style particulier.

  6. Conflit de fusion efficace avec vimdiff.

  7. La chose la plus importante avec un environnement de travail basé sur une console est que vous ne touchez jamais la souris! donc si vous êtes rapide sur le clavier, les IDE ne sont pas bons.

  8. Travaillez sur plusieurs machines, serveurs simultanément! Cela ne semble pas évident, mais parfois lorsque vous travaillez sur un serveur, vous vous connectez directement sur plusieurs machines et faites des choses.

Répondra sur la façon de faire dans vi si ces fonctionnalités sont sérieusement demandées. Voir ce site Vimcast . bien sûr, il y en a beaucoup.

Mais oui, la plupart des trucs sur console sont démodés, et en aucun cas je ne dis rien contre les IDE.


Petite remarque: vim a une :makecommande intégrée, vous n'avez même pas besoin de la !(qui, pour ceux qui n'utilisent pas vim, exécute une commande sur le terminal). Et je viens de trouver il y ctrl-va quelques semaines et maintenant je l'utilise constamment, c'est incroyablement utile.
Kevin

@Kevin - ok je ne connaissais pas <code>: make </code>! C'était excitant à savoir. C'est une sorte de romance que vous obtenez avec VIM - on ne peut jamais faire une liste complète des fonctionnalités que VIM peut vous laisser faire !! Cela vous surprend toujours. Merci.
Dipan Mehta

Ouais, c'est super comme ça. L'avantage :makeest qu'il vous déplace automatiquement vers la première erreur, et vous pouvez les parcourir avec cnet cp, voir :help make. En fait, je ne m'en suis pas rendu compte jusqu'à ce que je le regarde; Je fais habituellement dans une fenêtre et un pwd différents, il semble que vous devez être dans le même que le Makefile, bien que vous puissiez en mettre un dans le répertoire src juste pour passer à la racine et y faire.
Kevin

4

À mon avis, Vim vous offre un éditeur très puissant avec des fonctionnalités de base, mais c'est à vous de le pimenter avec des scripts / addons que vous utiliserez très probablement dans vos projets. Celles-ci seront probablement différentes selon que vous éditez principalement des scripts, de la documentation ou des fichiers qui doivent être compilés.

À titre d'exemple, je l' utilise zencodingpour l'édition html / css occasionnelle, snipmatepour TextMate comme des extraits et quelques add-ons en rapport avec Python ( pyflakes, pep8, vimpdb, etc.) pour le codage Python, qui est ce que je fais le plus souvent.

Ensuite, il y a d'autres extensions que je n'utilise pas souvent, mais je les trouve toujours utiles de temps en temps, comme Dpasteet ConqueTerm.

Pourtant, pour moi, les fonctionnalités les plus utiles de Vim sont intégrées (annulation basée sur le temps, navigation rapide, filtres de plage, etc.) - des choses que je n'ai pas pu trouver (ou du moins ne sont pas si faciles d'accès ) dans les IDE. Ainsi, une fois que vous avez configuré votre Vim pour avoir les éléments et les éléments d'un IDE dont vous avez vraiment besoin ( snipmate, ctags...), vous pouvez tirer parti des environnements IDE et console.

Mon utilisation de Vim est uniquement sur console, donc je ne peux pas dire à quel point ces outils sont utiles avec Gvim.

Malgré tous les avantages de l'addon, cependant, je me retrouve toujours à courir !grep ...ou de ^Z + find ...temps en temps.


3

Je fais toute ma programmation dans vim. En fait, je trouve cela plus facile que n'importe quel IDE que j'ai utilisé. Vous pouvez ouvrir plusieurs fichiers en même temps, même sur le même écran (rechercher des onglets et des fenêtres). Je travaille généralement sous X, j'ai donc plusieurs (6) écrans xterm ouverts: un pour les fichiers c dans vim (plusieurs dans les onglets), un autre pour les en-têtes dans vim (également des onglets) et des fenêtres non-vim: build, debug , configuration, etc. Même lorsque je suis sur une console pure, je peux utiliser les onglets, les fenêtres et le pliage de code pour voir ce dont j'ai besoin, et je peux créer et même afficher des pages de manuel sans quitter vim, il vous suffit de connaître le bonnes commandes. Et il y en a tellement, je suis sûr que je n'en ai même pas maîtrisé la moitié. Et il est difficile de battre la recherche et de remplacer Vim.


1

De nombreuses applications à grande échelle ont été (des miennes, au moins, deux;), et je suppose que beaucoup d'autres seront entièrement écrites dans Vim. Les IDE en tant que tels sont encore une innovation plutôt moderne , pour ainsi dire.

Cependant, la vanille ordinaire vi (aïe) ou Vim fait un peu défaut. Connaître Vim et penser de certaines manières aident un peu, et les plugins aident beaucoup , pour lesquels www.vim.org est une source infinie de. Certains spécifiques à la langue que vous utilisez et d'autres généraux (pour les commentaires, la navigation dans les fichiers, pour ...) le transforment rapidement en un environnement de développement très rapide. Après tout (et certains diront sûrement) un IDE n'est qu'un éditeur avec des plugins emballés dans une interface plus agréable. Il n'y a pas non plus beaucoup de choses graphiques dans un IDE.

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.