подсветка синтаксиса в заголовке фальцовки VIM
-
06-07-2019 - |
Вопрос
Есть ли способ, чтобы VIM продолжал применять форматирование к строке, используемой в качестве заголовка для сгиба?
Например, у меня есть следующий код:
int foo(int a, int b) {
int c;
....
}
В сложенном виде я вижу:
+-- 4 lines: int foo(int a, int b) {----------------------------
Однако вся строка выделяется в соответствии с разделом «Сложено». учебный класс. Есть ли способ отключить это, поэтому я продолжаю видеть подсветку синтаксиса?
[для простого примера это не так важно, но я также широко использую свертывание при просмотре больших файлов данных, и там форматирование гораздо важнее для меня]
<Ч>Решение
Тем не менее, вся строка выделяется в соответствии с " Сложенным " учебный класс. Есть ли способ отключить это, поэтому я продолжаю видеть подсветку синтаксиса? & Quot;
Нет, сложенный текст заголовка не является текстом, который является частью файла и не может быть непосредственно отредактирован, он просто рассчитывается и накладывается на экран. Подсветка «Сложено» применяется ко всей линии, и ко всем сгибам применяется одинаковая подсветка.
Для моего использования с vim в качестве планировщика (в проекте VimOutliner) я взломал источник vim, чтобы разрешить различную подсветку сгиба в зависимости от уровня сгиба, поэтому применяются несколько подсветок заголовка сгиба (например, FoldLevel1, FoldLevel2, так далее.). Я предполагаю, что можно было бы и дальше взломать использование уже существующего выделения текста в линии заголовка сгиба, но, учитывая то, как работает сворачивание, я подозреваю, что это может быть сложнее, чем кажется.
Извините, меня просто поразило, что предложение для метода отступа в любом случае может быть именно тем, что вы ищете, так как он сохраняет синтаксис в незаштрихованных строках, в то же время сохраняя их функцию своего рода заголовка для сложенного раздела. р>
Другие советы
Я думаю, что вам нужно изменить метод сгиба на отступ вместо ручного, что по умолчанию. Введите это в командном режиме.
: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 может привести вас к другим методам, которые вам нравятся лучше, чем отступ, но из-за того, как выглядит ваш пример кода, вам, вероятно, понадобится отступ.