"mkview" 是否保留 `fdm` 和 `formatoptions` 的记录?如果是这样,如何刷新它?
Does "mkview" keep a record of `fdm` and `formatoptions`? If so, how to refresh it?
我在使用 Vim 中编写的以下脚本时遇到问题(by Yichao Zhou ();来源:http://www.vim.org/scripts/script.php?script_id=4021)。该问题分解为 Vim.
中与 mkview
和 loadview
相关的详细信息
当通过 Vundle 安装此插件时,我无法将 fdm
和 formatoptions
设置为一些新值。这个插件不仅可以恢复以前的视图,还可以恢复 fdm
和 formatoptions
.
的设置
检查代码(附在末尾)后,我认为不应该发生任何奇怪的事情。最终调用的唯一函数是 mkview
和 loadview
.
那么,根据下面列出的代码,它会将 "views" 写入何处?我想去那里删除所有旧的东西,希望能让这个插件恢复正常。 (即适应 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
:mkview
命令默认使用'viewdir'
位置;您可以通过
检查值
:set viewdir?
您无法更改选项的原因是 'viewoptions'
的默认值包含 options
,IMO 是一个错误的默认值(除非您经常以交互方式切换,并且确实想要记录)。您可以通过
解决这个问题
:set viewoptions-=options
在你的 ~/.vimrc
中。当然,当前存储的视图仍然包含它,因此您也需要清理它们。
感谢Ingo的建议和Yichao(插件作者)的帮助,问题已通过以下步骤解决:
在_vimrc
中,将viewoptions
的设置指定为:
set viewoptions=cursor,folds,slash,unix
指定 viewdir
, 不带 任何字符串标记(不得有任何引号,"
或 '
).我的viewdir
已指定如下:
set viewdir=C:\Users\llinfeng\Onedrive\Vim-document\ViewFiles
或者,可以将 viewdir 保留为默认值。
请注意,当 Vim 对 viewdir
的规范感到困惑时,它会开始将一些奇怪的命名文件保存到与 "making a view of" 相同的文件夹中。例如,在编辑 _vimrc
并退出时,将在同一目录中找到这样的 "view" 文件,名称(对于我的情况)为:C=-=+vim=+_vimrc=
。这只有在正确指定 viewdir
时才能解决。
对于 "refreshing" 存储的视图,只需删除 viewdir
中的所有内容即可。
我在使用 Vim 中编写的以下脚本时遇到问题(by Yichao Zhou ();来源:http://www.vim.org/scripts/script.php?script_id=4021)。该问题分解为 Vim.
中与mkview
和 loadview
相关的详细信息
当通过 Vundle 安装此插件时,我无法将 fdm
和 formatoptions
设置为一些新值。这个插件不仅可以恢复以前的视图,还可以恢复 fdm
和 formatoptions
.
检查代码(附在末尾)后,我认为不应该发生任何奇怪的事情。最终调用的唯一函数是 mkview
和 loadview
.
那么,根据下面列出的代码,它会将 "views" 写入何处?我想去那里删除所有旧的东西,希望能让这个插件恢复正常。 (即适应 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
:mkview
命令默认使用'viewdir'
位置;您可以通过
:set viewdir?
您无法更改选项的原因是 'viewoptions'
的默认值包含 options
,IMO 是一个错误的默认值(除非您经常以交互方式切换,并且确实想要记录)。您可以通过
:set viewoptions-=options
在你的 ~/.vimrc
中。当然,当前存储的视图仍然包含它,因此您也需要清理它们。
感谢Ingo的建议和Yichao(插件作者)的帮助,问题已通过以下步骤解决:
在
_vimrc
中,将viewoptions
的设置指定为:set viewoptions=cursor,folds,slash,unix
指定
viewdir
, 不带 任何字符串标记(不得有任何引号,"
或'
).我的viewdir
已指定如下:set viewdir=C:\Users\llinfeng\Onedrive\Vim-document\ViewFiles
或者,可以将 viewdir 保留为默认值。
请注意,当 Vim 对 viewdir
的规范感到困惑时,它会开始将一些奇怪的命名文件保存到与 "making a view of" 相同的文件夹中。例如,在编辑 _vimrc
并退出时,将在同一目录中找到这样的 "view" 文件,名称(对于我的情况)为:C=-=+vim=+_vimrc=
。这只有在正确指定 viewdir
时才能解决。
对于 "refreshing" 存储的视图,只需删除 viewdir
中的所有内容即可。