9

Есть ли способ, чтобы VIM продолжал применять форматирование к строке, используемой в качестве заголовка для складки?подсветка синтаксиса в заголовке сложения VIM

НАПРИМЕР, У меня есть следующий код:

int foo(int a, int b) { 
    int c; 
.... 
} 

В сложенном состоянии, я вижу:

+-- 4 lines: int foo(int a, int b) {---------------------------- 

Однако вся строка подсвечивается в соответствии с "складчатой" класса. Есть ли способ отключить это, поэтому я продолжаю видеть подсветку синтаксиса?

[для простого примера это не так важно, но я также использовать складной широко при просмотре больших файлов данных, и форматирование гораздо важнее для меня]


ответ

7

«Тем не менее, вся строка выделена в соответствии с классом« Сложенные ». Есть ли способ отключить это, поэтому я продолжаю видеть подсветку синтаксиса?»

Нет, сложенный текст заголовка не является текстом, который является частью файла и не редактируется непосредственно, просто вычисляется и накладывается на экран. Флажок «Сложенная» применяется ко всей линии, и все складки имеют одинаковое выделение.

Для моего использования с vim как outliner (в проекте VimOutliner) я взломал источник vim, чтобы разрешить выделение разной фоновой картинки в зависимости от уровня сгиба, поэтому применяются кратные фоновые заголовки (например, FoldLevel1, FoldLevel2 , и т.д.). Я предполагаю, что его можно было бы взломать, чтобы использовать уже существующую подсветку текста на линии сгиба головы, но, учитывая способ сгибания, я подозреваю, что это может быть труднее сделать, чем кажется.

Извините, мне просто показалось, что предложение для отложения отступа может быть именно тем, что вы ищете в любом случае, что сохраняет синтаксис в незашифрованных строках, хотя они все еще выполняют функцию своего рода заголовка для сложенного раздела.

5

Я думаю, что вы» re look for меняет foldmethod на отступ вместо ручного, который является значением по умолчанию. Введите это в командном режиме.

:set foldmethod=indent 

Теперь, если вы идете внутри функции Foo и типа гт (кратное увеличение уровня на единицу), это будет выглядеть следующим образом:

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> 

Там есть также хороший учебник here, и, конечно, чтение ВИМ помощь на foldmethod может привести вас к другим методам, которые вам нравится лучше, чем отступ, но, как выглядит ваш пример кода, вы, вероятно, захотите отступать.

+0

спасибо за ответ; возможно, я не должен был бы приводить этот пример. Ваши комментарии хороши для кода C, но я также часто сбрасываю текстовые файлы, используя http://www.vim.org/scripts/script.php?script_id=158. Это не похоже на какое-либо решение. – Mikeage

+2

Я бы не подумал, что если бы вы складывали простые текстовые файлы, подсветка синтаксиса имела бы большое значение (мне было бы интересно увидеть пример), но если он будет делать то же самое идеи.Если вы начинаете сбрасывать ниже строки, которую хотите выделить синтаксисом, то вы все равно должны видеть нужную строку. – mmrobins

+0

@mmrobins, не могли бы вы взглянуть на [этот вопрос об подсветке синтаксиса Python на линии сгиба) (http://stackoverflow.com/questions/8655799/syntax-highlight-python-in-a-vim-fold-line) и предоставить некоторые сведения о том, возможно ли это и что мне нужно изменить, чтобы сделать эту работу? –