所以我一直在 vim 中使用 NERDTree,因为它增加了能够浏览文件系统的强大功能。借助书签功能,它非常适合在项目之间切换。
但是,我已经开始在 vim 中越来越多地使用 Marks,并且想知道是否有人知道允许您拥有一组标记的插件。就像我希望 `C 转到我目前正在处理的项目中的配置文件一样。我每次切换项目时都可以设置它,但想知道是否有人知道打包它们的好方法。
想想看,如果它在您进入目录时仅读取文件(例如使用 NERDTree 在书签之间切换...),那将是非常棒的。
无论如何,有人知道这样的事情吗?
最佳答案
所以事实证明标记没有存储在 session 中。 , 但都存储在 viminfo 文件中!因此,我使用了您的 vimrc 中的代码作为基础,并使用了在 vim help files 中 session 部分底部找到的代码。创建一个函数,允许我保存 session 和 viminfo 文件。创建对我有用的基本项目管理!
这是我最终得到的代码。
if version >= 700
" localoptions has to be here:
" for some reason, new session loading code fails to set filetype of files in session
set sessionoptions=blank,tabpages,folds,localoptions,curdir,resize,winsize,winpos
endif
command! -nargs=1 Project :call LoadProject('<args>')
command! -nargs=+ SaveProject :call SaveProject('<args>')
let s:projectloaded = 0
let s:loadingproject = 0
let s:projectname = ''
function! LoadProject(name)
let s:projectloaded = 1
let s:projectname = a:name
exe "source ~/vimfiles/projects/".a:name.".vim"
exe "rviminfo! ~/vimfiles/projects/".a:name.".viminfo"
endfunction
function! SaveProject(name)
if a:name ==# ''
if s:projectloaded == 1
let pname = s:projectname
endif
else
let pname = a:name
endif
if pname !=# ''
let s:projectloaded = 0
let s:projectname = ''
exe "mksession! ~\\vimfiles\\projects\\".pname.".vim"
exe "wviminfo! ~\\vimfiles\\projects\\".pname.".viminfo"
endif
endfunction
autocmd VimLeave * call SaveProject()
关于VIM 标记和项目管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1959330/