Вопрос

Есть ли способ, чтобы 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 может привести вас к другим методам, которые вам нравятся лучше, чем отступ, но из-за того, как выглядит ваш пример кода, вам, вероятно, понадобится отступ.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top