Свертывание кода не сохраняется в моем 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
Подробности здесь:
Добавьте это в начало вашего 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
каталог. Отдельный файл представления создается для каждого редактируемого файла.