mkview和loadview是在vim中保存状态的绝佳方法,很多人使用这样的.vimrc命令来自动保存所有文件的状态.
au BufWinLeave ?* mkview
au BufWinEnter ?* silent loadview
Run Code Online (Sandbox Code Playgroud)
这将创建状态文件(在〜/ .vim/view等位置)
但有时,您希望清除视图信息,以便文件以新的状态启动.
我能看到这样做的唯一方法是:
这些都很麻烦,涉及到vim以外的事情.是不是有某种方法:
我想你可以编写一个带有文件路径的shell脚本,并试图找出.vim/view目录中vim的'= +'路径编码并删除它然后从vim内部调用shell脚本,但看起来好像vim应该对此有一些支持.
看起来vim没有这种能力,所以我需要写一个正确引用的vimscript(感谢灵感和来自Ingo的'&viewdir'的注释).
这是vimscript,您可以将其添加到.vimrc中以将命令添加到vim:
" # Function to permanently delete views created by 'mkview'
function! MyDeleteView()
let path = fnamemodify(bufname('%'),':p')
" vim's odd =~ escaping for /
let path = substitute(path, '=', '==', 'g')
if empty($HOME)
else
let path = substitute(path, '^'.$HOME, '\~', '')
endif
let path = substitute(path, '/', '=+', 'g') . '='
" view directory
let path = &viewdir.'/'.path
call delete(path)
echo "Deleted: ".path
endfunction
" # Command Delview (and it's abbreviation 'delview')
command Delview call MyDeleteView()
" Lower-case user commands: http://vim.wikia.com/wiki/Replace_a_builtin_command_using_cabbrev
cabbrev delview <c-r>=(getcmdtype()==':' && getcmdpos()==1 ? 'Delview' : 'delview')<CR>
Run Code Online (Sandbox Code Playgroud)
添加此内容后,您只需执行以下操作:
:delview
Run Code Online (Sandbox Code Playgroud)
从命令行,它将删除为当前缓冲区/文件创建的视图
您的$ HOME环境变量必须设置为vim认为'〜'的任何内容
归档时间: |
|
查看次数: |
2434 次 |
最近记录: |