Сгибание кода не сохраняется в моем vimrc

Я добавил следующий код в мой .vimrc:

" save and restore folds when a file is closed and re-opened
autocmd BufWinLeave *.* mkview
autocmd BufWinEnter *.* silent loadview 

HTML и CSS-документы сохраняют и восстанавливают свои складки, но сгибание кода не сохраняется в моем .vimrc

Любые предложения?

EDIT:

Следующий код решает проблему:

au BufWinLeave ?* mkview
au BufWinEnter ?* silent loadview

но если я его напишу, файлы MRU исчезнут из моего списка (и мне нужно открыть MRU дважды, чтобы увидеть список последних файлов, почему?)

Ответы

Ответ 1

Проблема в том, что ваши исходные строки autocmd установлены в соответствии с шаблоном *.*, то есть любым именем файла, которое содержит некоторые символы, за которым следует точка, а затем еще несколько символов.

Таким образом, файл test.html или anothertest.css будет сопоставлен, и ваша команда будет запущена, но .vimrc, которая ничего не имеет до точки, не будет сопоставлена.

Решение состоит в том, чтобы настроить autocmd, который будет соответствовать .vimrc. Ваша догадка ?* соответствует этому (потому что он ищет любого персонажа, за которым следует любое количество других символов), но вы говорите, что это каким-то образом влияет на MRU. Я не знаю, какой плагин вы используете для своих MRU, но я предполагаю, что он открывает список MRU во временном окне с именем, которое соответствует шаблону? *, И последующая загрузка представления каким-то образом возиться с вашими MRU.

Следовательно, исправление заключается в использовании чего-то более конкретного для соответствия .vimrc:

autocmd BufWinLeave .vimrc mkview
autocmd BufWinEnter .vimrc silent loadview 

Возможно, что это тоже сработает и будет более общим:

autocmd BufWinLeave .* mkview
autocmd BufWinEnter .* silent loadview 

Ответ 2

Per Jays комментирует это самое элегантное решение, у меня есть много плагинов и запускайте его на нескольких операционных системах и только что протестировали его.

autocmd BufWrite * mkview
autocmd BufRead * silent loadview

Он не прерывает MRU и заставляет вас удвоить запрос MRU Это не ошибка, когда вы: новый в пустой буфер Он также не требует, чтобы вы создали FileType patern для каждого типа файла, который вы, возможно, используете.

ПРИМЕЧАНИЕ: использование "loadview" на "BufNewFile" похоже на то, что смущает MRU, а бессмысленная попытка визуализации сгибов в пустом буфере я бы подумал

Ответ 3

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

mkdir -p ~/.vim/view
chmod 0750 ~/.vim ~/.vim/view

Ответ 4

Добавьте это в начало vimrc, чтобы убедиться, что viewdir присутствует.

let &viewdir=expand("$HOME") . "/.bk/.vim/viewdir"
if !isdirectory(expand(&viewdir))|call mkdir(expand(&viewdir), "p", 451)|endif

Затем это в разделе autocmds:

autocmd BufWrite * mkview
autocmd BufNewFile,BufRead * silent loadview

Ответ 5

С Neovim в Arch Linux я получал сообщения об ошибках, пока не добавил! после молчания (молчать!). Вот моя запись ~/.vimrc,

autocmd BufWrite * mkview
autocmd BufRead * silent! loadview

Подробности здесь:

https://github.com/neovim/neovim/issues/7442#issuecomment-339752054

Ответ 6

Детали просмотра будут сохранены в файле вида в каталоге vimfiles\view. Для каждого файла, который вы редактируете, создается отдельный файл вида.