Quels sont les meilleurs outils de programmation à usage général pour compléter Vim? [fermé]

22

J'utilise Vim comme éditeur de texte depuis un petit moment maintenant et j'ai l'impression de faire le long chemin pour faire quoi que ce soit. J'utilise ctags pour baliser ma base de code pour la navigation et j'utilise grep (bien que de manière inefficace) pour trouver où certaines méthodes sont utilisées. Mais j'ai le sentiment qu'il existe des outils très utiles que je ne connais pas qui pourraient me rendre plus productif.

Quelle est la meilleure pile logicielle que je pourrais utiliser pour une programmation générale qui compléterait Vim? Comment naviguez-vous dans une base de code, exécutez make, envoyez des modifications à votre système de contrôle de code source, etc.? Avez-vous une 2ème console ouverte à côté de Vim?

Louis Salin
la source
2
Vim lui-même. Peut-être que vous n'utilisez pas les bons plugins / scripts pour le travail. Cela dépend du type de programmation que vous faites, de la langue, des autres outils dont vous avez besoin, etc.
bitek
Je ne spécifie aucune langue afin de ne pas influencer les réponses que j'obtiendrai. Je ne recherche pas vraiment de plugins Vim, bien qu'ils soient utiles.
Louis Salin
J'ai trouvé cette présentation très utile: zmievski.org/2010/06/vim-for-programmers-on-slideshare
gabe.
J'en ai fait un wiki communautaire. J'ai réalisé qu'il n'y avait pas de meilleure réponse à ma question. Merci à tous pour vos réponses!
Louis Salin

Réponses:

8

Une grande caractéristique de vim est la facilité d'intégration avec les commandes shell existantes. Certains des outils externes les plus utiles sont ceux qui sont inclus dans coreutils et d'autres outils de manipulation de texte simples. Par exemple, nous pouvons obtenir le nombre de lignes dans un fichier avec:

:! wc -l %

ou le nombre de mots:

:! wc -w %

Toute commande qui fonctionne sur le shell fonctionnera ici. Cela peut être puissamment combiné avec la commande :read( :r) pour placer la sortie de la commande dans le fichier. Par exemple:

:r !wc -l %

Placera le nombre de lignes de mots dans le fichier que vous éditez.

Un autre avantage de ceci est de remplacer le texte que vous éditez actuellement par la sortie de l'une de ces commandes. Par exemple, vous pouvez formater le fichier entier avec paren exécutant la commande:

:% !par
xoebus
la source
5

Je trouve NERDtree indispensable pour naviguer dans ma base de code. Parallèlement à cela, investir du temps pour devenir compétent dans le déplacement de vos tampons / fenêtres est vraiment utile.

aryeh
la source
+1 pour la référence à ce fantastique plugin. ( github.com/scrooloose/nerdtree )
noffle
4

Quelle que soit votre langue, vous souhaiterez utiliser une fonctionnalité appelée ctags qui permet de parcourir les définitions de source. Cela nécessite un outil externe pour générer des fichiers TAGS qui sont utilisés par VIM pour découvrir les emplacements des différentes définitions de code dans un projet.

Obtenez l' outil exubérant ctags , il fonctionne pour de nombreuses langues et est très simple à utiliser.

de VIM :help ctags

ctags créera un index de tous les identifiants dans une arborescence source. Vous pouvez ensuite utiliser les commandes de balise pour naviguer dans votre arborescence source. voir :help tag-commands. Le plus simple est de placer le curseur sur un mot-clé et d'appuyer sur CTRL- ]. Pour revenir d'où vous venez, appuyez sur CTRL-T

Au-delà de cela, vous voudrez peut-être regarder certains des conseils et améliorations VIM discutés ici , c'est une discussion très complète de certaines des choses qui peuvent être faites pour améliorer l'expérience d'un vimmer.

chillitom
la source
J'ai mentionné dans ma question que j'utilisais des ctags, mais merci pour la réponse quand même! :)
Louis Salin
4

Vim est un outil très puissant, je suis sûr que vous le savez tous déjà. Vous commencerez à augmenter votre productivité en utilisant vim dans quelques semaines. Mais vous ne saturerez jamais votre connaissance de Vim. Donc, pour ma part, je suis toujours à la recherche de nouvelles et efficaces façons de faire les choses à Vim. Il y a un gars du nom de Derek Wyatt qui a fait de superbes captures d' écran sur l'utilisation de Vim, ainsi que sur les plugins qu'il utilise.

Quelques plugins que j'utilise

  1. command-t Cela rend la navigation dans les fichiers un jeu d'enfant et c'est très intelligent .

    Le plug-in Command-T fournit un mécanisme extrêmement rapide et intuitif pour ouvrir des fichiers avec un nombre minimal de touches. Il est nommé "Command-T" car il est inspiré de la fenêtre "Aller au fichier" liée à Command-T dans TextMate.

  2. fuzzyfinder Je l'utilise principalement pour broswer les tampons et changer le répertoire courant.

    FuzzyFinder fournit des moyens pratiques pour atteindre rapidement le tampon / fichier / commande / signet / balise souhaité. FuzzyFinder recherche avec le motif flou / partiel en lequel il a converti un motif entré

  3. NERDTree C'est le meilleur plugin de navigateur de fichiers pour vim.

    L'arborescence NERD vous permet d'explorer votre système de fichiers et d'ouvrir des fichiers et des répertoires. Il vous présente le système de fichiers sous la forme d'une arborescence que vous manipulez avec le clavier et / ou la souris. Il vous permet également d'effectuer des opérations simples sur le système de fichiers.

  4. XPTemplate Le meilleur plugin de template au monde.

    Moteur d'extraits de code pour Vim, avec bibliothèque d'extraits. XPTemplate vous permet d'écrire des codes de manière fluide, rapide et confortable.

  5. rails.vim Si vous faites des trucs de développement de rails, c'est indispensable.

    TextMate est peut-être le dernier engouement pour le développement d'applications Ruby on Rails, mais Vim l'est pour toujours. Ce plugin offre les fonctionnalités suivantes pour le développement d'applications Ruby on Rails.

  6. NerdCommenter Rend les commentaires dans n'importe quel type de code faciles.

Et ce ne sont que quelques-uns des plugins que j'utilise, pour télécharger tous les plugins avec mon vimrc, consultez mes fichiers dot

Khaja Minhajuddin
la source
3

Il existe un excellent plugin pour VIM qui vérifie la syntaxe de Syntastic . Il existe de nombreux autres outils également disponibles pour la gestion de fichiers, la construction, etc. Allez sur IRC #vim sur freenode.net, il y a beaucoup de gens utiles là-bas.

Kris
la source
3

mon préféré est cscope. Si vous avez compilé vim avec le support cscope, vous pouvez directement utiliser les commandes cscope de VIM. par exemple la recherche de fichiers inclus, les fonctions appelées par la fonction xyz, etc. Je l'ai essayé avec un très grand référentiel de code source. Ça aide beaucoup.

http://cscope.sourceforge.net/cscope_vim_tutorial.html

Hemant
la source
1

Si vous programmez dans l'un des langages pris en charge par GCC (C, C ++, Java, Fortran), Clewn est un excellent plugin qui intègre le débogueur GDB dans VIM. J'ai en fait trouvé que c'était l'une des meilleures interfaces de GDB qui soit.

chillitom
la source
0

J'organise généralement une screensession pour chaque projet. Vim est dans la fenêtre 0, et j'utilise la fenêtre 1 pour une session shell. Si je code dans une langue qui a un REPL décent, je l'exécute généralement dans la fenêtre 2. Bien sûr, vous n'avez pas besoin screende le faire; vous pouvez le faire avec différentes fenêtres de terminal ou avec des onglets dans un terminal multitab. Je trouve que screenc'est plus stable que d'autres alternatives: si votre application de terminal se bloque, vous pouvez simplement démarrer un autre terminal et vous reconnecter à votre screensession en cours d'exécution . screenest également très rapide à naviguer une fois que vous l'avez appris (un peu comme vim lui-même).

Je finis surtout par utiliser la session shell pour des activités de contrôle de version compliquées comme le rebasage ou la fusion: des choses plus simples peuvent être faites à partir de la ligne de commande de vim (par exemple l' :!git commit % -m 'Added info aboutécran .') ou en utilisant l' addon fugitif . Je trouve les fugitifs :Gmove(renommer le tampon actuel à la fois dans vim et dans l'index git) et :Gdiff(invoquer vimdiff sur le tampon actuel avec un point précédent dans son histoire) particulièrement utiles. Vous pouvez également faire des choses comme créer un message de validation dans un tampon de travail, copier du texte à partir de diverses parties de votre code, puis valider avec:%!git commit -F /dev/stdin

J'utiliserai également la session shell pour des tests fonctionnels / d'intégration si cela s'applique à tout ce sur quoi je travaille, par exemple si j'écris un utilitaire de ligne de commande.

La fonctionnalité de quickfix de vim est utile pour le débogage, mais il semble y avoir un addon différent requis pour chaque langue que vous pouvez travailler. Ils semblent aussi utiliser une variété de techniques d'invocation, mappage des touches de fonction ou à des séquences clés commençant par \ou ,, ou à des commandes personnalisées, ou en étant invoqué automatiquement lors de la sauvegarde d'un tampon. Jusqu'à présent, je n'ai pas vraiment pris la peine de discuter de cela, et de simplement lire les résultats des tests unitaires ou des peluches dans un tampon de travail en utilisant, par exemple :r !python -m doctest whatever.py. Modifiez le code, revenez au tampon de travail, upour annuler, puis appuyez sur :ret sur la flèche vers le haut (la plupart du temps) pour récupérer cette commande. Mais cela peut valoir la peine de chercher un addon pour cela, selon la langue dans laquelle vous travaillez.

Pour les langages compilés populaires comme C, java, etc., :makefera une construction, et la prise en charge de la liste de correctifs est bien établie. Vous pouvez donc faire :copenpour afficher le tampon quickfix. Il affichera une liste d'erreurs, une par ligne; frapper Entersur une ligne fera sauter votre autre fenêtre à ce point dans ce fichier.

Si vous travaillez avec plusieurs projets à la fois, vous pouvez faire :lmakeen sorte qu'une liste d'erreurs soit stockée dans la liste des emplacements : c'est comme la liste des correctifs mais elle est associée à une seule fenêtre plutôt que d'être un singleton dans votre instance de vim. :lopenouvrira une liste d'emplacements pour la fenêtre actuelle.

intuition
la source