简介

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的下载与安装

可以尝试:http://www.cnblogs.com/highway-9/p/5984285.html

1. 在线安装

直接shell中输入如下命令:

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

linux会自动检测并下载安装。apt-get 安装出错,点这里。

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 ( WINDOW用户在次目录下编辑文件_vimrc完成下面配置 )
: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= "当文件被外部改变时自动读取
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= "状态栏显示当前执行的命令
set showcmd "标尺功能,显示当前光标所在行列号
set ruler "设置命令行高度为3
set cmdheight= "粘贴时保持格式
set paste "高亮显示匹配的括号
set showmatch "在搜索的时候忽略大小写
set ignorecase "高亮被搜索的句子
set hlsearch "在搜索时,输入的词句的逐字符高亮(类似firefox的搜索)
set incsearch "继承前一行的缩进方式,特别适用于多行注释
set autoindent "为C程序提供自动缩进
set smartindent "使用C样式的缩进
set cindent "制表符为4
set tabstop= "统一缩进为4
set softtabstop=
set shiftwidth= "允许使用退格键,或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= "设定默认解码
set fenc=utf-
set fencs=utf-,usc-bom,euc-jp,gb18030,gbk,gb2312,cp936 "设定字体
set guifont=Courier_New:h11:cANSI
set guifontwide=新宋体:h11:cGB2312 "设定编码
set enc=utf-
set fileencodings=ucs-bom,utf-,chinese
set langmenu=zh_CN.UTF-
language message zh_CN.UTF-
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 数字常量: , 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

1. vim 的安装及配置的更多相关文章

  1. LINUX操作系统VIM的安装和配置

    VIM的安装   在命令行敲入"vi"后按"tab"键,可以看到目前系统中只安装了vi和vim.tiny. vim是从VI发展而来的一个文本编辑器,功能更强大. ...

  2. ubuntu16.04下vim的安装与配置

    一.安装vim 使用命令 $ sudo apt-get install vim  来安装vim,安装后的vim需要进行一些配置,不然使用起来会有些不方便,比如不会自动缩进. 二.配置vim 使用命令  ...

  3. 在vim中安装及配置NERDTree插件

    使用Vundle插件安装,在.vimrc中加入以下代码: Plugin 'scrooloose/nerdtree' 打开vim,输入命令如下: :BundleInstall 等待安装完毕 配置NERD ...

  4. linux应用之vim的安装与配置(centos)

    1.vim的安装 #yum search vim   //查看vim相关软件信息 #yum install -y vim*  //在线安装vim 2.vim的配置 (1)~/.viminfo 在vim ...

  5. linux下vim的安装与配置(centos)

    1.vim的安装 #yum search vim   //查看vim相关软件信息 #yum install -y vim*  //在线安装vim 2.vim的配置 (1)~/.viminfo 在vim ...

  6. Ubuntu下VIM的安装及其配置——Linux篇

    一.Ubuntu系统默认内置: 实际上ubuntu默认没有安装老版本的vi,只装了vim.vi是vim.tiny(vim的最小化版本,不含 GUI,并且仅含有一小部分功能,并且默认与vi兼容.此软件包 ...

  7. Debian下VIM的安装和配置

    1.安装 apt-get install vim 2.配置 这是我的vim 配饰文件,基本的功能都能实现,在这里做一个备份,省的以后重装系统还要到处找这个配置文件(/etc/vim/vimrc) : ...

  8. Linux下vim的安装及配置

    目录 一.vim的下载 二.vim的基本知识 三.vim的基本配置 四.vim与外部文件的复制粘贴 一.vim的下载 Ubuntu系统,输入命令: sudo apt install vim Cento ...

  9. Linux vim的安装和配置:

    1:首先就碰到一个问题 程序 'vim' 已包含在下列软件包中: * vim * vim-gnome * vim-tiny * vim-athena * vim-gtk * vim-nox 请尝试:s ...

随机推荐

  1. 苹果企业账号打包发布App的详细流程

    原文链接:http://www.cnblogs.com/mddblog/p/4718228.html 一.通过企业账号申请证书 1 Certificate Signing Request (CSR)文 ...

  2. JS 数据处理技巧及小算法汇总

    前言: 金秋九月的最后一天,突然发现这个月博客啥也没更新,不写点什么总觉得这个月没啥长进,逆水行舟,不进则退,前进的路上贵在坚持,说好的每个月至少一到两篇,不能半途而废!好多知识写下来也能加深一下自身 ...

  3. [UWP 自定义控件]了解模板化控件(5):VisualState

    1. 功能需求 使用TemplatePart实现上篇文章的两个需求(Header为空时隐藏HeaderContentPresenter,鼠标没有放在控件上时HeaderContentPresent半透 ...

  4. Asp.net MVC 中Ajax的使用

    Asp.net MVC 抛弃了Asp.net WebForm那种高度封装的控件,让我们跟底层的HTML有了更多的亲近.可以更自由.更灵活的去控制HTML的结构.样式和行为.而这点对于Ajax 的应有来 ...

  5. Mvc_缓存浅谈

    缓存是将信息放在内存中以避免频繁访问数据库从数据库中提取数据,在系统优化过程中,缓存是比较普遍的优化做法和见效比较快的做法. 对于MVC有Control缓存和Action缓存. 一.Control缓存 ...

  6. LInux系统木马植入排查分析 及 应用漏洞修复配置(隐藏bannner版本等)

    在日常繁琐的运维工作中,对linux服务器进行安全检查是一个非常重要的环节.今天,分享一下如何检查linux系统是否遭受了入侵? 一.是否入侵检查 1)检查系统日志 检查系统错误登陆日志,统计IP重试 ...

  7. Redis常用操作-------List(列表)

    1.BLPOP key [key ...] timeout BLPOP 是列表的阻塞式(blocking)弹出原语. 它是 LPOP 命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被  ...

  8. Quartz中时间表达式的设置-----corn表达式 (转)(http://www.cnblogs.com/GarfieldTom/p/3746290.html)

    Quartz中时间表达式的设置-----corn表达式 (注:这是让我看比较明白的一个博文,但是抱歉,没有找到原作者,如有侵犯,请告知) 时间格式: <!-- s m h d m w(?) y( ...

  9. JsTree使用一例

    SearchDesignPatent.treeContainer().jstree({ 'core' : { 'data' : json.data }, }).bind('click.jstree', ...

  10. MySQL中条件放在where后面与放在on后面的区别

    假设有两种表:test_on_position表和address表,address表存放地址,test_on_position存放会员及其常用的地址,数据如下: address表: test_on_p ...