Vim 环境配置

目录:
主目录下建立:
.vim/doc
.vim/plugin
.vim/syntax
--------------------------------------------------
1 安装中文帮助
下载地址:http://vimcdoc.sourceforge.net/
将解压后的doc目录内容复制到.vim/doc目录,此时帮助即可为中文。
跳转:将光标置于标签上然后输入 CTRL-]。
跳回:键入 CTRL-T 或 CTRL-O。
--------------------------------------------------
2 语法高亮
插件下载地址:http://www.vim.org/scripts/script.php?script_id=234
将解压后的c.vim复制到.vim/syntax目录即可。
--------------------------------------------------
3 浏览源码
插件下载地址:http://www.vim.org/scripts/script.php?script_id=273
将解压后的taglist.vim复制到.vim/plugin目录即可。
使用:
a 在.vimrc中输入如下俩行:
  let Tlist_Show_One_File=1
  let Tlist_Exit_OnlyWindow=1
b 用vim打开源代码文件,执行::Tlist 即可打开taglist窗口。
c 使用CTRL-w切换到taglist窗口,移动光标到标签,按回车跳转到定义处,按下空格键, 在下面的命令栏中显示声明。
--------------------------------------------------
4 窗口管理 
插件下载地址:http://www.vim.org/scripts/script.php?script_id=95
将解压后的
winfileexplorer.vim
winmanager.vim
wintagexplorer.vim
复制到.vim/plugin目录即可。
使用:
a 在.vimrc中输入如下俩行:
 let g:winManagerWindowLayout='FileExplorer|TagList'
 nmap wm :WMToggle<cr>
b 打开vim,在普通模式下输入wm,即可。
注意:其中到目录浏览插件netrw.vim已经是vim的默认插件了,不用安装。
使用:e ./src可以打开目录浏览插件,回车进入目录,-字符返回上级目录。
--------------------------------------------------
5 转到定义
需要安装ctags软件。
下载地址:http://ctags.sourceforge.net
我是从ubuntu软件中心安装的:exuberant-ctags 1:5.9
使用:
a 在源代码最上层目录运行:ctags -R 生成tags文件
b 用vim打开源代码文件,执行::set tags=.../tags 将tags文件加入到vim中来,
  也可以将这句话放到.vimrc中去, 如果你经常在这个工程编程的话。
c 将光标放在函数,宏,结构上,按下CTRL-]即可跳转到定义处,键入 CTRL-T 或 CTRL-O返回。
  测试发现全局变量可以跳转,但局部变量不行。
--------------------------------------------------
6 自动补全
  需要tags到支持。
  在.vimrc中输入如下俩行:
  filetype plugin indent on     " 加了这句才可以用智能补全
  set completeopt=longest,menu  " 关掉智能补全时的预览窗口
a 查看帮助:
  :help new-omni-completion
b 函数变量宏等补全:
  输入前几个字符到时候Ctrl-X Ctrl-O自动补全。
c 成员补全:
  在.或->到后面按Ctrl-X Ctrl-O提示成员下拉选择。
d 下拉菜单选择:
  Ctrl+P 向前切换成员
  Ctrl+N 向后切换成员
  Ctrl+E 表示退出下拉窗口, 并退回到原来录入的文字
  Ctrl+Y 表示退出下拉窗口, 并接受当前选项
--------------------------------------------------
7 提示函数原形
插件下载地址:http://www.vim.org/scripts/script.php?script_id=1735
将解压后的echofunc.vim复制到.vim/plugin目录即可。
需要ctags的支持,先生成tags文件:
ctags -R --fields=+lS
使用:
当你在vim插入模式下紧接着函数名后输入一个"("的时候, 这个函数的声明就会自动显示在命令行中。 
如果这个函数有多个声明, 则可以通过按键"Alt+-"和"Alt+="向前和向后翻页。
不知到什么原因键"Alt+-"和"Alt+="向前和向后翻页不好用,将下面俩行放入.vimrc文件将翻页快捷键转换为CTRL-b和CTRL-n。
let g:EchoFuncKeyPrev='<C-b>'
let g:EchoFuncKeyNext='<C-n>'
--------------------------------------------------
8 使用QuickFix窗口
a 查看帮助:
  :help quickfix
b 调出QuickFix窗口:
  :cw
c 关闭QuickFix窗口:
  :ccl
举例:
:make
:cw
:ccl
--------------------------------------------------
9 使用cscope
需要安装cscope软件。
下载地址:http://cscope.sourceforge.net
我是从ubuntu软件中心安装的:cscope 15.7a-3.3
查看帮助:
:help if_cscop.txt
使用:
a 先在.vimrc中增加一句:
  set cscopequickfix=s-,c-,d-,i-,t-,e-
  设定是否使用quickfix窗口来显示cscope结果。
b 在源代码最上层目录运行:cscope -Rbq 生成cscope的数据库。
c 打开vim后把刚才生成的cscope文件导入到vim中来, 用下面的命令:
  :cs add /home/wooin/vim71/cscope.out /home/wooin/vim71
  必须写全, 不能只写前半句,因为源码是多级目录的, 如果只写前半句, cscope是无法在子目录中的源码中工作的。
  如果你要经常用cscope的话, 可以把上面那句加到.vimrc中去.
d find用法
  :cs find {querytype} {name}
  {querytype}:
  0 或 s: 查找本 C 符号
  1 或 g: 查找本定义
  2 或 d: 查找本函数调用的函数
  3 或 c: 查找调用本函数的函数
  4 或 t: 查找本字符串
  6 或 e: 查找本 egrep 模式
  7 或 f: 查找本文件
  8 或 i: 查找包含本文件的文件
  举例:
  查找add函数的定义:
  :cs find g add
  查找add函数在哪些地方被调用:
  :cs find c add
  查找add函数调用到函数:
  :cs find d add
  如果自动跳转的位置你不满意, 想看其他的结果, 可以用下面的命令打开QuickFix窗口:
  :cw
e reset用法
  :cs reset
  重新初始化所有连接。
f show用法
  :cs show
  显示当前的连接。
g help用法
  :cs help
  显示简洁使用说明。
--------------------------------------------------
10 代码折叠
在.vimrc中加入如下俩行:
set foldmethod=syntax  " 按语法高亮折叠
set foldlevel=100      " 启动vim时不要自动折叠代码
按照语法高亮来折叠代码, 其实就是按照代码中的一些括号来定义折叠位置, 比如: "{ }", "/* */". 
使用:
在nomal模式下输入命令"za", 当前光标所在的最近的一层括号被折叠起来, 再输入一遍"za"命令, 这个折叠又打开了。
下面是常用的一些命令:
za 打开/关闭当前折叠
zA 循环地打开/关闭当前折叠
zo 打开当前折叠
zc 关闭当前折叠
zM 关闭所有折叠
zR 打开所有折叠
--------------------------------------------------
11 执行shell命令
vim普通模式中CTRL-Z切换到shell,shell中输入fg回到vim。
--------------------------------------------------

 .vimrc文件示例:

:syntax enable       " 打开语法高亮
:syn on              " 打开语法高亮

:set nu!             " 显示行号
:set ai!             " 自动缩进
:set linebreak       " 整词换行
:set tabstop=4       " 设置tab键的宽度
:set shiftwidth=4    " 换行时行间交错使用4个空格

:set showmatch       " 设置匹配模式
:set smartindent     " 智能对齐方式
:set autoindent      " 自动对齐
:set mouse=a         " 启用鼠标

" 浏览源码
:let Tlist_Show_One_File=1
:let Tlist_Exit_OnlyWindow=1

" 窗口管理 
:let g:winManagerWindowLayout='FileExplorer|TagList'
:nmap wm :WMToggle<cr>
:let g:winManagerWidth = 40
" :let g:defaultExplorer = 0
" :let g:netrw_winsize = 50

" 自动补全
:filetype plugin indent on
:set completeopt=longest,menu

" 提示函数原形
:let g:EchoFuncKeyPrev='<C-b>'
:let g:EchoFuncKeyNext='<C-n>'

" 使用cscope
:set cscopequickfix=s-,c-,d-,i-,t-,e-

" 代码折叠
:set foldmethod=syntax
:set foldlevel=100

" 特殊设置
" ------------------------------------------------
:let src_path = "/home/wuzhiguo/program/nginx/nginx-1.4.4/src/"

:let src_path_tags = src_path . "tags"
:let src_path_cscope = src_path . "cscope.out"
:let command_tags = ":set tags=" . src_path_tags
:let command_cscope = ":cs add " . src_path_cscope . " " . src_path

:execute command_tags
:execute command_cscope
:set tags+=~/.vim/systags
" ------------------------------------------------

 在源代码根目录下建立如下command.sh脚本文件,在每次代码修改后执行该脚本自动生成tags和cscope文件,.vimrc文件中增加脚本使tags和cscope指向这些文件,重新启动Vim的时候就自动加载了。

#!/bin/sh

src_path="/home/wuzhiguo/program/myproxy/src/"
src_path_tags=$src_path"tags"
src_path_cscope=$src_path"cscope.out"

echo $src_path
echo $src_path_tags
echo $src_path_cscope

ctags -R --fields=+lS -f $src_path_tags $src_path
cscope -Rbq  -f $src_path_cscope -P $src_path

if [ ! -f ~/.vim/systags ] 
then
ctags -R --fields=+lS -f ~/.vim/systags /usr/include /usr/local/include
fi
 Vim使用截图: