Как может я код автоформата/отступа C в энергии?

Когда я копирую код из другого файла, форматирование испорчено, как это:

fun()
{
for(...)
{
for(...)
{
if(...)
{
}
}
}
}

Как я могу автоотформатировать этот код в энергии?

239
задан Jeffrey Bosboom 7 May 2015 в 09:06
поделиться

3 ответа

Попробуйте следующие нажатия клавиш:

gg=G

Объяснение: gg переходит в начало файла, = - это команда для исправления отступ и G указывает ему выполнить операцию до конца файла.

540
ответ дан 23 November 2019 в 03:19
поделиться

Мне нравится использовать программу Artistic Style. Согласно их веб-сайту :

Artistic Style - это средство определения, форматирования и украшения исходного кода для языков программирования C, C ++, C # и Java.

Он работает в Windows, Linux и Mac. Он будет делать такие вещи, как отступы, замена табуляции пробелами и наоборот, вставка пробелов вокруг операций, как вам нравится (преобразование if (x <2) в if (x <2) если вам это нравится), поместив фигурные скобки в ту же строку, что и определения функций, или переместив их в строку ниже и т. д. Все параметры управляются параметрами командной строки.

Чтобы использовать его в vim, просто установите для него параметр formatprg, а затем используйте команду gq. Так, например, у меня есть .vimrc:

autocmd BufNewFile,BufRead *.cpp set formatprg=astyle\ -T4pb

, так что всякий раз, когда я открываю файл .cpp, formatprg устанавливается с теми параметрами, которые мне нравятся. Затем я могу ввести gg, чтобы перейти к началу файла, и g q G , чтобы отформатировать весь файл в соответствии с моими стандартами.Если мне нужно переформатировать только одну функцию, я могу перейти к началу функции, затем набрать g q ] [, и он переформатирует только это функция.

Варианты, которые у меня есть для astyle, -T4pb , являются моими предпочтениями. Вы можете просмотреть их документацию и изменить параметры, чтобы он форматировал код, как вам нравится.

Вот демонстрация. Перед astyle:

int main(){if(x<2){x=3;}}

float test()
{
if(x<2)
x=3;
}

После astyle (gggqG):

int main()
{
    if (x < 2)
    {
        x = 3;
    }
}

float test()
{
    if (x < 2)
        x = 3;
}

Надеюсь, что это поможет.

77
ответ дан 23 November 2019 в 03:19
поделиться

Встроенная команда для правильного отступа кода уже упоминалась (gg=G). Если вы хотите украсить код, вам нужно использовать внешнее приложение, например indent. Поскольку % обозначает текущий файл в режиме ex, вы можете использовать его следующим образом:

:!indent %
26
ответ дан 23 November 2019 в 03:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: