Frage

Gibt es Plugins oder integrierte Methoden in Vim für die Durchführung Refactoring auf C oder C ++ Code, so etwas wie die Refactoring-Tools in Eclipse?

Ich bin gespannt, vor allem auf dem Extrakt Methode von Eclipse-Refactoring-Tool, das Parameter von neuen Methoden bestimmen werden und in der Regel auch einen Variable Verwendung als Rückgabewert erraten.

War es hilfreich?

Lösung

Nein, obwohl Vim eine gute Umgebung für die Bearbeitung ist, und kann in einer Vielzahl von Möglichkeiten (Code-Folding, Syntax-Einfärbung, Makroerweiterung etc.) angepasst wird die meisten von ihnen sind auf der Syntax Ebene getan, anstatt die semantische Ebene . Auch die Code-Faltung paßt nur gegenüberliegende Klammern auf.

eine richtige Refactoring zu tun, haben Sie eine Menge von semantischem Wissen über den AST haben, welche Variablen deklariert sind, in dem Umfang, und so weiter. IDEs wie Eclipse Aufbau eines Cache der in jedem lexikalischen Gültigkeitsbereich definierten Variablen, so dass sie schnell zurückgreifen können, wo sie in Bezug auf die Bestimmung verwendet werden, was zu benennen und wo.

Das ist nicht zu sagen, dass Sie nicht ein paar Dinge syntaktisch tun können; schließlich kann man einen Code-Block nimmt nur und es in eine separate Funktion leicht genug setzen. Sie könnten sogar bei einigen Parametern erraten sein können (zB eine Liste der Variablen finden, finden Sie heraus, welche lokale Erklärungen haben, entfernen Sie diese und was übrig bleibt sind Ihre Parameter. Aber Eclipse-tut auch andere Dinge wie herauszufinden, ob alle Variablen sind in der Funktion geändert, und sicherzustellen, dass sie durch den Rückgabewert zurückgeführt sind. Es prüft auch für alle geworfen Ausnahmen, und sie zur Liste hinzuzufügen.

Der Nettoeffekt ist, dass, während Sie in der Lage sein können, einige davon in Vim zu nähern, die Sie wirklich nicht, diese Funktion in der Lage sein werden in einem Vim-only enviornment zu bekommen. Sie könnten entweder ein Vim-wie in Eclipse Tastenbelegung richtig, oder Blick auf eclim . Von der Startseite:

  

Das primäre Ziel der eclim zu bringen   Eclipse-Funktionalität an den Vim   Editor. Das ursprüngliche Ziel war es,   bieten Eclipse Java-Funktionalität   in vim, aber die Unterstützung für verschiedene andere   Sprachen (C / C ++, PHP, Python, Ruby,   CSS, HTML, XML, etc.) wurden hinzugefügt   und mehrere weitere sind geplant.

     

Eclim ist weniger von einer Anwendung und   mehr eine Integration von zwei großen   Projekte. Die erste, Vim, ist wohl   einer der besten Texteditoren in   Existenz. Die zweite, Eclipse   bietet viele großartige Werkzeuge für   Entwicklung in verschiedenen Sprachen. Jeder   bietet viele Funktionen, die Dose   erhöhen die Produktivität der Entwickler, sondern   beide noch etwas verlassen zu sein   gewünscht. Vim fehlt nativen Java-Unterstützung   und viele der erweiterten Funktionen   in Eclipse zur Verfügung. Eclipse auf dem   Andererseits erfordert immer noch die Verwendung von   die Maus für viele Dinge, und wenn   im Vergleich zu Vim stellt einen weniger als   ideale Schnittstelle für die Textbearbeitung.

     

Das ist, wo eclim ins Spiel kommt.   Anstatt eine IDE zu schreiben versucht, in   Vim oder ein Vim-Editor in Eclipse, eclim   stellt einen Eclipse-Plug-in,   Exposes Eclipse-Funktionen durch eine   Server-Schnittstelle, und eine Reihe von Vim   Plug-in, die mit Eclipse kommunizieren   über diese Schnittstelle.

Das gibt nicht nur eine Eclipse-ähnliche Umgebung, es is Eklipse. Aber Sie bekommen noch die Navigation und Textbearbeitungsfunktionen von vim. Es klingt wie könnte dies Ihren Anforderungen entspricht, obwohl die Dokumentation auf Refactoring Unterstützung nicht anzeigt dass sie einen Extrakt Methode Funktionalität bereitstellt.

Andere Tipps

Ich habe eine generische geschrieben Refactoring-Plugin . C ++ ist eine der wichtigsten Sprachen behandelt (wie es bei der Arbeit meine primäre Sprache ist). Verfahren der Extraktion wird unterstützt.

Für C ++, das Plugin ist in der Lage (dank ctags) die meisten abzuleiten (aber leider nicht immer alle - dank ctags ...) der Variablen in die und aus der extrahierten Funktion kommen. Ich habe noch ein wenig Dialogfeld wählen zu schreiben, wie die in / out Variablen ausgetauscht werden sollen (const ref, rvalue ref, kopieren, Zeiger, Tupeln, Struktur usw.) (BTW, Hilfe ist willkommen als GUIs ist nicht mein Ding ^^ ') .

Nach Hochs und Tiefs nach vim Suche mit für C ++ Refactoring, ist dies die beste Lösung, die ich habe kommen mit.

  • Visual Studio 2013 und höher - Große IDE für C ++ Entwicklung und Debugging, aber nicht ausreichend, Refactoring oder vim
  • Installieren der vsvim plugin - Nun haben Sie alle Vim-Navigation, Suche, string Ersatz usw. (Einige erweiterte Funktionen werden nicht unterstützt)
  • Installieren Resharp C ++ - groß für auf Kosten der Geschwindigkeit Refactoring. Das macht es ein bisschen klobig, aber wenn Sie zu schließen Autos wollen generieren Methoden / Variablen, local / global / Methode Variablen oder Funktionen umbenennen, Suche nach Verwendungen in der Lösung und mehr Funktionen, macht es extrem wert.

Dies ist die beste Kombination, die ich für C ++ Entwicklung gefunden, Debugging und Refactoring. Mach mir mindestens 3x - 5x schneller. Hoffe, dass es hilft Ihnen auch.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top