基于 GVim 的 C/C++ IDE -- VimLite 介绍

Vim、Emacs配置和使用
回复
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

基于 GVim 的 C/C++ IDE -- VimLite 介绍

#1

帖子 fanhe » 2011-08-24 21:10

重新开一贴, 原来那贴不更新了, 主要是这个项目框架完整了, 只是完善的问题
--------------------------------------------------------------------------------

VimLite
http://www.vim.org/scripts/script.php?script_id=3647
http://code.google.com/p/vimlite/

简介
一个基于 vim 的 C/C++ IDE. 主要包括以下三个模块:
- 项目管理
- 代码补全
- 程序调试

依赖
- python
- python-lxml
- gcc
- make
- gdb
- cscope

需要 gvim 7.3, 并且 +python, +netbeans_intg 特性, 并且在 .vimrc 中至少打开以下两个选项

代码: 全选

set nocp
filetype plugin on
ubuntu 的话, 这样安装就OK了

代码: 全选

sudo apt-get install python python-lxml build-essential gdb cscope
安装
- 解压下载的文件.
- 把 vimlite 目录的所有文件复制到 ~/.vimlite, 如果 ~/.vimlite 目录不存在, 新建之.
- 用 vim 打开 VimLite.vba, 运行 ':so %'.

使用
请查看帮助, 在 vim 运行 ':h VimLite.txt'.

--------------------------------------------------------------------------------
下面是简单的使用介绍

1. 安装完毕后, 运行以下命令开始

代码: 全选

:VLWorkspaceOpen
Screenshot-<DEFAULT_WORKSPACE> ==VLWorkspace== - (~) - GVIM2.png
2.按 "." (点), 弹出菜单, 选择 "New Workspace...", 会生成一个模拟 GUI 操作的缓冲区(我喜欢这样直观的操作)
Screenshot-<DEFAULT_WORKSPACE> New Workspace - (~) - GVIM2.png
3.按 <C-x><C-s> 或者在下面的 OK 按 <CR> (鼠标左键双击也可以)就可以创建一个工作区文件了

4.按 "." (点), 弹出菜单, 选择 "Create a New Project...", 根据提示操作就行了, 建议不要选 gcc 和 g++ 以外的东西, 因为没有测试过
Screenshot-<Test> New Project - (~) - GVIM2.png
5.建了个最简单的 "Hello World" 项目, 现在就可以编译运行了
编译

代码: 全选

:VLWBuildActiveProject
运行

代码: 全选

:VLWRunActiveProject
也可以按工具栏对应的按钮

6. 代码自动补全需要先建立个数据库, 在工作区缓冲的工作区名字那里按 "." (点) 弹出菜单, 选择 "Parse Workspace (Quick)" 生成数据库,
然后写代码的时候, 需要补全的时候, 按 <C-x><C-o> 就可以补全的了.
理论上, 你每次修改了源代码或者包含了新的头文件都需要重新选择 "Parse Workspace (Quick)" 生成数据库的. 建议打开以下几个选项来一点自动化

代码: 全选

" 保存文件时, 自动 Parse 该文件
let g:VLWorkspaceParseFileAfterSave = 1
" 与上面的选项一起工作, 仅自动 Parse 头文件, 因为符号一般在头文件定义, 源文件的实现的信息一般没什么用
" 需要强制 Parse 当前文件的话, 用 :VLWParseCurrentFile 命令
let g:VLWorkspaceNotParseSourceAfterSave = 1
反正, 什么时候感觉符号不够新的时候, 就选择 "Parse Workspace (Quick)"
Screenshot-<Test> main.c + (~-Desktop-ABCDEFG-Test-First) - GVIM2.png
7. 项目设置什么的, 直接看项目行的弹出菜单吧, 只要对 gcc 的编译参数熟悉的话, 问题很简单, 或者用自己的 makefile 也可以
Screenshot-<Test> == First ProjectSettings == - (~) - GVIM2.png
8. 调试的集成就比较低了, 现在是凑合能用, 点工具栏对应的按钮, 先启动 pyclewn, 再设置断点, 再运行, 然后看变量什么的, 有时候需要用命令查看具体的东东的, 具体看 pyclewn 的手册吧
Screenshot.png
一般我还会用 tagbar, 所以一般的工作状态是这样
Screenshot-1.png
上次由 fanhe 在 2011-08-24 21:55,总共编辑 2 次。
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

Re: 基于 GVim 的 IDE -- VimLite 介绍

#2

帖子 fanhe » 2011-08-24 21:30

下面补充一些其他的
我自己对于 VimLite 的设置

代码: 全选

let g:VLWorkspaceSaveAllBeforeBuild = 1
let g:VLCCC_ItemSelectionMode = 10 "这个选项自己用的, 不要乱用
let g:VLWorkspaceParseFileAfterSave = 1
let g:VLWorkspaceNotParseSourceAfterSave = 1
let g:VLCalltips_IndicateArgument = 0
let g:VLCalltips_EnableSyntaxTest = 0
let g:VLWDbgSaveBreakpointsInfo = 0
cscope 的使用
一般不建议自动为项目生成 cscope 数据库(需要自动生成的话, 查看帮助打开选项), 都是需要创建数据库的时候运行

代码: 全选

:VLWInitCscopeDatabase 1
需要更新的时候, 运行

代码: 全选

:VLWUpdateCscopeDatabase
cscope 一般的使用直接 :h cscope 就知道了, 下面的键位绑定用于利用 cscope 数据库快速切换头/源文件的

代码: 全选

nnoremap <silent> <C-\>a :call <SID>AlterSource()<CR>

function! s:AlterSource() "{{{
    let l:file = expand("%:t:r")
    let l:ext = expand("%:t:e")
    if l:ext == "c" || l:ext == "cpp"
        try
            exec 'cs find f \<' . l:file . ".h$"
        catch
            try
                exec 'cs find f \<' . l:file . ".hpp$"
            catch
                return
            endtry
            return
        endtry
    elseif l:ext == "h" || l:ext == "hpp"
        try
            exec 'cs find f \<' . l:file . ".c$"
        catch
            try
                exec 'cs find f \<' . l:file . ".cpp$"
            catch
                return
            endtry
            return
        endtry
    endif
endf
"}}}
Calltips
基本的 Calltips 肯定是支持的, 只是 vim 没有专门用于 calltips 的显示前端设施, 只能在命令行那里显示了
主要特色是支持基本的构造函数 calltips, 默认是 <A-p> 触发, <A-j> 和 <A-k> 切换
Screenshot-<wxWidgets> main.cpp + (~-Desktop-projects-wxWidgets-JustTest) - GVIM.png
Quickfix
Quick 默认就是支持的, 直接 copen 打开, 每次构建都会更新它的内容的


----------------------------------------------------------------------------------------------
简单的来说, 就是这样了, 项目需要完善的还有不少, 下面列举一些
1. Omnicpp 的多线程实现, 用于实时更新数据库和屏蔽不必要的符号
2. 调试器的易用性
3. 重写个 minibufexp, 没有打开缓冲的标签列表实在不太方便

过去了
附件
VIMCCC_On_Windows.png
VIMCCC_On_Linux.png
上次由 fanhe 在 2012-02-13 0:33,总共编辑 7 次。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 基于 GVim 的 IDE -- VimLite 介绍

#3

帖子 eexpress » 2011-08-24 21:39

支持研究。
只是vim本来就不是以ide出发的。
● 鸣学
头像
自由建客
帖子: 13468
注册时间: 2008-07-30 23:21
系统: Debian stable AMD64

Re: 基于 GVim 的 IDE -- VimLite 介绍

#4

帖子 自由建客 » 2011-08-24 21:49

:em11

原来那个帖子在哪?
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

Re: 基于 GVim 的 IDE -- VimLite 介绍

#5

帖子 fanhe » 2011-08-24 21:59

eexpress 写了:支持研究。
只是vim本来就不是以ide出发的。
IDE大而全, bram一个人的精力做不来, 而且不是所有人都喜欢这种工作方式
做成个平台让其他人来做就OK了

软件已经是一门工程了, 不是以前的刀耕火种年代了, 一个提高效率的IDE我觉得是非常必要的
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

Re: 基于 GVim 的 IDE -- VimLite 介绍

#6

帖子 fanhe » 2011-08-24 22:12

自由建客 写了::em11

原来那个帖子在哪?
那贴不看也罢
风间星魂
帖子: 490
注册时间: 2009-06-20 23:53

Re: 基于 GVim 的 C/C++ IDE -- VimLite 介绍

#7

帖子 风间星魂 » 2011-09-03 16:07

mark一个,我更关心补全。。。特别是glibc和c++模板。。 :em20
liliwang
帖子: 41
注册时间: 2007-10-08 1:05

Re: 基于 GVim 的 C/C++ IDE -- VimLite 介绍

#8

帖子 liliwang » 2011-09-16 9:34

楼主牛人,不过,我遇到了一个问题,在打开文件的时候说找不到vlutils#OpenFIle函数。。。。
是什么地方没设置对吗?
期待楼主回复~~
ubuntu11.04
gvim 7.3
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

Re: 基于 GVim 的 C/C++ IDE -- VimLite 介绍

#9

帖子 fanhe » 2011-09-16 11:46

liliwang 写了:楼主牛人,不过,我遇到了一个问题,在打开文件的时候说找不到vlutils#OpenFIle函数。。。。
是什么地方没设置对吗?
期待楼主回复~~
ubuntu11.04
gvim 7.3
正常安装了那个 VimLite.vba 了没
再检查下有没有这个文件 ~/.vim/autoload/vlutils.vim

没有的话, 到 VimLite.vba 里面提取或重装 VimLite.vba
下个版本考虑支持 pathogen, 这样管理插件更加方便
liliwang
帖子: 41
注册时间: 2007-10-08 1:05

Re: 基于 GVim 的 C/C++ IDE -- VimLite 介绍

#10

帖子 liliwang » 2011-09-16 18:41

fanhe 写了:
liliwang 写了:楼主牛人,不过,我遇到了一个问题,在打开文件的时候说找不到vlutils#OpenFIle函数。。。。
是什么地方没设置对吗?
期待楼主回复~~
ubuntu11.04
gvim 7.3
正常安装了那个 VimLite.vba 了没
再检查下有没有这个文件 ~/.vim/autoload/vlutils.vim

没有的话, 到 VimLite.vba 里面提取或重装 VimLite.vba
下个版本考虑支持 pathogen, 这样管理插件更加方便
正常按准个了VimLite
在~/.vim/autoload/也有vlutils.vim这个文件
很奇怪啊,楼主没遇到吗? :em06
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

Re: 基于 GVim 的 C/C++ IDE -- VimLite 介绍

#11

帖子 fanhe » 2011-09-16 18:50

我虚拟机测试过了,没这个问题的
你 .vimrc 里面 set nocp 没,还有可以的话,把出错的图截下来
liliwang
帖子: 41
注册时间: 2007-10-08 1:05

Re: 基于 GVim 的 C/C++ IDE -- VimLite 介绍

#12

帖子 liliwang » 2011-09-17 11:24

fanhe 写了:我虚拟机测试过了,没这个问题的
你 .vimrc 里面 set nocp 没,还有可以的话,把出错的图截下来
在.vimrc已经set nocp了, filetype pluging 也 on了,会不会其他的.vimrc里的配置导致的?

不会上截图啊。。
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

Re: 基于 GVim 的 C/C++ IDE -- VimLite 介绍

#13

帖子 fanhe » 2011-09-17 20:01

liliwang 写了:
fanhe 写了:我虚拟机测试过了,没这个问题的
你 .vimrc 里面 set nocp 没,还有可以的话,把出错的图截下来
在.vimrc已经set nocp了, filetype pluging 也 on了,会不会其他的.vimrc里的配置导致的?

不会上截图啊。。
备份你的 .vimrc
新建一个 .vimrc 只设计 nocp 和 ftplugin 再试试
头像
Crazier
帖子: 1051
注册时间: 2007-09-23 17:06
联系:

Re: 基于 GVim 的 C/C++ IDE -- VimLite 介绍

#14

帖子 Crazier » 2011-10-06 17:03

这个要顶的。还要说一句,LZ珍重呀
头像
Crazier
帖子: 1051
注册时间: 2007-09-23 17:06
联系:

Re: 基于 GVim 的 C/C++ IDE -- VimLite 介绍

#15

帖子 Crazier » 2011-10-10 20:13

vimrc里设置成只有那两项;
整张安装那些依赖包,但执行
:VLWorkspaceOpen 时出错:如图:
PS:本人ubuntu 11.04
Screenshot-1.png
回复