Свертывание кода не сохраняется в моем vimrc - PullRequest
15 голосов
/ 26 января 2010

Я добавил следующий код в мой .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, чтобы увидеть список последних файлов, почему?)

Ответы [ 6 ]

15 голосов
/ 26 мая 2010

Проблема в том, что ваши исходные строки 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 
8 голосов
/ 26 апреля 2011

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

autocmd BufWrite * mkview
autocmd BufRead * silent loadview

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

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

2 голосов
/ 26 января 2010

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

mkdir -p ~/.vim/view
chmod 0750 ~/.vim ~/.vim/view
1 голос
/ 26 октября 2017

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

autocmd BufWrite * mkview
autocmd BufRead * silent! loadview

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

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

1 голос
/ 27 марта 2012

Добавьте это в начало вашего 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
0 голосов
/ 26 января 2010

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

...