Форматирование / автоматический отступ Vim в классе C ++ кажется неправильным. это нормально? - PullRequest
1 голос
/ 09 мая 2020

Похоже, что в Vim есть много опций для отступа c кода с переменными cindent и cinoptions. Я не вносил никаких изменений в эти настройки и протестировал это с бесплатной sh установкой Vim и без vimr c. Кажется, я не могу найти объяснения следующему поведению:

Если publi c используется в первой строке тела класса, кажется, что отступ правильно отформатирован. Использование gg = G форматирует тело следующим образом:

class Thing
{
        public:
                int a;
};

Но, если над ним что-то есть, vim не делает отступ в строке после ключевого слова publi c. Использование gg = G форматирует тело так:

class Thing
{
        int b;
        public:
        int a; //WHY is there no additional indentation level anymore???
};

Кто-нибудь знает, почему это происходит? Это сводит меня с ума.

Спасибо!

1 Ответ

1 голос
/ 27 июня 2020

Установка clang-format и использование autocmd решили мою проблему. Любые новые настройки, которые я хочу применить к файлам c или c ++, можно просто добавить в функцию CPPFormatSettings. Форматирование Google имеет для меня наибольший смысл, но на выбор есть 5 или 6 других стилей. Изменение на -style = microsoft отформатирует код, чтобы он выглядел больше как classi c Форматирование C ++ с помощью скобок под определениями функций.

Вот что я добавил в свой vimr c:

fun! CPPFormatSettings()
  setlocal equalprg=clang-format\ -style=google
endfun

autocmd FileType c,cpp call CPPFormatSettings()
...