==============================================
VimLite 就是一个把 vim 变成我本人所想的 C/C++ IDE 的一个个人开源项目
用到的组件主要是 codelite 这个ide里面的
现在暂时算是完成了codelite项目模块的“移植”(用 python 重写), 基于 ctags parser 的全能补全
当然,还有一些小功能没有完成的,例如环境变量和 Custom Makefile Rules
系统要求:gvim 7.3(7.2估计也行,但是好像忘记用了什么 7.3的新特性了),同时要求vim的 +python 特性存在
同时要求
代码: 全选
set nocp
filetype plugin on
代码: 全选
sudo apt-get install build-essential
代码: 全选
sudo apt-get install python python python-lxml libwxbase2.8-0
下载最下面的附件,解压
1. 用 gvim 打开 VimLite-<version>.vba,执行命令
2. 把 vimlite 目录里面的文件放到用户目录下的 .vimlite 里面(正常情况下应该没有这个目录的,新建一个)
代码: 全选
:so %
使用方法:
1. 项目管理
打开 gvim, 执行命令
代码: 全选
:VLWorkspaceOpen
而是按 '.' (点),之后会看到菜单,选择 ’3. New Workspace...',之后会跳到一个新窗口,这是一个对话框交互窗口
把光标放到任何一个“控件”行,按 enter 或者 双击鼠标,会有提示输出之类的动作
例如我新建一个 Test 的工作空间(注:这类名字请最好使用符合 C 语言的变量名字,尽量不要使用特殊符号) 按 <C-x><C-s>(ctrl-x 后再 ctrl-s)会保存推出并创建工作空间
然后,再按 . ,选择 “Create A New Project...”,之后又是一个交互对话,同上的操作
最下面那个是一个项目模版列表,可以在列表上面的组合框选择不同类别,例如我选一个最简单的“Simple executable (gcc)”
注:非gnu gcc或gnu g++的编译器的模版不要选 同样按 <C-x><C-s> 结束
最后你就看到左侧多了个项目,可以展开来看看,有一个 main.c文件,双击或enter键可以打开
想编译的话,就点工具栏的三个新按钮的左边那个 运行的话就点右边那个 就这样简单。
2. 全能补全
1) 生成必要的数据库
把光标放到左侧工作空间缓冲区的工作空间名字的行中, 按 '.' 或鼠标右键(这个估计多数不行),
选择菜单 'Parse Workspace (Quick)', 会解析整个工作空间的文件, 这可能需要一些时间的.
2) 全能补全已经开启, 按 <C-x><C-o>, 或者在成员补全的时候就会自动提示的了.
支持模版,
基本支持 stl
支持 using [namespace]
不支持函数局部变量, 因为 ctags 不解析函数局部变量或即使解析了信息也不全. 一个折衷的解决方案是用 <C-x><C-n> 补全
不支持在包含文件中使用 using namespace, 因为这本来就不推荐这样做.
不支持友元, 这个只要显示了私有成员就没问题了
不支持重载了返回类型的函数
不支持复杂的类型定义(typedef typename _Alloc::template rebind<value_type>::other _Pair_alloc_type;) 3. 定制
1. 工作空间的定制
[vim]"工作空间缓冲区的宽度
let g:VLWorkspaceWinSize = 30
"工作空间缓冲区的名字
let g:VLWorkspaceBufName = '--VLWorkspace--'
"高亮工作空间缓冲区光标所在行, 若为 0, 不高亮
let g:VLWrokspaceHighlightCursorline = 1
"若为 1,编辑项目文件时,在工作空间的光标会自动定位到对应的文件所在的行
let g:VLWorkspaceLinkToEidtor = 1
"启用工具栏图标菜单(构建, 清理, 运行), 若为 0, 禁用
let g:VLWorkspaceEnableMenuBarMenu = 1
"启用菜单栏菜单(VimLite), 若为 0, 禁用
let g:VLWorkspaceEnableToolBarMenu = 1
"启用 cscope, 若为 0, 禁用(以后补充用法)
let g:VLWorkspaceEnableCscope = 1
"仅在启用 cscope 时有用, 仅连接存在的 cscope 数据库, 不主动创建.
let g:VLWorkspaceJustConnectExistCscopeDb = 1
"高亮工作空间源文件
let g:VLWorkspaceHighlightSourceFile = 1
"在标题栏中显示当前工作空间名称
let g:VLWorkspaceDispWspNameInTitle = 1
"构建项目前保存所有已修改的文件
let g:VLWorkspaceSaveAllBeforeBuild = 0
"使用基于 clang 的全能补全
let g:VLWorkspaceUseClangCC = 0
"活动项目的高亮颜色
let g:VLWorkspaceActiveProjectHlGroup = 'SpecialKey'
"弹出基于字符的菜单的按键
let g:VLWorkspaceMenuKey = '.'
"弹出基于 gtk 的菜单的按键, 这个默认值可能会表现为失效, 请修改为你想要的值
let g:VLWorkspacePopupMenuKey = '<RightRelease>'
[/vim]
1. OmniCpp 全能补全定制
[vim]"显示函数参数提示的快捷键
let g:VLW_DispCalltipsKey = '<A-p>'
"显示重载函数的下一个函数参数提示的快捷键
let g:VLW_NextCalltipsKey = '<A-j>'
"显示重载函数的上一个函数参数提示的快捷键
let g:VLW_PrevCalltipsKey = '<A-k>'
"自动检测 '.' 的全能补全
let g:VLOmniCpp_MayCompleteDot = 1
"自动检测 '>' 的全能补全
let g:VLOmniCpp_MayCompleteArrow = 1
"自动检测 ':' 的全能补全
let g:VLOmniCpp_MayCompleteColon = 1
"补全菜单选择方式
" 0 -> 不选择第一个条目
" 1 -> 选择第一个条目, 并插入文件
" 2 -> 选择第一个条目, 但不插入文本
let g:VLOmniCpp_ItemSelectionMode = 2
"映射回车键为显示函数参数提示的快捷键
"即在弹出菜单选择的是函数的时候, 直接按 Enter 键, 自动选择并结束补全并显示函数参数提示
let g:VLOmniCpp_MapReturnToDispCalltips = 1[/vim]
============================================================
下面简单介绍下项目配置
在工作空间窗口里面,在不同的节点类型按 . 会弹出不同的菜单,在项目上按 . ,选择 Settings,就会进入settings 对话框 内容基本一目了然,双击或enter编辑
需要说明的是,所有的选项是以 “;” (分号)分割的,相对目录都是相对于 .project 文件所在目录的
还有一些内部变量,以下是列表,$(CodeLitePath) 无意义 还有什么疑问的,可以参考codelite的项目设置说明 http://codelite.org/LiteEditor/ProjectSettings
如果你的codelite项目没有使用自定义环境变量和custom makefile rules的话,可以用vimlite打开,理论上是完全兼容的,可编译和运行
另外,如果你编译有错误,可以运行命令 :cwindow 打开quickfix窗口,具体参考 :h quickfix
PS: 安装包里面有个 00-VimLite 文件,可作为 nautilus-scripts 使用,用于方便打开 .workspace 文件的,内容如下
代码: 全选
#!/bin/sh
gvim -c "set columns+=30 | VLWorkspaceOpen $1"
以下为陈旧信息, 不支持
============================================================
20110423
效果图 快捷键是 <C-x><C-o>,> . : 的时候会自动弹出成员补全。我定义了一个 <C-n>,想禁掉,进去 VLWClangCodeCompletion.vim 注释掉
暂时没有做函数 calltips,你可以 set cot+=preview 来看一下预览,都是clang生成的元信息,暂未处理
已知问题,在头文件里面,没法补全。类中的成员,只能 this-> 才能补全,clang的问题,2.7,看来需要更新到2.9再试试
缺点,比较慢,没办法,需要实时找齐头文件然后分析,暂时不知道怎么正确缓存信息,如果能用sqlite缓存信息,还有如此就精确度的话,就完美了。
即使是用预编译头,也是比较慢……
明天升级到2.9,看看有没有什么大的改善
TODO: cscope 集成
TODO: 函数 calltips,vim原生没办法做成好像ide的那样的calltips,希望价格功能能随意弹出类似自动完成的下来框啊,暂时只能在命令行显示,好像echofunc一样。基于clang的calltips速度还是比较慢的,python的clang库帮顶没找到,不然用库调用应该会快一些。
============================================================
20110424 1.加快了自动完成(得益于 2.9 版本的 clang)
2.添加预编译头支持,可以大大加快clang的自动完成速度
3.添加函数 calltips 支持,见上图
4.添加cscope支持,但赞未开放,需要用的话,运行命令
代码: 全选
:call g:InitVLWCscopeDatabase()
代码: 全选
:call g:UpdateVLWCscopeDatabase()
已知问题:
1.还是不能在头文件中补全,貌似是clang那边的问题
2.9 版的clang这里下载,10.04测试没有问题。和源里面的 clang 2.7冲突,请先删了 2.7 再装
http://code.google.com/p/vimlite/downloads/list