转载:http://blog.csdn.net/yzhy_ocean/article/details/7272222vim
自从前几天接触了Macintosh Lion终端里的Vim后,我便决定深刻了解并掌握这个几乎和计算机自己历史同样悠久的被称为最强文本编辑器的软件,至于究竟是不是最强的我尚未资格去说这个问题,可是将它排在编辑器的前3位估计没有人会反对。我选择学习这格编辑器有几点缘由:编辑器
Vim有很是繁多而且强大的命令。学习
Vim能够随时随地定制本身喜欢的、属于本身的Vim。字体
Macintosh Lion下Vim配合其余编译器编写程序很是地方便。好比Vim+gcc编C,Vim+JDK编Java。ui
昨天花了整整一天来配置个人Vim,在网上看了许多别人写的关于配置Vim的文章,最后终于得到了小小的成功,同时将我看到的各类资料整理到这里。编码
提及配置Vim,首先要知道三个配置文件:vimrc,gvimrc和exrc。这些配置文件的位置油Vim的安装位置和操做系统决定。spa
vimrc操作系统
vimrc是Vim最主要的配置文件,它有两个版本:全局版本(global)和用户版本(personal)。全局vimrc文件在Vim的安装目录中,个人电脑是Mac,因此其路径是.net
/usr/share/vim/vimrc命令行
假如你不知道全局vimrc的位置,能够打开Vim,在普通模式(Normal)下输入下面的命令获得它的位置:
echo $VIM(注意大小写)
用户版本的vimrc文件在当前用户的主目录下,主目录的位置依赖于操做系统。Mac下的用户vimrc文件路径为:
/Users/用户名/.vimrc(文件名前面的”.”表明这个文件是隐藏文件)
你能够在Vim的普通模式下输入下面的命令,查找用户主目录的位置:
:echo $HOME
可是Mac下默认是没有用户vimrc的,因此须要你本身建立一个。
无论怎么改用户版的vimrc文件,其中的内容都是是覆盖在全局vimrc文件中设置的内容,这就意味着你能够不须要去改变全局vimrc文件来进行配置vim,只须要修改用户vimrc文件。
gvimrc
gvimrc文件是Gvim的配置文件,和vimrc很类似,而且是放在同一个目录下的,也分为全局版和用户版。这个文件是用来设置只有Gvim才能使用的GUI设置。我感受Vim比Gvim好用,因此没有管这个文件。
exrc
exrc文件是用做与vi或ex向后兼容的,它也和vimrc放在同一个目录,固然也分全局版和用户版。然而,除非你想用vi兼容的模式来使用Vim,不然你更本不会用到这个文件。固然通常人都不会用vi兼容模式来使用Vim的。
而后是配置本身喜欢的Vim。
首先建立用户版vimrc(Mac下默认是没有的),你能够在用户主目录下本身建立一个空的用户版vimrc文件:
mkdir ~/.vimrc
也能够将全局版vimrc文件复制到用户主目录下作为用户版vimrc:
cp /usr/share/vim/vimrc ~/.vimrc
这里说明一下,~/就是用户主目录,至关于/Users/用户名/。
通常推荐后一种作法。
接下来打开用户vimrc文件并在里面添加各类Vim命令。将个人Vim文件复制到下面:
" Configuration file for vim
set modelines=0" CVE-2007-2438
" Normally we use vim-extensions. If you want true vi-compatibility
" remove change the following statements
set nocompatible" Use Vim defaults instead of 100% vi compatibility
set backspace=2" more powerful backspacing
syntax on
" 语法高亮
autocmd InsertLeave * se nocul
autocmd InsertEnter * se cul
" 用浅色高亮当前行
set smartindent
" 智能对齐
set autoindent
" 自动对齐
set confirm
" 在处理未保存或只读文件的时候,弹出确认
set tabstop=4
" Tab键的宽度
set softtabstop=4
set shiftwidth=4
" 统一缩进为4
set noexpandtab
" 不要用空格代替制表符
set number
" 显示行号
set history=50
" 历史纪录数
set hlsearch
set incsearch
" 搜索逐字符高亮
set gdefault
" 行内替换
set encoding=utf-8
set fileencodings=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936,utf-16,big5,euc-jp,latin1
" 编码设置
colorscheme torte
" 设置颜色主题
"set guifont=Menlo:h16:cANSI
" 设置字体
set langmenu=zn_CN.UTF-8
set helplang=cn
" 语言设置
set cmdheight=2
" 命令行(在状态行)的高度,默认为1,这里是2
set ruler
" 在编辑过程当中,在右下角显示光标位置的状态行
set laststatus=2
" 老是显示状态行
set showcmd
" 在状态行显示目前所执行的命令,未完成的指令片断亦会显示出来
set scrolloff=3
" 光标移动到buffer的顶部和底部时保持3行距离
set showmatch
" 高亮显示对应的括号
set matchtime=5
" 对应括号高亮的时间(单位是十分之一秒)
set autowrite
" 在切换buffer时自动保存当前文件
set wildmenu
" 加强模式中的命令行自动完成操做
set linespace=2
" 字符间插入的像素行数目
set whichwrap=b,s,<,>,[,]
" 开启Normal或Visual模式下Backspace键,空格键,左方向键,右方向键,Insert或replace模式下左方向键,右方向键跳行的功能。
filetype plugin indent on
" 分为三部分命令:file on, file plugin on, file indent on.分别表示自动识别文件类型,用文件类型脚本,使用缩进定义文件。
"==================自定义的键映射======================
vnoremap $1 <esc>`>a)<esc>`<i(<esc>
vnoremap $2 <esc>`>a]<esc>`<i[<esc>
vnoremap $3 <esc>`>a}<esc>`<i{<esc>
vnoremap $$ <esc>`>a"<esc>`<i"<esc>
vnoremap $q <esc>`>a'<esc>`<i'<esc>
vnoremap $e <esc>`>a"<esc>`<i"<esc>
" 括号自动生成
map <F7> :if exists("syntax_on") <BAR>
\ syntax off <BAR><CR>
\ else <BAR>
\syntax enable <BAR>
\ endif
" 单键<F7>控制syntax on/off。缘由是有时候颜色太多会妨碍阅读。
map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()
exec "w"
exec "!gcc % -o %<"
exec "! ./%<"
endfunc
" <F5>编译和运行C程序
map <F6> :call CompileRunGpp<CR>
func! CompileRunGpp()
exec "w"
exec "!g++ % -o %<"
exec "! ./<"
endfunc
" <F6>编译和运行C++程序
" Don't write backup file if vim is being called by "crontab -e"
au BufWrite /private/tmp/crontab.* set nowritebackup
" Don't write backup file if vim is being called by "chpass"
au BufWrite /private/etc/pw.* set nowritebackup
“ 后面的一行都是注释,有的命令暂时用不到,因此也注释掉了。
其中set backspace这一命令有两种写法:后面接数字或其余属性,
set backspace=0 等同于 set backspace= (Vi 兼容)
set backspace=1 等同于 set backspace=indent,eol
set backspace=2 等同于 set backspace=indent,eol,start
indent,eol,start这三项内容分别指定了Vim能够删除位于行首的空格,断行,以及开始进入Insert模式以前的位置(即之前编辑过的位置)。
部分效果以下图:
不得不说vim-handbook-cn-71实在是一本学习Vim必不可少的书,很是全面地介绍了Vim地各类用法。