2016-07-19 6 views
1

Я ищу инструмент, который делает из гадкого блокаFormat C++ код с соответствующими элементами по нескольким линиям

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; 

симпатичный блок, который легко редактируется на несколько строк в режиме визуального-блока в 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; 

Или что-то очень похожее.
Это не должно быть в vim! Я просто отметил его vim, потому что это то, что я обычно использую. Пожалуйста, порекомендуйте другие инструменты, которые могут выполнять эту работу.

+1

Я не думаю, что в vim есть достаточно вариантов форматирования, чтобы иметь возможность сделать это без ручного редактирования всех строк и вставки необходимых пробелов. Надеюсь, эксперт uber vim докажет, что я ошибаюсь :) –

+0

Это не должно быть в vim! Я просто отметил его vim, потому что это то, что я обычно использую. Пожалуйста, порекомендуйте другие инструменты, которые могут выполнять эту работу. – Clawish

+0

Вы должны добавить это к своему сообщению. –

ответ

3

Я знаю, что это инструмент, который может помочь в выравнивании всего этого «уродливого» блока. Он называется Align. Все, что вам нужно сделать, это дать ему образец, который вы хотите выровнять.

Таким образом, для приведенного выше кода вы можете сделать это:

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

Как вы можете видеть из 5 команд вам нужно вручную реорганизовать код, что диаграмма

Результат:

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

Это прибило его! – Clawish

 Смежные вопросы

  • Нет связанных вопросов^_^