1.前言
关于如何VIM的配置,网上已经有很多相关教程,详细的教程只会是重复,本文仅介绍本人的配置心得和觉得需要注意的地方。详细可以教程可以参考http://blog.csdn.net/wooin
2.VI、VIM与GVIM的区别
VIM是VI的升级版,且完全兼容VI指令,GVIM跟VIM的区别是VIM要求全部键盘操作,而GVIM可以使用鼠标进行可视化操作。关于GVIM与VIM,该使用谁,得看自己的使用习惯,本人更喜欢GVIM,以下配置均以GVIM为例,但两者配置方法区别不大。
3.如何安装GVIM
本人使用的Linux系统是Fedora9,以Fedora9为例子。
1.安装GVIM,终端输入命令yuminstall gvim,注意更新前,一定不要用过VIM,要不然会显示无法更新,遇到这样的情况,建议重启linux。
2.为GVIM配置个人设定,在\HOME下新建plugin、doc和syntax三个文件夹。
mkdir ~/.vim/{plugin,doc,syntax} –p
3. 在文件 ~/.vim目录下创建vimrc
Plugin 放置插件.vim 脚本文件
Syntax 语言高亮提示设置,能设置某些函数高亮,如c.vim
Doc 对应插件的说明文档
4.Vimrc文件的作用
VIMRC能控制VIM编辑器,利用配置命令行控制VIM的显示方式,换行方式和插件工作方式等。
5.如何安装VIM插件
VIM插件安装不同其他Linux程序,通过make脚本或shell脚本来安装,而是把下载好的插件文件放到VIM对应的目录后,通过VIMRC配置文件进行设置后使用。例如插件taglist_45,安装包内有两个文件,分别是taglist.vim 和 taglist.txt,将taglist.vim放到刚创建的plugin目录下,将taglist.txt放到doc目录下,然后配置vimrc文件,让其工作。
6.插件功能汇总
Ctag
ctags –R 建立tag标签
:set tags=/(PWD)/tags 设置tags路径
WinManager
输入wm 打开WinManager和Tlist
按键 |
功能 |
<F1> |
显示帮助 |
<cr> |
如果光标下是目录, 则进入该目录; 如果光标下文件, 则打开该文件 |
- |
返回上级目录 |
c |
切换vim 当前工作目录正在浏览的目录 |
d |
创建目录 |
D |
删除目录或文件 |
i |
切换显示方式 |
R |
文件或目录重命名 |
s |
选择排序方式 |
x |
定制浏览方式, 使用你指定的程序打开该文件 |
Cscope
cscope –Rbq 生成Cscope需要的TAGS
:cs add /(PWD)/cscope.out/home/wooin/vim71 添加TAGS
cs find c|d|e|f|g|i|s|t name
0 或 s 查找本 C 符号(可以跳过注释)
1 或 g 查找本定义
2 或 d 查找本函数调用的函数
3 或 c 查找调用本函数的函数
4 或 t 查找本字符串
6 或 e 查找本 egrep 模式
7 或 f 查找本文件
8 或 i 查找包含本文件的文件
热键映射
nmap <C-_>s :cs find s<C-R>=expand("<cword>")<CR><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>
nmap <C-_>t :cs find t<C-R>=expand("<cword>")<CR><CR>
nmap <C-_>e :cs find e<C-R>=expand("<cword>")<CR><CR>
nmap <C-_>f :cs find f<C-R>=expand("<cfile>")<CR><CR>
nmap <C-_>i :cs find i^<C-R>=expand("<cfile>")<CR>$<CR>
nmap <C-_>d :cs find d<C-R>=expand("<cword>")<CR><CR>
调出QuickFix窗口
:cw
:cn // 切换到下一个结果
:cp // 切换到上一个结果
插件A:头文件与源文件快速切换
nnoremap <silent> <F12>:A<CR>
自动补全
Ctrl+P 向前切换成员
Ctrl+N 向后切换成员
Ctrl+E 表示退出下拉窗口, 并退回到原来录入的文字
Ctrl+Y 表示退出下拉窗口, 并接受当前选项
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 拼写建议
7. 我的VIMRC文件
" =============================================================================== " Filename: vimrc " Author: 河蟹(李政甫) " Email: sosofullmoon#vip.qq.com " Homepage: http://blog.csdn.net/youyudehexie " Created: 2011-3-4 " =============================================================================== colorscheme desert " 设置主题方案 set number " 显示行号 set cursorline " 突出显示当前行 set tabstop=4 " 设置tab键的宽度 set backspace=2 " 设置退格键可用 syn on " 打开语法高亮 set showmatch " 设置匹配模式,类似当输入一个左括号时会匹配相应的那个右括号 set smartindent " 智能对齐方式 set shiftwidth=4 " 换行时行间交错使用4个空格 set autoindent " 自动对齐 set ai! " 设置自动缩进 filetype plugin indent on " 开启插件 set completeopt=longest,menu " =============================================================================== " TagList :Tlist " =============================================================================== let Tlist_Show_One_File=1 let Tlist_Exit_OnlyWindow=1 " =============================================================================== " WinManager :WMToggle " =============================================================================== let g:winManagerWindowLayout='FileExplorer|TagList' nmap wm :WMToggle<cr> " =============================================================================== " cscope " =============================================================================== set cscopequickfix=s-,c-,d-,i-,t-,e- " =============================================================================== " MiniBufExp " =============================================================================== let g:miniBufExplMapCTabSwitchBufs = 1 let g:miniBufExplMapWindowNavVim = 1 let g:miniBufExplMapWindowNavArrows = 1 " =============================================================================== " SuperTab :SuperTabHelp " =============================================================================== let g:SuperTabRetainCompletionType=2 let g:SuperTabDefaultCompletionType="<C-X><C-O>" " =============================================================================== " 热键映射 " =============================================================================== nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR> "cscope插件热键 nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR> nmap <C-_>c :cs find c <C-R>=expand("<cword>")<CR><CR> nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR> nmap <C-_>e :cs find e <C-R>=expand("<cword>")<CR><CR> nmap <C-_>f :cs find f <C-R>=expand("<cfile>")<CR><CR> nmap <C-_>i :cs find i ^<C-R>=expand("<cfile>")<CR>{1}lt;CR> nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR> nmap <F6> :cn<cr> “ cw模式下热键 nmap <F7> :cp<cr> map <F11> :A<cr> “ 头文件与源文件切换 map <F5> :w<CR>:make<CR> ”执行编译MAKE map <F5><F5> :make clean<CR> vmap <C-c> "yy “复制模拟 CTRL + C vmap <C-x> "yd nmap <C-v> "yp vmap <C-v> "yp nmap <C-a> ggvG$ nmap <C-s> :wa<cr> “模拟WIN 保存 CTRL + S imap <C-s> <Esc>:wa<cr>i<Right>
目录树生成脚本,在脚本当前目录生成cscope.in.out、cscope.out、cscope.po.out和tags
#!/bin/sh ################################################################################# # Filename: tag_rebuild # Author: Wu Yin(吴垠) # Email: [email protected] # Created: 2007-9-19 # Description: Rebuild Ctags and Cscope files at the path you assign # Usage: tag_rebuild [PATH] # "tag_rebuild" will rebuild the Cscope tag file and Ctags # tag file at the PATH you gived. The current directory by default. # The following files will be created or rebuilded after you # run "tag_rebuild". # > cscope.in.out # > cscope.out # > cscope.po.out # > tags ################################################################################ WORK_PATH=$1 if [ -z "$WORK_PATH" ]; then WORK_PATH="." fi cd $WORK_PATH echo "Cscope ... " $WORK_PATH cscope -bqR echo "Ctags ... " $WORK_PATH ctags -R --fields=+lS