Сначала я использую set foldmethod = marker и перемещаю курсор в {из одной функции, используя функцию zf% для сброса текущей функции. Но в этом файле есть много функций. Как я могу сбросить все функции в этом файле? И я не хочу сбрасывать {} в функции.Как я могу автоматически свернуть все функции в файле с помощью vim?
ответ
Если вы :set foldmethod=syntax
, то складки будут указаны в определениях синтаксиса. Если вы предпочитаете, вы можете :set foldmethod=indent
, чтобы отступы определяли складки.
Вы можете закрыть все сгибы с помощью zM
. Если у вас есть вложенные складки, и вы хотите сбросить уровень за уровнем, используйте zm
. Для открытия складок используйте zR
(все) и zr
(уровень за уровнем).
Я думаю, вы неправильно понимаете мой смысл. Сначала мне нужно настроить сброс для каждой функции. Я просто хочу знать, как настроить сброс для всех функций в первый раз. –
@Yongwei: Хорошо, я думаю, что понял. Это то, что вы хотели? –
zR и zm не работают после того, как я установил foldmethod = синтаксис –
Если каждая функция имеет открывающую фигурную скобку в первом столбце вы можете сделать:
:%g/^{/normal! zf%
Может быть, это более ясно, таким образом:
:%g /^{/ normal! zf%
команда g
выбирает строки в соответствии со следующим pattern и выполняет команду ex (здесь normal!
для воспроизведения нажатий клавиш обычного режима).
См :help :g
и :help :normal
Я использую это - спасибо однако как вы можете избежать его от складывания через функции? кажется, что это не только функции – serup
Я наткнулся на это, когда я искал подобную вещь. Вы бы, очевидно, догадались об этом, но на благо других людей я все равно отвечу.
Вы должны поместить в следующих строках в вашем .vimrc:
set foldmethod=syntax
set foldnestmax=1
set foldlevel=0
сбросит все с самого начала, что Мент быть сложено. В зависимости от языка и вашей функции сгиба содержимое складки будет отличаться.
'zM' делают то же самое. – MOHRE
Попробуйте :%g/\(function\_.\{-}\)\@<={/ normal! f{zf%
Поясните по кусочкам:
:%g
- поиск globaly в целом файле
/\(function\_.\{-}\)\@<={/
- шаблон для поиска первого '{' после того, как любой 'функции' и поставить курсор на начать из строки '{'
normal! f{zf%
- выполнить вперед до '{' f{
и сделать фолд с переездом '%' zf%
на tha т строка
не смог заставить вашу команду работать - возможно, показать пример функций – serup
Я пытался сделать то же самое и в конечном итоге просто делать:
setlocal foldmethod=marker
setlocal foldmarker={,}
Он использует метод кратного маркера и изменяет маркер на одной скобки (по умолчанию маркера является {{{
).
Мне это очень понравилось! Но я должен разделить строки, которые закрывают одну фигуру и открывает другую (например, "} else {") –
FYI vim дистрибутивы обычно поставляются со встроенной помощью. Если вы наберете ': help fold', вы увидите все связанные с флешкой вещи. –
Вам нужно будет добавить какой язык вам интересен (не для всех языков есть {} для начала!); сворачивание в Vim - это отдельная тема. – Rook