2016-07-19 33 views
1

ich für ein Werkzeug bin auf der Suche, dieFormat C++ Code mit entsprechenden Elementen über mehrere Zeilen

if (str == "str") decorator["str"] = &Props::goodstr; 
    else if (str == "strM") 
     decorator["strM"] =  &Props::goodstrM; 
    else if (str == "strXL")  decorator["strXL"] =  &Props::goodstrXL; 
    else if (str == "strXXXL") decorator["strXXXL"] = &Props::goodstrXXXL; 

den nette Block, der in aus dem hässlichen Block macht leicht editierbaren über mehrere Zeilen in dem visuell-Block-Modus ist vim:

if  (str == "str" ) decorator["str" ] = &Props::goodstr ; 
else if (str == "strM" ) decorator["strM" ] = &Props::goodstrM ; 
else if (str == "strXL" ) decorator["strXL" ] = &Props::goodstrXL ; 
else if (str == "strXXXL") decorator["strXXXL"] = &Props::goodstrXXXL; 

Oder etwas sehr ähnliches.
Es muss nicht in vim sein! Ich habe es gerade mit vim getaggt, weil ich das normalerweise verwende. Bitte empfehlen Sie andere Tools, die diese Aufgabe erledigen können.

+1

Ich glaube nicht, dass es genug Formatierungsoptionen in vim gibt, um dies zu tun, ohne alle Zeilen manuell zu bearbeiten und die notwendigen Leerzeichen einzufügen. Hoffentlich wird ein Uber Vim-Experte mir das Gegenteil beweisen :) –

+0

Es muss nicht in Vim sein! Ich habe es gerade mit vim getaggt, weil ich das normalerweise verwende. Bitte empfehlen Sie andere Tools, die diese Aufgabe erledigen können. – Clawish

+0

Sie sollten das zu Ihrem Beitrag hinzufügen. –

Antwort

3

Ich weiß eigentlich ein Werkzeug, das helfen könnte, all diesen "hässlichen" Block auszurichten. Es heißt Align. Alles, was Sie tun müssen, ist ihm das Muster zu geben, das Sie ausrichten möchten.

Also für den obigen Code können Sie das tun:

:%normal! ggJ 
:%s/;/;\r/g 
:%left 
:AlignCtrl =Clp1P1IW 
:% Align (\|)\|]\|[\|&.\+ 
:% Align ; 

Wie Sie aus dem 5. Befehl sehen Sie den Code manuell neu organisieren müssen durch das Muster bereitstellt

Ergebnis:

if  (str == "str" ) decorator [ "str"  ] = &Props::goodstr  ; 
else if (str == "strM" ) decorator [ "strM" ] = &Props::goodstrM ; 
else if (str == "strXL" ) decorator [ "strXL" ] = &Props::goodstrXL ; 
else if (str == "strXXXL") decorator [ "strXXXL" ] = &Props::goodstrXXXL ; 
+0

Das hat es genagelt! – Clawish