2012年6月我写了myproject这个插件,还只是个半成品,不过凑合着也能用,就这样一直用下去了。每次想完善一下的时候就想着先凑合着用,等有时间再改,就这样居然拖了近两年……这次终于下定决心,利用过年前的空闲时间完全重写了myproject。其实真的写起来一天就搞定了,剩下几天都是测试、修复bug。

更新内容

  • 最开始的版本是纯vimscript的,后来因为在windows下更新tags时会弹出命令行窗口就加入了一部分python代码,现在为了兼容性还是改回了纯vimscript,不再依赖python。
  • 增加 :MPCreate 命令,可以通过此命令创建项目。
  • 增加 :MPProjectList 命令,可以浏览、删除、载入通过 :MPCreate 创建的项目。
  • 保存、载入Session的命令从 :MPSaveSession、:MPLoadSession 改成了 :MPSessionSave、:MPSessionLoad。
  • :MPCreate、:MPLoad、:MPSessionLoad、:MPSessionSave等命令都可以补全了。
  • 去掉几个实用性不大的选项。
  • 修改了部分变量名。

命令说明

:MPCreate

  • 直接输入 :MPCreate ,myproject会让你输入项目的路径及名称,然后会将该项目保存到项目列表中。当你用 :MPLoad 载入项目时就可以利用Tab自动补全项目路径了。
  • 加入”template”参数(即:MPCreate template),myproject会在项目中的project.vim文件中写入如下内容:

“let g:MP_Ctags_Enable = 1
“let g:MP_Global_Enable = 1
“set cscopeprg=gtags-cscope
“let g:MP_Cscope_Enable = 1
“let g:MP_Session_AutoSave = 1
“let g:MP_Session_AutoLoad = 1
“let g:MP_Write_AutoUpdate = 1
“let g:MP_Source_File_Ext_Name = “”

你可以按自己的需求去掉某个选项的注释。

  • 加入”question”参数(即:MPCreate question),myproject会一一询问你是否需要开启某个选项,然后将结果保存到project.vim中。见下图:

MPCreate_question.png

:MPProjectList

输入 :MPProjectList 会打开项目列表窗口,列出所有你创建的项目。

MPProjectList.png

移动光标到到你需要载入的项目上,按回车即可载入。按d则删除项目。

按小写的c会调用:MPCreate,按大写的C会调用:MPCreate question。

按q或者ESC会关闭项目列表窗口。

:MPLoad

输入”:MPLoad “后按Tab可以自动补全项目列表中的项目。

MPLoad.png

:MPSessionSave

直接输入 :MPSessionSave 会将Session保存在项目根目录的default.session.vim文件中。

假如输入”:MPSessionSave abc”则会保存到abc.session.vim。

:MPSessionLoad

直接输入 :MPSessionLoad 会载入默认的session文件default.session.vim。

假如输入”:MPSessionLoad abc”则会载入abc.session.vim。

输入”:MPSessionLoad “后按Tab可以自动补全项目根目录中所有后缀为”.session.vim”的文件名。

MPSessionLoad.png

变量说明

g:MP_ProjectList 项目列表文件。默认值: globpath($HOME, ‘.MP_ProjectList.vim’)

g:MP_ProjectFile 项目文件名。默认值: ‘project.vim’

g:MP_Window_Height 项目列表高度。默认值: ‘10’

g:MP_Auto_Close 选择项目后是否自动关闭项目列表。默认值: 1

g:MP_Ctags_Enable 是否启用ctags。默认值: 0

g:MP_Ctags_Path 定义ctags的路径。默认值: ‘ctags’

g:MP_Ctags_Opt 定义ctags参数。默认值: “

g:MP_Global_Enable 是否启用GNU global。默认值: 0

g:MP_Global_Path 定义GNU Global的路径。默认值: ‘global’

g:MP_Gtags_Path 定义gtags的路径。默认值: ‘gtags’

g:MP_Cscope_Enable 是否启用cscope。默认值: 0

g:MP_Cscope_Path 定义cscope的路径。默认值: ‘cscope’

g:MP_Source_File_Ext_Name 需要建立tags的文件后缀名,如:‘c,h,cpp’。默认值: “

g:MP_ConfigTitleBar_Enable 是否允许设置标题栏。默认值: 0

g:MP_TitleString 标题栏字符串。默认值:

%t\ %m%r\ [%{expand(\"%:~:.:h\")}]\ [ProjectPath=%{g:MP_Path}]\ -\ %{v:servername}

g:MP_Session_AutoSave 是否自动保存项目session。默认值: 0

g:MP_Session_AutoLoad 是否自动加载项目session。默认值: 0

g:MP_DefaultSessionName 项目默认session文件名。默认值: ‘default’

g:MP_Session_Opt Session选项。默认值: “blank,buffers,curdir,folds,globals,options,resize,tabpages,winpos,winsize”

g:MP_Path 项目路径。载入项目时插件会自动修改该变量,请勿手动设置。

g:MP_Write_AutoUpdate 在文件写入时是否自动更新tags。默认值: 0

g:MP_Bufread_AutoLoad 读入文件时是否自动载入项目文件。默认值: 0