1 ctags
下载Ctags源代码,解压,用make命令安装。
然后去你的源码目录,如果你的源码是多层的目录, 就去最上层的目录, 在该目录下运行命令: ctags –R,会产生一个名叫tags文件,将该文件拷贝到$HOME/.vim/tags目录下。
在vim中运行命令“:set tags=$HOME/.vim/tags/tags”,也可以将这个命令放在$HOME/.vimrc文件中。当要查询某个函数的定义时,将光标放在该函数上,按<C-]>键,就会跳转到该函数的定义处,按<C-t>键是返回。
不过还有一个小瑕疵, 你修改程序后, 比如增加了函数定义, 删除了变量定义, tags文件不能自动rebuild, 你必须手动再运行一下命令:ctags –R。
2 TagList 插件
高效地浏览源码, 其功能就像vc中的workpace, 那里面列出了当前文件中的所有宏、全局变量, 函数名等.
下载地址:http://www.vim.org/scripts/script.php?script_id=273
下载taglist压缩包, 然后把解压的两个文件taglist.vim 和 taglist.txt 分别放到$HOME/.vim/plugin 和 $HOME/.vim/doc 目录中。
首先在$HOME/.vimrc中加入下面两句话:
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
进入vim后用Tlist命令打开taglist窗口。
3 WinManager 插件
管理各个窗口, 或者说整合各个窗口。
下载地址:http://www.vim.org/scripts/script.php?script_id=95
下载WinManager.zip压缩包, 解压后把*.vim文件放到 $HOME/.vim/plugin目录中,把*.txt文件放到 $HOME/.vim/doc目录中。
下面的一些命令来进行常用的目录和文件操作:
<F1> |
显示帮助 |
<cr> |
如果光标下是目录, 则进入该目录; 如果光标下文件, 则打开该文件 |
- |
返回上级目录 |
c |
切换vim 当前工作目录正在浏览的目录 |
d |
创建目录 |
D |
删除目录或文件 |
i |
切换显示方式 |
R |
文件或目录重命名 |
s |
选择排序方式 |
x |
定制浏览方式, 使用你指定的程序打开该文件: |
现在在你的~/.vimrc中增加下面几句:
let g:winManagerWindowLayout = "BufExplorer|FileExplorer|TagList"
let g:winManagerWidth = 30
nmap <C-W><C-F> :FirstExplorerWindow<cr>
nmap <C-W><C-B> :BottomExplorerWindow<cr>
nmap <silent> <leader>wm :WMToggle<cr>
在vim中按\wm就会弹出winManager窗口来,再按\wm就会退出。
4 QuickFix 窗口
输出一些供选择的结果, 可以被很多命令调用, 更详细的介绍和使用方法请用下面的命令打开QuickFix的手册来学习吧:help quickfix。
写好一个由错误的c程序,用vim打开该c程序,并输入:make命令,可以通过命令:cw来调出编译器报的出错信息,并可以根据出错信息调到出错的位置。命令:cn和:cp分别切换到上一个结果和下一个结果。
5 MiniBufExplorer
快速浏览和操作Buffer
下载地址:http://www.vim.org/scripts/script.php?script_id=159,将下载的 minibufexpl.vim文件丢到$HOME/.vim/plugin文件夹中即可。
用vim打开多个文件时,vim最上方会出现一个MiniBufExplorer窗口,其中列出了当前所有已经打开的buffer,当你把光标置于这个窗口时, 有下面几个快捷键可以用:
<Tab> |
向前循环切换到每个buffer名上 |
<S-Tab> |
向后循环切换到每个buffer名上 |
<Enter> |
在打开光标所在的buffer |
d |
删除光标所在的buffer |
6 A插件
将.h文件与.c文件来回切换。
下载地址:http://www.vim.org/scripts/script.php?script_id=31,将下载的a.vim放置$HOME/.vim/plugin中。
安装好a.vim后有下面的几个命令可以用了:
:A |
在新Buffer中切换到c/h文件 |
:AS |
横向分割窗口并打开c/h文件 |
:AV |
纵向分割窗口并打开c/h文件 |
:AT |
新建一个标签页并打开c/h文件 |
7 new-omni-completion(全能补全)
该功能vim自带的,可以输命令:help new-omni-completion查看,不过还要有tags功能的支持。
需在$HOME/.vimrc中增加下面两句:
filetype plugin indent on
set completeopt=longest,menu
tags的用法与上面的tags用法相同。
一些快捷键:
Ctrl+P |
向前切换成员 |
Ctrl+N |
向后切换成员 |
Ctrl+E |
表示退出下拉窗口, 并退回到原来录入的文字 |
Ctrl+Y |
表示退出下拉窗口, 并接受当前选项 |
如果你增加了一些成员变量, 全能补全还不能马上将新成员补全, 需要你重新生成一下tags文件, 但是你不用重启vim, 只是重新生成一下tags文件就行了, 这时全能补全已经可以自动补全了, 还真够"全能"吧.
vim中的其他补全方式还有:
Ctrl+X Ctrl+L |
整行补全 |
Ctrl+X Ctrl+N |
根据当前文件里关键字补全 |
Ctrl+X Ctrl+K |
根据字典补全 |
Ctrl+X Ctrl+T |
根据同义词字典补全 |
Ctrl+X Ctrl+I |
根据头文件内关键字补全 |
Ctrl+X Ctrl+] |
根据标签补全 |
Ctrl+X Ctrl+F |
补全文件名 |
Ctrl+X Ctrl+D |
补全宏定义 |
Ctrl+X Ctrl+V |
补全vim命令 |
Ctrl+X Ctrl+U |
用户自定义补全方式 |
Ctrl+X Ctrl+S |
拼写建议 |
8 自动补全插件-NeoComplCache
下载地址:http://www.vim.org/scripts/script.php?script_id=2620
是解压后文件夹里面的文件,好像是四个,autoload、doc、plugin、README.MD,直接放到.vim里。
在~/.vimrc文件里加入自动启动的命令: let g:neocomplcache_enable_at_startup = 1。
9 c插件
作为一个程序员,在编码时你常常有如下的重复操作:
1. 给文件或者函数说明
2. 给函数添加注释,或者添加一个注释快
3. 添加一段已有代码 (:r
!cat filename)
4. 检查代码语法
5. 读函数的帮助文档
6. 注释掉一块代码,将"//"转换为/* */
C.vim即C-Support vim,能够帮助C程序员[当然还有使用C++ 的家伙]很好的完成上述工作,为你节约时间,并保护你的键盘。插件作者Fritz Mehner,编写c.vim的宗旨是“Write and run programs. Insert statements, idioms, comments”。
下载地址:http://www.vim.org/scripts/download_script.php?src_id=9679,解压,有c-support、ftplugin、doc、plugin四个文件,拷贝到$HOME/.vim/目录下。并用命令filetype plugin on激活插件功能。
功能一:自动为*.c文件添加文件头说明
当你打开一个扩展名为.c的文件,在文件开始处会自动加上如下的描述,并且将光标定位到description处,此时是insert mode可直接键入文件描述。
当然你可以改变AUTHOR COMPANY等得默认值,修改稿c-support/templates/Templates中的:
|AUTHOR| = geekstuff
|AUTHORREF| = gk
|EMAIL| = subscribe@geekstuff
|COMPANY| = thegeekstuff.com
功能二:插入一个函数\if
当需要创建一个新函数时,只要在正常模式(ESC)键入\if,VIM会提示键入函数名,会得到默认函数内容。
功能三:插入main函数\im
与功能二类似,在正常模式下键入\im, 得到默认的main函数内容。
功能五: 添加一个注释块 \cfr
添加一个注释块,在正常模式下键入\cfr,会得到一个注释块,并且光标被定位到注释块内,直接可键入注释。
功能六:包含(include)一个头文件 \p<
在正常模式下键入\p<, 会得到“#include <>”,并且光标被定位到尖括号内,可以直接键入要包含的头文件名
功能七: 保存文件,编译后立即执行
保存后编译\rc,运行\\r
功能八:插入预先编辑好的程序块\nr
在安装插件时,插件自带了一些编译好的代码,你可以把这些代码插入你的程序中。
在c-support/codesnippets文件中
Makefile calloc_double_matrix.c main.c print_double_array.c.noindent
Makefile.multi-target.template calloc_int_matrix.c main.cc print_int_array.c.noindent
你也可以自己编写一些常用模板代码放在c-support/codesnippets/。当然在你读代码的时候也可以保存某些代码片段。方法:选中想要保存的代码片段,键入\nw,给它取一个名字。下次你就可以用过\nr使用这段代码了。
10 bufexplorer插件
下载地址:http://www.vim.org/scripts/script.php?script_id=42,将bufexplorer.vim放入$HOME/.vim/plugin目录下。
打开vim,输入\be在当前窗口浏览缓存,\bs水平打开一个窗口浏览缓存,\bv垂直打开一个窗口浏览缓存。
11 查看插件自带的文档
把插件自带的文档放入$HOME/.vim/doc目录下
进入vim,输入命令:helptags $HOME/.vim/doc,vim就会自动读取$HOME/.vim/doc目录下的文档,输入:help local-additions即可跳转到$HOME/.vim/doc中的所有文档列表处,用<C]>选择要看的文档即可。
12 我的vim配置文件
1 let Tlist_Show_One_File=1 2 let Tlist_Exit_OnlyWindow=1 3 let Tlist_Auto_Open=1 4 "let Tlist_Ctags_Cmd='/usr/bin/ctags' 5 "set foldcolumn=0 6 "set foldmethod=indent 7 "set foldlevel=3 8 "set foldenable " 开始折叠 9 " 不要使用vi的键盘模式,而是vim自己的 10 set nocompatible 11 " 语法高亮 12 set syntax=on 13 " 去掉输入错误的提示声音 14 set noeb 15 " 在处理未保存或只读文件的时候,弹出确认 16 set confirm 17 " 自动缩进 18 set autoindent 19 set cindent 20 " Tab键的宽度 21 set tabstop=4 22 " 统一缩进为4 23 set softtabstop=4 24 set shiftwidth=4 25 " 不要用空格代替制表符 26 set noexpandtab 27 " 在行和段开始处使用制表符 28 set smarttab 29 " 显示行号 30 set number 31 " 历史记录数 32 set history=1000 33 "禁止生成临时文件 34 set nobackup 35 set noswapfile 36 "搜索忽略大小写 37 set ignorecase 38 "搜索逐字符高亮 39 set hlsearch 40 set incsearch 41 "行内替换 42 set gdefault 43 "编码设置 44 set enc=utf-8 45 set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936 46 "语言设置 47 set langmenu=zh_CN.UTF-8 48 set helplang=cn 49 " 我的状态行显示的内容(包括文件类型和解码) 50 "set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")} 51 "set statusline=[%F]%y%r%m%*%=[Line:%l/%L,Column:%c][%p%%] 52 " 总是显示状态行 53 set laststatus=2 54 " 命令行(在状态行下)的高度,默认为1,这里是2 55 set cmdheight=2 56 " 侦测文件类型 57 filetype on 58 " 载入文件类型插件 59 filetype plugin on 60 " 为特定文件类型载入相关缩进文件 61 filetype indent on 62 " 保存全局变量 63 set viminfo+=! 64 " 带有如下符号的单词不要被换行分割 65 set iskeyword+=_,$,@,%,#,- 66 " 字符间插入的像素行数目 67 set linespace=0 68 " 增强模式中的命令行自动完成操作 69 set wildmenu 70 " 使回格键(backspace)正常处理indent, eol, start等 71 set backspace=2 72 " 允许backspace和光标键跨越行边界 73 set whichwrap+=<,>,h,l 74 " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位) 75 ""set mouse=a 76 ""set selection=exclusive 77 ""set selectmode=mouse,key 78 " 通过使用: commands命令,告诉我们文件的哪一行被改变过 79 set report=0 80 " 在被分割的窗口间显示空白,便于阅读 81 set fillchars=vert:\ ,stl:\ ,stlnc:\ 82 " 高亮显示匹配的括号 83 set showmatch 84 " 匹配括号高亮的时间(单位是十分之一秒) 85 set matchtime=1 86 " 光标移动到buffer的顶部和底部时保持3行距离 87 set scrolloff=3 88 " 为C程序提供自动缩进 89 set smartindent 90 " 高亮显示普通txt文件(需要txt.vim脚本) 91 au BufRead,BufNewFile * setfiletype txt 92 set bg=dark
13 参考
http://blog.csdn.net/guolb57/article/details/7013076
http://www.cnblogs.com/windowswind/archive/2012/03/22/2450079.html