Refactoring C / C ++ dans Vim (par exemple d'extraction de procédé comme dans Eclipse)
-
20-09-2019 - |
Question
permettent d'effectuer des refactoring sur C ou un code C ++ il des plug-ins ou des méthodes intégrées dans Vim, quelque chose comme les outils de refactoring dans Eclipse?
Je suis particulièrement enthousiaste à l'outil méthode extrait de refactoring d'Eclipse qui déterminera les paramètres de nouvelles méthodes et généralement deviner aussi une variable à utiliser comme valeur de retour.
La solution
Non, même si Vim est un bon environnement pour l'édition, et peut être personnalisé dans beaucoup de manières différentes (pliage de code, coloration syntaxique, l'expansion macro, etc.) la plupart sont fait au niveau de la syntaxe, plutôt que le niveau sémantique . Même le pliage de code correspond juste au accolades opposées.
Pour faire une bonne refactoring, vous devez avoir beaucoup de connaissances sémantiques sur l'AST, quelles variables sont déclarées dans lesquelles la portée, et ainsi de suite. IDEs comme Eclipse construire un cache des variables définies dans chaque champ lexical, afin qu'ils puissent rapidement se référer à l'endroit où ils sont utilisés en termes de déterminer ce qu'il faut renommer et où.
Cela ne veut pas dire que vous ne pouvez pas faire des choses syntaxiquement; après tout, on peut tout simplement prendre un bloc de code et de le mettre dans une fonction séparée assez facilement. Vous pourriez même être en mesure de deviner certains paramètres (par exemple, trouver une liste des variables, savoir lesquelles des déclarations locales, retirez-les et ce qui reste sont vos paramètres. Mais Eclipse fait aussi d'autres choses ressemblant à déterminer si des variables modifiés dans la fonction, et veiller à ce qu'ils sont repassé par la valeur de retour. Il vérifie également toutes les exceptions lancées, et les ajouter à la liste.
L'effet net est que si vous pourriez être en mesure de rapprocher certains d'entre eux dans vim, vous êtes vraiment ne va pas être en mesure d'obtenir ce travail dans un enviornment Vim seule. Vous pouvez soit utiliser un Vim comme raccourci clavier dans Eclipse approprié, ou regarder Eclim . A partir de la page d'accueil:
Le principal objectif de Eclim est d'apporter Eclipse fonctionnalité au Vim éditeur. L'objectif initial était de fournir la fonctionnalité de java Eclipse dans vim, mais le soutien de divers autres langues (c / c ++, PHP, Python, Ruby, css, html, xml, etc.) ont été ajoutés et plusieurs autres sont prévues.
Eclim est inférieure d'une application et plus d'une intégration de deux grands projets. La première, Vim, est sans doute l'un des meilleurs éditeurs de texte en existence. La seconde, Eclipse, offre de nombreux excellents outils pour développement en plusieurs langues. Chaque offre de nombreuses fonctionnalités qui peuvent augmenter la productivité des développeurs, mais à la fois laisser encore quelque chose à voulu. Vim n'a pas un support natif Java et bon nombre des fonctionnalités avancées disponible dans Eclipse. Eclipse, sur la D'autre part, nécessite encore l'utilisation de la souris pour beaucoup de choses, et quand par rapport à Vim, offre une moins interface idéale pour l'édition de texte.
C'est là Eclim entre en jeu. Au lieu d'essayer d'écrire un IDE Vim ou un éditeur vim dans Eclipse, Eclim fournit un plug-in Eclipse Eclipse expose les caractéristiques à travers une l'interface de serveur, et un ensemble de Vim plug-ins qui communiquent avec Eclipse sur cette interface.
Cela donne non seulement un environnement comme Eclipse, il est Eclipse. Mais vous obtenez toujours les fonctions d'édition et de navigation texte de vim. On dirait que cela pourrait répondre à vos besoins, bien que la documentation sur refactorisation de soutien ne signifie pas qu'il fournit une fonctionnalité de procédé d'extraction.
Autres conseils
J'ai écrit un refactorisation plugin. C ++ est l'une des principales langues traitées (comme il est ma langue maternelle au travail). extraction de la méthode est prise en charge.
Pour C ++, le plug-in est capable (grâce à ctags) pour en déduire la plupart (mais malheureusement pas toujours tout - grâce à ctags ...) des variables qui entrent et sortent de la fonction extraite. Je dois encore écrire une petite boîte de dialogue pour choisir les dans les variables / de sortie doivent être échangées (ref const, réf rvalue, copie, pointeur, tuples, struct, etc.) (BTW, aide est la bienvenue comme GUIs ne sont pas mon truc ^^ ') .
Après avoir cherché haut et bas pour vim avec refactoring C ++, c'est la meilleure solution, je suis venu avec.
- Visual Studio 2013 et plus - Grand IDE pour C ++ développement et le débogage, mais ne dispose pas refactoring suffisante ou vim
- Installer le plugin vsvim - Maintenant, vous avez toute la navigation vim, la recherche, le remplacement des cordes, etc. (Certaines fonctionnalités avancées ne sont pas pris en charge)
- Installer Resharp C ++ - Idéal pour refactorisation au détriment de la vitesse. Il fait un peu maladroit, mais si vous voulez déduire générer automatiquement les méthodes / variables, renommer des variables ou des fonctions locales / globales / méthode, Rechercher des usages dans la solution, et plus de fonctionnalités, rend extrêmement la peine.
est la meilleure combinaison que j'ai trouvé C ++ le développement, le débogage et refactoring. Donne-moi au moins 3x - 5x plus rapide. Espérons que cela vous aide aussi bien.