vim IDE

本打算在之前一篇讲基础的博客里继续写的,但是考虑到篇幅不利与阅读,以及本文是针对打造 IDE 环境,所以单写一篇。不求普适。

 

所用插件:

vim                                           =》 很多 linux 发行版都没有安装完整的 vim。请自行安装。

exuberant-ctags                         =》这是基础插件,主要功能就是分析变量/函数符号,方便定位。其它很多插件依赖于此插件。

TagList                                      =》 高效浏览代码中的变量和函数。类似 sourceInsight 左边的 Symble 窗口。

WinManager                             =》 文件浏览器。

MiniBufExplorer                         =》 多文件可视化切换。 直接在不同窗口切换。

c/h switch                                  =》 .c/.cpp 与 .h 文件快速切换。

VisualMark                                =》 可视化的书签。

C/C++ omni-completion       =》 快速补全。

cscope                                      =》 查找函数定义,函数引用,文本,文件。

 

1. vim

`sudo get-install -y vim`

2. exuberant-ctags

安装:

a. `sudo apt-get install -y exuberant-ctags`

b. 在工程目录的最上层目录, 执行 `ctags -R`。 此时会生成 tags 文件。

使用:

Ctrl+]    =》   前往光标函数的 definition。(向栈中压入跳转前地址,并跳转到该函数定义)
Ctrl+t    =》   返回。(无论此时光标在哪,只要栈上有数据,都可以返回上一个位置)

如图,工作目录下有 main.cpp, foo.h/cpp, bar.h/cpp 共 5 个文件:

如下:

在 main.cpp 中进行查询

 

3. TagList

  依赖于 ctags,因此必须事先建立 tags 文件。

安装:

  a. 到 http://www.vim.org/scripts/script.php?script_id=273 下载最新版 taglist_xx.zip

  b. 解压到 ~/.vim/ 目录下。

使用:

  重新启动 vim,`:Tlist`.

打开多个文件后, 实现不同模块的函数方便的跳转。

 

4. WinManager

  非常方便的定位文件。

安装:

  a. 到 http://www.vim.org/scripts/script.php?script_id=95 下载最新版

  b. 解压到 ~/.vim/ 目录。

使用:

  重新启动 vim,`:WMToggle`. 

(下表参考 1.)

<F1> 显示帮助
<cr> 如果光标下是目录, 则进入该目录; 如果光标下文件, 则打开该文件
- 返回上级目录
c 切换vim 当前工作目录正在浏览的目录
d 创建目录
D 删除目录或文件
i 切换显示方式
R 文件或目录重命名
s 选择排序方式
x 定制浏览方式, 使用你指定的程序打开该文件

 

 

 

 

 

 

 

此外, WinManager 通常都和 Tlist 一起使用,

使用:

  编辑 ~/.vimrc, 加入

    let g:winManagerWindowLayout='FileExplorer|TagList'  " 这行是让 WinManager 和 Tlist 共处同一窗口。
    nmap wm :WMToggle<cr>                                                   “ 这行是定义快捷键。

重启 vim 后,`wm` 如图:

 

5. MiniBufExplorer

安装:

  a. http://www.vim.org/scripts/script.php?script_id=159

  b. 拷贝 minibufexpl.vim 到 ~/.vim/plugin/

  c. 向 ~/.vimrc 中添加 `let g:miniBufExplMapWindowNavVim=1` 可使 Ctrl+h/j/k/l 直接在不同窗口切换。

使用:

  重启 vim,同时打开多个文件:`vim main.cpp foo.h foo.cpp`

  切入 minibuf 窗口:Ctrl-w, k

  Tab 键切换不同的文件, Enter 进入文件。

 

6. c/h switch 

安装:

  http://www.vim.org/scripts/script.php?script_id=31

  拷贝 a.vim 到 ~/.vim/plugin/

使用:

  重启 vim,打开 foo.h

  `:A` 即可快速切换到此文件对应的 .h 或 .c/.cpp。

 

7. VisualMark

安装:

  http://www.vim.org/scripts/script.php?script_id=1026

  拷贝 visualmark.vim 到 ~/.vim/plugin/

  目前我安装的 0.4,每次 `mm` 都会遇到  错误,只要修改一下脚本就好了。 找到 ~/.vim/plugin/visualmark.vim, 修改 `exec ":lan mes en_US"` 为 `"exec ":lan mes en_US"` (就是在这句话前面加以个双引号,表示注释掉这句话),保存后重启 vim 即可。

使用:

  `mm` 设置书签

  F2 以及 Shift-F2 跳转到下一个或上一个书签。

 

8. C/C++ omni-completion

安装:

  http://www.vim.org/scripts/script.php?script_id=1520

  基于 ctags,因此需要生成 tags 文件。此外,为了支持 c++ 的成员补全,需要这样生成 tags `ctags -R  --c++-kinds=+px --fields=+aiKSz --extra=+q`. 具体含义: http://blog.chinaunix.net/uid-11640640-id-2139790.html. 大致就是说:递归分析子目录,包含 c++ 的各种声明,包含类权限/继承等信息。

  在 ~/.vimrc 中加入:`filetype plugin indent on`。

使用:

  重启 vim,在 main.cpp 中输入 `fo<Ctrl-x><Ctrl-o>` 即出现自动补全的信息。

  使用 Ctrl-n 和 Ctrl-p 向下或向上切换。

  当使用类成员时,会自动出现补全信息。

 

9. cscope

安装:

  `sudo apt-get install -y cscope`

  将 http://cscope.sourceforge.net/cscope_maps.vim 复制, 保存到 ~/.vim/plugin/ 目录下。

  将 `:set cscopequickfix=s-,c-,d-,i-,t-,e-` 添加到 ~/.vimrc 中。这样搜索结果就会展现在 quickfix 窗口中。(输入 `:cw` 查看 quickfix 窗口)

  首先要生成数据文件,在工作目录顶层:`cscope -Rd`。 

使用:

  重启 vim,首先载入符号数据库 `:cs add cscope.out .` 注意后面还有一个 `.`
  然后就可以查询了, 如: `:cs find g foo`. 查看 foo 定义。

(下表引用自参考 1) 

0 或 s 查找本 C 符号(可以跳过注释)
1 或 g 查找本定义
2 或 d 查找本函数调用的函数
3 或 c 查找调用本函数的函数
4 或 t 查找本字符串
6 或 e 查找本 egrep 模式
7 或 f 查找本文件
8 或 i 查找包含本文件的文件

查看 main 函数都调用了哪些函数: 

 

参考:

  1. http://blog.csdn.net/wooin/article/details/1858917

其它:

  我把自己的 .vim 目录 .vimrc 文件打包放在这里: https://files.cnblogs.com/walfud/vimDir_vimrc.zip

  有兴趣欢迎交流:walfud.s@gmail.com

 

 

 

posted @ 2013-07-13 14:07  walfud  阅读(353)  评论(0编辑  收藏  举报