默认情况下,VIM只适合用来编辑文本,而要在VIM下进行程序开发,则需要自己定制,比如语法高亮、多文件切换、代码提示以及函数定义查找等。
vim /etc/vim/vimrc
1. 语法高亮
syntax enable
syntax on
2. 多文件切换
下载地址: http://www.vim.org/scripts/script.php?script_id=159
功能:多文件切换
minibufexpl插件只有一个.vim文件,下载解压后将其复制到VIM安装目录的plugin目录下即可。Ubuntu下VIM的默认安装路径为/usr/share/vim/vim71。
重启VIM,如果打开了两个以前的文件,就可以看到minibufexpl的界面了。
3. 源文件之间跳转
下载地址:http://www.vim.org/scripts/script.php?script_id=31
功能:源文件之间的跳转
快捷键:
:A 在新Buffer中切换到c\h文件
:AS 横向分割窗口并打开c\h文件
:AV 纵向分割窗口并打开c\h文件
:AT 新建一个标签页并打开c\h文件
4. QuickFix
功能:这个插件是VIM自带的,可以查看编译错误信息
快捷键:
:cw 显示QuickFix窗口
:cn 切换到下一个结果
:cp 切换到上一个结果
5. ctags
ctags的作用是为系统头文件及自己的程序头文件建立索引,有了这个索引后,就可以使用其它VIM插件来实现相应的功能,比如我需要的功能就是代码提示,那就需要用omnicppcomplete插件,但该插件是依赖于ctags的。
apt-get install exuberant-ctags
6. 代码自动提示
这个功能是非常重要的,我第一次测试在Linux下写程序,该测试程序就是一个获取网页源码的C++程序,但光调试就几乎用了七八个小时,不是类的函数调用名称写错,就是语法错误,反正都是很基本的错误。虽然其原因是不会gdb调试,当时也不会写makefile文件,但没代码提示功能,确实让写程序的效率大打折扣。
wget -O omnicppcomplete-0.41.zip "http://www.vim.org/scripts/download_script.php?src_id=7722"
以下命令在root权限下执行
unzip omnicppcomplete-0.41.zip -d ~/.vim
以下命令在当前用户下执行
unzip omnicppcomplete-0.41.zip -d ~/.vim
因为omnicppcomplete会在当前用户的.vim目录下生成相应的文件,但这些配置文件不像vim的配置文件一样,一个配置文件可以用于所有的用户(/etc/vim/vimrc),所以如果经常需要在用户权限和root权限下写代码的话,就分别需要在root和当前用户权限下执行一次unzip命令。
以下命令在root权限下执行
cd /usr/include
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
cd /usr/local/include
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
然后编辑.vimrc(/etc/vim/vimrc),添加如下内容:
set tags+=/usr/include/tags
set tags+=/usr/local/include/tags
set tags+=./tags
"-- omnicppcomplete setting --
set completeopt=menu,menuone
let OmniCpp_MayCompleteDot = 1 " autocomplete with .
let OmniCpp_MayCompleteArrow = 1 " autocomplete with ->
let OmniCpp_MayCompleteScope = 1 " autocomplete with ::
let OmniCpp_SelectFirstItem = 2 " select first item (but don't insert)
let OmniCpp_NamespaceSearch = 2 " search namespaces in this and included files
let OmniCpp_ShowPrototypeInAbbr = 1 " show function prototype in popup window
let OmniCpp_GlobalScopeSearch=1
let OmniCpp_DisplayMode=1
let OmniCpp_DefaultNamespaces=["std"]
set nocp
filetype plugin on
hi PmenuSel ctermfg=7 ctermbg=4 "改变选中菜单颜色
"hi Pmenu ctermfg=7 ctermbg=4 "改变菜单颜色
最后还得在自己的程序路径下生成tags文件
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
由于在写程序时会很频繁的添加/修改/删除函数,所以还需要在VIM中映射一个快捷键来更新程序路径下的tags文件,编辑.vimrc(/etc/vim/vimrc),添加如下内容:
function UpdateCtags()
let curdir=getcwd()
while !filereadable("./tags")
cd ..
if getcwd() == "/"
break
endif
endwhile
if filewritable("./tags")
!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
"!ctags -R –c++-types=+px –excmd=pattern –exclude=Makefile –exclude=.
endif
execute ":cd " . curdir
endfunction
nmap <F12> :call UpdateCtags()<CR>
这样就可以随时在VIM中按F12键来更新tags文件了。
7. 粘贴代码时取消自动缩进
先来看看有些什么方法来解决粘贴代码时会自动缩进的问题:
(1) 在vimrc中添加如下代码:
nmap <F6> :set paste<CR> nmap <F7> :set nopaste<CR>
这样在需要粘贴代码时先按F6键取消代码自动缩进功能,粘贴完成后再按F7键恢复自动缩进功能
(2) 在vimrc中添加如下代码:
set pastetoggle=<F6> 这是将两个快捷键合二为一,粘贴前按F6取消自动缩进,粘贴完成后再按F6键恢复自动缩进。 (3) 不修改vimrc配置文件,在需要取消自动缩进功能时执行“:set paste”命令,粘贴完成后再执行“:set nopaste”命令。 因为粘贴代码的使用频率不高,所以个人比较推荐使用第3个方法。
8. 其它
set nu "显示行号
set et sw=4 ts=4 sts=4 "Tab宽度
set cindent "C风格缩进
set smartindent "为C程序提供自动缩进
autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o "不要自动添加新的注释行
set paste "粘贴时取消自动缩进功能
9. 终端配色方案
![](https://i-blog.csdnimg.cn/blog_migrate/86fec61d4a11346cdb2fcfff3059bba1.png)
以上这个配色方案要比默认的白底黑字要耐看多了,而且也没那么刺眼。注意,这不是修改VIM的配色方案,而是Ubuntu终端的配色方案,下面贴一下该配色方案的配置文件内容:
注意:要在终端的“编辑配置文件” - “颜色”选项卡中取消“使用系统主题中的颜色”,并在“调色板”的“内置方案”下拉列表框中选择“自定义”,否则可能以下目录不存在。
/home/username/.gconf/apps/gnome-terminal/profiles/Default/%gconf.xml
其中“username”为系统当前帐号名称
%gconf.xml配置文件内容下载地址:
http://ishare.iask.sina.com.cn/f/18612238.html
替换gconf.xml文件后,需要注销一下系统方能生效