Изменить уровень сгиба на основе синтаксиса в vim

Учитывая следующий код C ++:

//
// Some comments at the begin of the code.
// For instance, license, author name, date.
// Referred as "Comment A"//

namespace one {
namespace two {

// Here you have some code.
// And this comment explain what the code is doing.
void exampleFunction();

}
}

и следующие настройки в моем .vimrc

set foldmethod=syntax
autocmd Syntax c,cpp syntax region cCommentLicense start="^\s*//" end="\n\s*\(\S[^/]\|\_$\)"me=s,re=s,he=s fold

Эти настройки позволяют мне свернуть абзац, где строки начинаются с //,

Мой вопрос

когда foldlevel модифицируется (используя zr а также zm), первый комментарий (Комментарий А) автоматически складывается.
Можно ли изменить уровень фолда (например, установить 9)?

Уровень сгиба других комментариев для меня не имеет значения.

1

Решение

При свертывании на основе синтаксиса уровень сгиба определяется структурой синтаксиса. Чтобы получить кратность уровня 9, вам нужно определить 9 вложенных синтаксических областей.

С :set foldmethod=exprвы имеете более точный контроль над уровнями сгиба и можете явно вернуть 9, Пока ты только сворачивая комментарии, вы, вероятно, можете написать простое эквивалентное выражение, но если есть и другие свёрнутые конструкции, они тоже быстро станут сложными.

2

Другие решения


По вопросам рекламы [email protected]