加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

VIM标志和项目管理

发布时间:2020-12-15 21:37:25 所属栏目:安全 来源:网络整理
导读:所以我一直在 vim中使用NERDTree,因为它增加了能够浏览文件系统的强大功能.使用Bookmarks功能,它非常适合在项目之间切换. 但是,我已经开始在vim中越来越多地使用Marks并且想知道是否有人知道允许你有一组标记的插件.就像我想要`C转到我目前正在进行的项目中
所以我一直在 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! ~vimfilesprojects".pname.".vim"
        exe "wviminfo! ~vimfilesprojects".pname.".viminfo"
    endif

endfunction

autocmd VimLeave * call SaveProject()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读