我在使用Vim编写的以下脚本时遇到问题(由Yichao Zhou();来源:http://www.vim.org/scripts/script.php?script_id=4021)。问题分解为与Vim中的mkview
和loadview
相关的详细信息。
通过Vundle安装此插件时,我无法将fdm
和formatoptions
设置为一些新值。此插件不仅会恢复以前的观看次数,还会恢复fdm
和formatoptions
的设置。
在检查代码(附在最后)后,我不认为任何想象的事情应该发生。最终调用的唯一函数是mkview
和loadview
。
因此,根据下面列出的代码,它在哪里编写"视图"至?我想去那里删除所有旧的,希望使这个插件恢复正常。 (即适应fdm
和formatoptions
的新规范。)
谢谢。
if exists("g:loaded_restore_view")
finish
endif
let g:loaded_restore_view = 1
if !exists("g:skipview_files")
let g:skipview_files = []
endif
function! MakeViewCheck()
if &l:diff | return 0 | endif
if &buftype != '' | return 0 | endif
if expand('%') =~ '\[.*\]' | return 0 | endif
if empty(glob(expand('%:p'))) | return 0 | endif
if &modifiable == 0 | return 0 | endif
if len($TEMP) && expand('%:p:h') == $TEMP | return 0 | endif
if len($TMP) && expand('%:p:h') == $TMP | return 0 | endif
let file_name = expand('%:p')
for ifiles in g:skipview_files
if file_name =~ ifiles
return 0
endif
endfor
return 1
endfunction
augroup AutoView
autocmd!
" Autosave & Load Views.
autocmd BufWritePre,BufWinLeave ?* if MakeViewCheck() | silent! mkview | endif
autocmd BufWinEnter ?* if MakeViewCheck() | silent! loadview | endif
augroup END
答案 0 :(得分:1)
:mkview
命令默认使用'viewdir'
位置;你可以通过
:set viewdir?
您无法更改选项的原因是因为'viewoptions'
的默认值包含options
,IMO是一个错误的默认值(除非您经常以交互方式切换,并且确实需要录制)。你可以通过
:set viewoptions-=options
在~/.vimrc
中。当然,当前存储的视图仍然包含它,所以你也需要清理它们。
答案 1 :(得分:0)
感谢Ingo的建议和Yichao的帮助(插件的作者),问题已经通过以下步骤解决:
在_vimrc
中,将viewoptions
的设置指定为:
set viewoptions=cursor,folds,slash,unix
指定viewdir
,不带字符串的任何标记(不得有任何引号,"
或'
)。我的viewdir
已指定如下:
set viewdir=C:\Users\llinfeng\Onedrive\Vim-document\ViewFiles
或者,可以将viewdir保留为默认值。
请注意,当Vim对viewdir
的规范感到困惑时,它会开始将一些奇怪命名的文件保存到与“查看”文件相同的文件夹中。例如,在编辑_vimrc
并退出时,此类“视图”文件将在同一目录中找到,命名为(对于我的情况):C=-=+vim=+_vimrc=
。这只能在正确指定viewdir
时解决。
要“刷新”存储的视图,只需删除viewdir
中的所有内容即可。