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?
utilities
programming
vim
Louis Salin
la source
la source
Réponses:
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:
ou le nombre de mots:
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: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
par
en exécutant la commande:la source
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.
la source
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-TAu-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.
la source
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
command-t Cela rend la navigation dans les fichiers un jeu d'enfant et c'est très intelligent .
fuzzyfinder Je l'utilise principalement pour broswer les tampons et changer le répertoire courant.
NERDTree C'est le meilleur plugin de navigateur de fichiers pour vim.
XPTemplate Le meilleur plugin de template au monde.
rails.vim Si vous faites des trucs de développement de rails, c'est indispensable.
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
la source
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.
la source
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
la source
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.
la source
J'organise généralement une
screen
session 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 besoinscreen
de le faire; vous pouvez le faire avec différentes fenêtres de terminal ou avec des onglets dans un terminal multitab. Je trouve quescreen
c'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 à votrescreen
session en cours d'exécution .screen
est é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,u
pour annuler, puis appuyez sur:r
et 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.,
:make
fera une construction, et la prise en charge de la liste de correctifs est bien établie. Vous pouvez donc faire:copen
pour 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
:lmake
en 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.:lopen
ouvrira une liste d'emplacements pour la fenêtre actuelle.la source