VIM语法高亮、VIM代码补全、VIM结构化视图功能的配置实现(1)

===========================================
【简介】

      为了更加方便的学习和研究一个开源c++项目(当然linux环境下),特地花了一两周的时间研究vim及其插件的配置和使用方法,整理出来:一来做个记录便于日后回顾查看,二来分享出来为大家提供方便。
vim是什么
      vim是一款功能强大、支持各种插件、配置极为灵活的编辑器,且支持多种主流OS(linux、Unix、mac、windows),可用来各种编程预言的coding和文件编辑,用习惯了vim,你会体会到它是如此的高效和便捷。引用官网(
www.vim.org)上vim的自我介绍说:
Vim is a highly configurable text editor built to enable efficient text editing. It is an improved version of the vi editor distributed with most UNIX systems.Vim is often called a "programmer's editor," and so useful for programming that many consider it an entire IDE. It's not just for programmers, though. Vim is perfect for all kinds of text editing, from composing email to editing configuration files. Despite what the above comic suggests, Vim can be configured to work in a very simple (Notepad-like) way, called evim or Easy Vim.”
      本文主要通过一些示例介绍下如何定制自己专属的基于vim的IDE编程环境(主要针对c/c++,其他语言亦可采用相同的思路)。下面我们就一步一步来介绍,一砖一瓦从零开始建造我们基于VIM的友好的IDE环境。

【vim的下载与安装】

1. 在线安装

直接shell中输入如下命令:

sudo apt-get install vim (ubuntu)
yum install vim (redHat/Fedora/CentOS)

linux会自动检测并下载安装。

2 手动下载编译安装

      截止当前最新版本是7.4(vim-7.4.tar.bz2),可在windows环境下载好,拷贝至linux环境安装,或直接linux命令行下载。这里给出 linux直接下载并编译安装(以下均为shell命令):
1). wget下载
wget
ftp://ftp.vim.org/ftp/pub/vim/unix/vim-7.4.tar.bz2
(或用ftp命令登陆ftp://ftp.vim.org,get命令获取)

2). 解压
bunzip2 vim-7.4.tar.bz2

3). 解压
tar xvf vim-7.4.tar

4). 进入vim74(解压后的)目录,执行
./configure --disable-selinux --enable-cscope
(./configure -help 查看后面参数选项的含义)

5). 编译
make

6). 安装
make install

只要不出现error即代表成功安装,也可直接用vim命令来检测,或whatis vim(whereis vim)查看。通常情况下,许多发行版会默认安装vim,则可省略上述步骤。

【vim的初始化配置.vimrc】

1. 存放位置

      linux环境下vim的初始化配置文件为.vimrc, 通常有两个:系统版本和用户版本,前者不同发行版linux会有不同,一般位于/etc/vimrc,是整个系统vim的默认配置;后者位于~/.vimrc,是当前用户的vim配置,会覆盖系统配置。关于vim的其他配置参数文件位于/usr/local/share/vim/下,可进入vim,在命令模式下键入
:version (查看基本配置路径)
:echo $VIM
:echo $HOME(查看具体路径值)
~/.vimrc有时并不存在,此时用户可以建立一个.vimrc,放入主目录以实现自己的vim配置。

2. 主要命令参数
      .vimrc通常用于指定vim的编辑参数和外观环境。下面列出常用的命令参数及其含义:

"打开语法高亮
syntax on

"使用配色方案
colorscheme desert

"打开文件类型检测功能
filetype on

"不同文件类型采用不同缩进
filetype indent on

"允许使用插件
filetype plugin on
filetype plugin indent on

"关闭vi模式
set nocp

"与windows共享剪贴板
set clipboard+=unnamed

"取消VI兼容,VI键盘模式不易用
set nocompatible

"显示行号, 或set number
set nu

"历史命令保存行数 
set history=100 

"当文件被外部改变时自动读取
set autoread 

"取消自动备份及产生swp文件
set nobackup
set nowb
set noswapfile

"允许使用鼠标点击定位
set mouse=a

"允许区域选择
set selection=exclusive
set selectmode=mouse,key

"高亮光标所在行
set cursorline

"取消光标闪烁
set novisualbell

"总是显示状态行
set laststatus=2

"状态栏显示当前执行的命令
set showcmd

"标尺功能,显示当前光标所在行列号
set ruler

"设置命令行高度为3
set cmdheight=3

"粘贴时保持格式
set paste

"高亮显示匹配的括号
set showmatch

"在搜索的时候忽略大小写
set ignorecase
 
"高亮被搜索的句子
set hlsearch
 
"在搜索时,输入的词句的逐字符高亮(类似firefox的搜索)
set incsearch

"继承前一行的缩进方式,特别适用于多行注释
set autoindent

"为C程序提供自动缩进
set smartindent

"使用C样式的缩进
set cindent

"制表符为4
set tabstop=4

"统一缩进为4
set softtabstop=4
set shiftwidth=4

"允许使用退格键,或set backspace=2
set backspace=eol,start,indent
set whichwrap+=<,>,h,l

"取消换行
set nowrap

"启动的时候不显示那个援助索马里儿童的提示
set shortmess=atI

"在被分割的窗口间显示空白,便于阅读
set fillchars=vert:\ ,stl:\ ,stlnc:\

"光标移动到buffer的顶部和底部时保持3行距离, 或set so=3
set scrolloff=3

"设定默认解码
set fenc=utf-8
set fencs=utf-8,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936

"设定字体
set guifont=Courier_New:h11:cANSI
set guifontwide=新宋体:h11:cGB2312
 
"设定编码
set enc=utf-8
set fileencodings=ucs-bom,utf-8,chinese
set langmenu=zh_CN.UTF-8
language message zh_CN.UTF-8
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim

"自动补全
filetype plugin indent on
set completeopt=longest,menu

"自动补全命令时候使用菜单式匹配列表
set wildmenu
autocmd FileType ruby,eruby set omnifunc=rubycomplete#Complete
autocmd FileType python set omnifunc=pythoncomplete#Complete
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
autocmd FileType java set omnifunc=javacomplete#Complet

【vim的语法高亮/配色方案】

vim的配色分两部分:编辑环境配色和文本区域配色
1) vim编辑环境配色:比如Vim编辑区的前景背景色、状态栏颜色、错误提示颜色、查找、光标、圈选区、行号、折叠等的颜色
这里列出几个配色组名及其含义(全部的详细信息查看帮助文件 :help hi 查找 "highlight-group" 即可):

Cursor        光标下的字符颜色  
CursorLine    光标所在行颜色  
ErrorMsg      命令行出现的错误信息提示  
IncSearcg     被搜索字符的颜色  
Normal        普通字符  
Pmenu         弹出的提示条目颜色  
PmenuSel      弹出的提示条目中被选中条目的颜色  
SpellBad      拼写错误字符颜色  
Visual        可视化模式下选中字符的颜色  
Menu          菜单栏的颜色字体  
Scrollbar     滚动条的颜色 

2) 文本区域配色:可编辑的文本区域的字符配色(详细信息请执行 :help hi搜索 "*comment")
由于配色种类较多,vim默认分了几大类(帮助信息中带*的):

*Comment        注释
*Constant       常量
*statement      常用关键字标示符
*PrePoc         预处理符号
*Type           数据类型


下面是较为详细的组别:

String          字符串常量: "string abc\n"
Character       单个字符常量: 'c', '\n'
Number          数字常量: 234, 0xff
Boolean         布尔常量: TRUE, false
Function        函数名
Conditional     条件关键字: if, then, else, endif, switch, etc.
Repeat          循环关键字: for, do, while, etc.
Operator        操作符: "sizeof", "+", "*", etc.
Exception       异常关键字: try, catch, throw

这样便可以更为详细的为每一个组别进行配色。

查看当前的vim配色情况
:hi/highlight

另外,文本区域的配色可以关闭,但环境配色不能,通常vim给定的默认可选配色方案中同时包含了以上两个方面。
下面就一条具体的配色命令(对数据类型配色)解释每个字段的含义:

hi Type cterm=none ctermbg=White ctermfg=Green guibg=Gray guifg=Red

hi: highlight的缩写,配色命令
Type: 配色组名,可以自定义(修改$VIMRUNTIME/syntax/下对应的文件可改变不同语言的高亮方案)其内容
cterm,ctermbg,ctermfg,guibg,guifg: 代表了不同显示环境
White,Green: 表示颜色(也可以用数字或者类似与html的16进制颜色表示方法)

显示环境有三种:黑白终端,彩色终端,图形界面,三种环境下参数名称如下:

term        attributes in a B&W terminal
cterm       attributes in a color terminal
ctermfg     foreground color in a color terminal
ctermbg     background color in a color terminal
gui         attributes in the GUI
guifg       foreground color in the GUI
guibg       background color in the GUI

 

其中term仅有黑白两色,cterm下颜色较为单一,GUI模式颜色丰富

若要仅修改某种语言(c、java、pascal)的配色,则在配色组名前加语言名称即可,比如对c/c++语言的数据类型单独配色:
hi cType ctermfg=Blue

若是修改java/pascal的数据类型,则相应的将cType替换为javaType/pascalType即可。

对于文本区域的语法高亮(即配色),我们可根据需求特殊化定制,比如自定义组: myUniqueWord, mySymbol,使用syn/syntax命令
syn keyword myUniqueWord gang Gang swagger
syn match mySymbol "[,.;(){}[]]" (可使用正则表达式)


vim目前7.4版本给出的可直接使用(colorscheme命令加于.vimrc中即可)的配色方案位于目录:
/usr/local/share/vim/vim74/colors,比如使用desert.vim中的配色,则于.vimrc中添加一行
colorscheme desert
即可

网友提供的配色方案列表(带效果图),可参考:
http://vimcolorschemetest.googlecode.com/svn/html/index-c.html
http://www.oschina.net/news/32306/10-vim-color-schemes-you-need-to-own

:hi/highlight
命令,可查看当前vim的颜色配置

:help hi/highlight
显示帮助文件(syntax.txt,可访问官方在线版
http://vimdoc.sourceforge.net/htmldoc/syntax.html)内容,介绍了颜色配置脚本中关键字的含义和使用方法

相同配色vim脚本在不同的终端下可能显示不太一致,这是由终端下颜色设置不一致导致的,属正常情况。

【vim的代码补全、结构化视图】(基于autocomplpop + omnicppcomplete + ctags + taglist + cscope + NERDtree)

先一句话介绍每个插件的用途:
--> ctags: 为源码的变量/对象、结构体/类、函数/接口、宏等产生索引,以便快速查找和定位
 - Official site  
http://ctags.sourceforge.net/
 - VIM online  
http://www.vim.org/scripts/script.php?script_id=610

--> taglist:提供源码的结构化浏览功能
 - Official site  
http://vim-taglist.sourceforge.net/
 - VIM online  http://www.vim.org/scripts/script.php?script_id=273

--> AutoComplPop:代码补全提示自动弹出
 - VIM online  
http://www.vim.org/scripts/script.php?script_id=1879

--> OmniCppComplete:基于ctags的索引文件提供全面的c++(类成员、继承、this指针、.->访问符等)的代码补全功能
 - VIM online  
http://www.vim.org/scripts/script.php?script_id=1520

--> cscope:对代码产生索引数据库,提供对象接口字符串的查找,并用列表显示(:cw - quickfix)
 - Official site  
http://cscope.sourceforge.net/
 - VIM online  http://www.vim.org/scripts/script.php?script_id=4082 

--> NERDtree:以树形结构显示文件系统的目录(同windows的资源管理器),并可以在目录间切换
- VIM online http://www.vim.org/scripts/script.php?script_id=1658

vim支持的几乎所有plugin&&utility都在这里可以下载到(主要以vim脚本的形式)
http://www.vim.org/scripts/index.php

下面逐一介绍各个插件的安装和使用方法
1) ctags
2) taglist
3) AutoComplPop
4) OmniCppComplete
5) cscope

6) NERDtree
(待续)

由于后续各个插件的介绍篇幅较长,单独形成博文,请参考:

ctags 的安装和使用方法,请猛击:http://blog.csdn.net/g_brightboy/article/details/16830395

taglist的安装和使用方法,请猛击:http://blog.csdn.net/g_brightboy/article/details/16843899

AutoComplPop和OmniCppComplete的安装和使用方法,请用力敲鼠标左键:http://blog.csdn.net/g_brightboy/article/details/19498983

  • 25
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值