Я думаю, что вам нужно изменить метод сгиба на отступ вместо ручного, что по умолчанию. Введите это в командном режиме.
:set foldmethod=indent
Теперь, если вы войдете в свою функцию foo и наберете zm (увеличьте уровень сгиба на единицу), это будет выглядеть так:
int foo(int a, int b) {
+-- 2 lines: int c;------------------------------------------------------------
}
Строка foo будет по-прежнему иметь подсветку синтаксиса. Конечно, чтобы развернуть, введите zr. Для удобства я вставил следующие несколько строк в мой .vimrc, чтобы быстро сложить или развернуть все:
" Folding and unfolding
map ,f :set foldmethod=indent<cr>zM<cr>
map ,F :set foldmethod=manual<cr>zR<cr>
Здесь также есть хороший учебник здесь , и, конечно, чтение справки vim на методе foldmethod может привести вас к другим методам, которые вам нравятся лучше, чем indent, но из-за того, как выглядит пример кода, вы, вероятно, сделать отступ.