Путаница насчет сворачивания vim - как отключить?


116
  1. Когда я открываю файл, он выглядит так: введите описание изображения здесь или даже так введите описание изображения здесь
  2. Когда я открываю все складки, они снова закрываются, когда я перехожу к другому буферу и возвращаюсь.
  3. Чтобы с ним можно было работать, мне приходится применять zRкаждый раз при открытии буфера.

Я установил их в .vimrc:

set foldlevelstart=99
set foldlevel=99

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


2
При первом запуске vim запустите :set foldlevelи :set foldlevelstartпосмотрите, на что они установлены. Я предполагаю, что эти значения где-то сбрасываются. Когда я добавляю эти значения в свой vimrc, все работает, как ожидалось.
cledoux

Ответы:


209

Ты не один.

set nofoldenable    " disable folding

7
Обратите внимание, что это не влияет на vimdiff. Когда vim создает окно сравнения, кажется, что этот foldenableпараметр отменяет . Единственный обходной путь, который я нашел, - это установить contextподопцию diffoptчего-то действительно огромного. например:set diffopt+=context:99999
Лоуренс Гонсалвес,

14
это была уценка vim . Чтобы отключить сворачивание с помощью vim-markdown, используйтеlet g:vim_markdown_folding_disabled=1
BenjaminGolder

1
@BenjaminGolder, мы исправили это по адресу: github.com/plasticboy/vim-markdown/pull/131
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

2
Мне больше нравится приведенное ниже решение glts: используйте zi для переключения складывания. Одна из немногих БОЛЬШИХ проблем с vim - это огромное количество вещей, которые нужно запомнить. Такие мелочи, как «zi» вместо «складной» - это подарок бога!
Тьерри

1
похоже, у меня не работает :( Код Python все еще свернут.
weima

55

Самый простой способ отключить (и включить) сворачивание на лету - это zi.

zi- это команда нормального режима, которая переключается 'foldenable', как и :set foldenable!.

Мнемоника: «свернуть и перевернуть». Смотрите :h zi.


44

Добавьте set nofoldenableв свой ~ / .vimrc, чтобы отключить сворачивание.


@Magnus: Это сделано намеренно, vimdiffчтобы не показывать много одинаковых строк. Сценарий использования другой, поэтому на него не влияет nofoldenable. zRоткрывает все складки; Я не знаю о настройке, запрещающей сворачивание vimdiff. (Поскольку это единственное место, где меня не беспокоит складывание.)
DevSolar

16

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

Если вы хотите оставить сворачивание включенным и просто всегда начинать со всеми открытыми складками, вики vim расскажет, как это сделать. Возможно, вас интересует метод автокоманды.

" Tweak the event and filetypes matched to your liking. 
" Note, perl automatically sets foldmethod in the syntax file
autocmd Syntax c,cpp,vim,xml,html,xhtml setlocal foldmethod=syntax
autocmd Syntax c,cpp,vim,xml,html,xhtml,perl normal zR

Я также рекомендовал бы поискать специальные методы сворачивания для используемого вами языка. Простой поиск в Google «vim <insert language here> fold» должен вызвать ряд опций. Поэкспериментируйте с различными вариантами, пока не найдете способ складывания, который вам нравится.


4

Я добавил эту строку в свой .vimrcфайл, потому что у меня была такая же проблема:

autocmd FileType * exe "normal zR"

Эта команда будет выполняться каждый раз, когда вы автоматически открываете файл. Так вы не увидите бага, и функция складывания тоже не пропадет)


3

Просто добавив еще один, чтобы завершить обсуждение.

Чтобы включить сворачивание кода:

:set foldenable или короче, :set fen

Чтобы отключить сворачивание кода:

:set nofoldenable или короче, :set nofen

После того, как вы включите сворачивание кода, у вас будут все команды, подобные zf,zo etcвашему желанию, в соответствии с настройкой того, :set fdm=xxxxгде типичные значенияexpr,syntax,manual etc.


1

Извините, если я отвечаю на связанный вопрос, но мне показалось полезным отображать два файла вместе с отключенным сворачиванием примерно так:

vim "+set nofen" -O file1 file2

1

В Vim невероятно сложно отключить сворачивание, особенно при использовании vimdiff.
Ни одно из вышеперечисленных решений не помогло мне, но это помогло (добавить в ~ / .vimrc):

au WinEnter * set nofen
au WinLeave * set nofen

1

Ставлю foldlevel=20, foldlevelstart=20и пользуюсь foldmethod=syntax. Это помогает мне работать с правильным сворачиванием в vim.

set nofoldenable отключить сворачивание, но иногда мне это нужно

vim.wikia

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.