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

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

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

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

Какие-либо предложения?

РЕДАКТИРОВАТЬ:

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

au BufWinLeave ?* mkview
au BufWinEnter ?* silent loadview

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

6 ответов

Решение

Проблема в том, что ваш оригинал 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 

По словам Пера Джейса, это самое элегантное решение, у меня МНОГО плагинов, я запускаю его на нескольких ОС и только что проверил.

autocmd BufWrite * mkview
autocmd BufRead * silent loadview

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

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

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

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

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

autocmd BufWrite * mkview
autocmd BufRead * silent! loadview

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

https://github.com/neovim/neovim/issues/7442

Добавьте это в начало вашего 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

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

Другие вопросы по тегам