VIM工程编辑设置
Linux系统版本:ubuntu 10.10
• vim安装和中文帮助文档vim 安装直接选择apt-get install vim(所有的都装上吧,包括vim-gtk,vim-gnome),或者去vim官方下载源码安装。
中文帮助文档下载:http://sourceforge.net/projects/vimcdoc/files/vimcdoc/
先将其解压缩:
tar zxvf vimcdoc-<version>.tar.gz
然后进入 vimcdoc-<version> 目录并执行
./vimcdoc.sh -i
就可以了。该安装程序会自动识别 Vim 的安装路径,将中文的文档拷贝到相应的地方。原有的英文文档不受影响。
这种方法对 root 和非 root 用户都适用。但建议以 root 身份安装。具体见vimcdoc目录下INSTALL文件。
以后用vim时直接:help就可以查看中文帮助文档。
• 语法高亮,自动缩进
可以参考中文帮助文档中所述,这里只介绍一些简单的。
设置语法高亮度
syntax enable
syntax on
设置缩进的空格数为4
set shiftwidth=4
设置自动缩进:即每行的缩进值与上一行相等;使用 noautoindent 取消设置:
set autoindent
设置使用 C/C++ 语言的自动缩进方式(如果遇到分支或者函数段会自动缩进一格):
set cindent
• 智能自动补全
vim在对不同类型的文件进行补全时,会根据文件类型,为其设置不同的补全函数。也就是说,要实现全能补全功能,
需要把下面的命令加到你的vimrc中:
filetype plugin indent on
表示打开文件类型检测
set completeopt=longest,menu
上面的设置表明,只在下拉菜单中显示匹配项目,并且会自动插入所有匹配项目的相同文本。
Ctrl+P 向前切换成员
Ctrl+N 向后切换成员
Ctrl+E 表示退出下拉窗口, 并退回到原来录入的文字
Ctrl+Y 表示退出下拉窗口, 并接受当前选项
整行补全 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
补全vim命令 CTRL-X CTRL-V
用户自定义补全方式 CTRL-X CTRL-U
拼写建议 CTRL-X CTRL-S
• ctags
功能就是查找你代码中某个函数的声明和定义位置的跳转。
ctags源码官方地址:http://ctags.sourceforge.net 用下面的命令解压安装:
$ tar -xzvf ctags-xx.tar.gz
$ cd ctags-xx
$ make
# make install // 最好root权限,这样应该所有用户可以使用了
然后去你的源码目录, 如果你的源码是多层的目录, 就去最上层的目录, 在该目录下运行命令: ctags -R
此时在该目录下会生成一个 tags 文件, 再用vim打开某个代码时需要加上如下命令:
:set tags=/源码的目录/tags
表示加载该tags。
• taglist
功能是列出所有的函数,宏定义,变量等。
官方下载地址:http://www.vim.org/scripts/script.php?script_id=273 下载后,把该文件在~/.vim/目录中解压缩。
这会在你的~/.vim/plugin和~/.vim/doc目录中各放入一个文件:
plugin/taglist.vim – taglist插件
doc/taglist.txt - taglist帮助文件
在.vimrc文件中需要添加代码:
map <F3> :Tlist<CR> // 快捷键设置
let Tlist_Use_Right_Window=1
let Tlist_File_Fold_Auto_Close=1
这样只要在vim中按住F3就可以查看Tlist窗口了。
• winmanager
功能主要是打开源代码所在目录所有的文件列表,这样方便在vim中切换工程代码文件。
官方源码地址:http://www.vim.org/scripts/script.php?script_id=95
同taglist一样,把解压后的*.vim,*.txt放入plugin/,doc/目录下。
然后在你的~/.vimrc中加上下面两句代码:
let g:winManagerWindowLayout='FileExplorer|TagList' // Taglist同时打开。
nmap wm :WMToggle<cr>
这样只要按快捷键wm就可以实现文件查看和tags查看。
• cscope
功能主要是实现了比ctags更强势的函数,变量查询,包括查询谁调用次函数,次函数调用了哪些函数,某个字符串在哪些地方出现过等等。
官方地址:http://cscope.sourceforge.net下载一个源码包, 解压后编译安装:
# ./configure
# make
# make install // 需要root权限
使用时,想ctags那样需要在该目录执行 cscope -Rbq 命令,具体含义可以cscope --help查看。
然后会生成三个文件:cscope.in.out等。
进入vim后需要把刚才生成的cscope文件导入到vim中来, 用下面的命令:
:cs add /代码目录/cscope.out /代码目录
在.vimrc文件中需要添加代码:
"设置cscope
:set cscopequickfix=s-,c-,d-,i-,t-,e-
"快捷键
nmap <C-@>s :cs find s <C-R>=expand("<cword>")<CR><CR>:copen<CR>
nmap <C-@>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-@>c :cs find c <C-R>=expand("<cword>")<CR><CR>:copen<CR>
nmap <C-@>t :cs find t <C-R>=expand("<cword>")<CR><CR>:copen<CR>
nmap <C-@>e :cs find e <C-R>=expand("<cword>")<CR><CR>:copen<CR>
nmap <C-@>f :cs find f <C-R>=expand("<cfile>")<CR><CR>:copen<CR>
nmap <C-@>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>:copen<CR>
nmap <C-@>d :cs find d <C-R>=expand("<cword>")<CR><CR>:copen<CR>
cscope的主要功能是通过同的子命令"find"来实现的
"cscope find"的用法:
cs find c|d|e|f|g|i|s|t name
s 查找本 C 符号(可以跳过注释)
g 查找本定义
d 查找本函数调用的函数
c 查找调用本函数的函数
t 查找本字符串
e 查找本 egrep 模式
f 查找本文件
i 查找包含本文件的文件
• 代码折叠
set foldmethod=marker( 也可以用indent );
当使用marker方式时,需要用标计来标识代码的折叠,系统默认是{{{和}}},最好不要改动之:)
我们可以使用下面的命令来创建和删除折叠:
zf 创建折叠,比如在marker方式下:
zf56G,创建从当前行起到56行的代码折叠;
10zf或10zf+或zf10↓,创建从当前行起到后10行的代码折叠
10zf-或zf10↑,创建从当前行起到之前10行的代码折叠。
在括号处zf%,创建从当前行起到对应的匹配的括号上去((),{},[],<>等)。
zd 删除 (delete) 在光标下的折叠。仅当 ‘foldmethod’ 设为 “manual” 或 “marker” 时有效。
zD 循环删除 (Delete) 光标下的折叠,即嵌套删除折叠。
仅当 ‘foldmethod’ 设为 “manual” 或 “marker” 时有效。
zE 除去 (Eliminate) 窗口里“所有”的折叠。
仅当 ‘foldmethod’ 设为 “manual” 或 “marker” 时有效。
• 快捷键设置
这个快捷键是用于写小程序(acm竞赛等)使用方便的。
"acm编程设置
func Make(cmd)
let _makeprg = &makeprg
let &makeprg = a:cmd
make
let &makeprg = _makeprg
endf
map <F2> :!date <CR>
map <F5> :w<CR>:call Make("g++ % -o%:r -O2 -Wall")<CR>
map <C-F5> :w<CR>:make<CR>
map <F6> :!./%:r<CR>
map <F7> :w<CR>:call Make("g++ % -o%:r -g -Wall")<CR>
map <F8> :!gdb ./%:r<CR>
map <F9> :!time ./%:r <CR>"