vim配置为C/C++开发环境

27 篇文章 0 订阅
10 篇文章 0 订阅
VIM开发环境配置

默认情况下,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. 终端配色方案

 



以上这个配色方案要比默认的白底黑字要耐看多了,而且也没那么刺眼。注意,这不是修改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文件后,需要注销一下系统方能生效


  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值