Я foldmethod=indent
установил в моем ~/.vimrc
, и в целом это работает для меня, и я хотел бы сохранить его.
Тем не менее, у меня есть несколько файлов, которые я регулярно редактирую (и которые находятся под моим эксклюзивным контролем), и которые я хотел бы добавить в систему на основе маркеров, в частности, чтобы при открытии файла большой раздел редко просматривается (который уже «разделен» отступом) предварительно сложен. Похоже , что foldmethod=marker
позволит мне сделать это (я не против нечетного комментария в файл , чтобы указать эти «до-складки» , если это необходимо), но я все равно хочу foldmethod=indent
установить так , что я могу использовать zc
, zo
и так далее , чтобы затем сложить или развернуть разделы с помощью отступа. Насколько я могу судить, я не могу установить метод сгибания для нескольких значений.
Есть ли другой способ добиться этого (в идеале, используя что-то встроенное в сам файл)?
Ответы:
Каждое окно может иметь свое локальное значение
'foldmethod'
; то, что вы устанавливаете,~/.vimrc
это просто глобальное значение по умолчанию. Есть несколько способов установить другое локальное значение для конкретного буфера ::setlocal foldmethod=marker
:autocmd FileType java setlocal foldmethod=marker
(или в~/.vim/after/ftplugin/java.vim
):autocmd BufRead /path/to/file setlocal foldmethod=marker
Там все еще может быть только один раз методом внутри одного окна. Если вы хотите использовать разные стратегии, вы должны выбрать более гибкий метод (например
expr
) и повторно внедрить там «другой» метод (например, сделав свой'foldexpr'
анализ отступа). Или вы используете два разделения окна для одного и того же буфера и устанавливаете разные методы сгиба для каждого разделения.Поскольку это, вероятно, не то, что вы хотите услышать, вы можете взломать что-нибудь вместе с параметром,
:autocmd CursorMoved
который переключает метод сгиба на основе текущей строки:источник
zc
,zo
и так далее больше не работает , как предполагалось в этом буфере. Я уточнил свой вопрос.