微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VIM标志和项目管理

所以我一直在 vim中使用NERDTree,因为它增加了能够浏览文件系统的强大功能.使用Bookmarks功能,它非常适合在项目之间切换.

但是,我已经开始在vim中越来越多地使用Marks并且想知道是否有人知道允许你有一组标记插件.就像我想要`C转到我目前正在进行的项目中的配置文件.我可以在每次切换项目时设置它,但是想知道是否有人知道打包它们的好方法.

在考虑它时,我认为如果它只是在你进入一个目录时读取一个文件(比如用NERDTree在书签之间切换……)就太棒了.

无论如何,任何人都知道这样的事情?

解决方法

事实证明,标记不存储在 session中,而是存储在viminfo文件中!因此,我使用了vimrc中的代码作为基础,并在 vim help files中的会话部分底部找到了代码,以创建一个允许我保存会话和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()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐