Сначала я использую set foldmethod = marker и перемещаю курсор в {из одной функции, используя функцию zf% для сброса текущей функции. Но в этом файле есть много функций. Как я могу сбросить все функции в этом файле? И я не хочу сбрасывать {} в функции.
Как я могу автоматически складывать все функции в файле с помощью vim?
Ответ 1
Если вы :set foldmethod=syntax
, складки будут указаны из определений синтаксиса. Если вы предпочитаете, вы можете :set foldmethod=indent
, чтобы отступы определяли складки.
Вы можете закрыть все сгибы с помощью zM
. Если у вас есть вложенные складки, и вы хотите сбросить уровень за уровнем, используйте zM
. Для открытия складок используйте zR
(все) и zR
(уровень за уровнем).
Ответ 2
Если каждая функция имеет свою первую скобу в первом столбце, вы можете сделать:
:%g/^{/normal! zf%
Возможно, это более понятно:
:%g /^{/ normal! zf%
команда g
выбирает строки в соответствии со следующим шаблоном и выполняет команду ex (здесь normal!
для воспроизведения нажатий клавиш нормального режима).
См. :help :g
и :help :normal
Ответ 3
Я наткнулся на это, когда искал подобное. Вы бы, очевидно, догадались об этом, но в интересах других людей я все равно отвечу.
Вам нужно ввести следующие строки в .vimrc:
set foldmethod=syntax
set foldnestmax=1
Ответ 4
set foldlevel=0
будет сбрасывать все с самого начала, что нужно сложить. В зависимости от языка и вашей функции сгиба содержимое складки будет меняться.
Ответ 5
Попробуйте :%g/\(function\_.\{-}\)\@<={/ normal! f{zf%
Объясните пополам:
:%g
- поиск в глобальном масштабе всего файла
/\(function\_.\{-}\)\@<={/
- паттерн для поиска первой '{' после любой 'функции' и поместите курсор на начало строки с помощью этого '{'
normal! f{zf%
- перейдите к '{' f{
и сделайте сгиб с перемещением '%' zf%
в этой строке
Ответ 6
Я пытался сделать то же самое и просто делал:
setlocal foldmethod=marker
setlocal foldmarker={,}
Он использует метод разметки маркера и изменяет маркер на одну фигурную фигуру (по умолчанию маркер {{{
).