Code folding is not saved in my vimrc

后端 未结 6 1467
伪装坚强ぢ
伪装坚强ぢ 2021-02-07 08:25

I added the following code to my .vimrc:

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


        
相关标签:
6条回答
  • 2021-02-07 08:46

    Per Jays comments this is the most elegant solution, I have a LOT of plugins and run it on multiple OSes and have just tested it.

    autocmd BufWrite * mkview
    autocmd BufRead * silent loadview
    

    It does not break MRU and make you have to double query MRU It does not error when you :new into an empty buffer It also doesn't require you to create FileType patern for every file-type you may possibly use.

    NOTE: using "loadview" on "BufNewFile" apears to be what confuses MRU, rather pointless trying to render folds on an empty buffer I would have thought??

    0 讨论(0)
  • The problem is that your original autocmd lines are set to match the pattern *.*, i.e. any filename which contains some characters, followed by a dot, followed by some more characters.

    So the file test.html or anothertest.css will be matched, and your command will run, but .vimrc, which has nothing prior to the dot, will not be matched.

    The solution is to set up an autocmd which will match .vimrc. Your guess of ?* does match this (because it's looking for any character, followed by any number of other characters), but you say it somehow affects MRUs. I don't know what plugin you're using for your MRUs, but I'm guessing it's one which opens the MRU list in a temporary window with a name that matches the ?* pattern, and the subsequent loading of the view is somehow messing with your MRUs.

    Therefore, the fix is to use something a bit more specific to match .vimrc:

    autocmd BufWinLeave .vimrc mkview
    autocmd BufWinEnter .vimrc silent loadview 
    

    It's possible that this will work, too, and is more general:

    autocmd BufWinLeave .* mkview
    autocmd BufWinEnter .* silent loadview 
    
    0 讨论(0)
  • 2021-02-07 08:53

    The view details get saved in view file in the vimfiles\view directory. A separate view file is created for every file you edit.

    0 讨论(0)
  • 2021-02-07 08:56

    i had a similar problem. maybe you have to create the directory which holds the data.

    mkdir -p ~/.vim/view
    chmod 0750 ~/.vim ~/.vim/view
    
    0 讨论(0)
  • 2021-02-07 08:58

    With Neovim in Arch Linux, I was getting error messages until I appended a ! after silent (silent!). Here is my ~/.vimrc entry,

    autocmd BufWrite * mkview
    autocmd BufRead * silent! loadview
    

    Details here:

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

    0 讨论(0)
  • 2021-02-07 09:01

    Add this to the top of your vimrc to make sure the viewdir is present

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

    Then this in your autocmds section:

    autocmd BufWrite * mkview
    autocmd BufNewFile,BufRead * silent loadview
    
    0 讨论(0)
提交回复
热议问题