打造个性版vim

众所周知,vim是一种非常强大的IDE,不少朋友说他配合上插件几乎超越市面上任何一款编辑器。鄙人水平有限,对vim还处于待入门的阶段,经一位死党机油的精心指点和资料的查阅,终于更新了自己vim。 其实本文有点标题党的意味,主要不是给大家展示如何配置而是给大家说明如何在借鉴别人的配置或者在另一台电脑上复原vim配置时,中间需要注意的一些东西。

以下配置代码引自习科,这里就不多说了。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

”———————基本设置————————-

“语言设置

set langmenu=zh_CN.UTF-8

set helplang=cn

“解决某些文档编码造成中文乱码的问题

set fileencodings=utf-8,gb18030,utf-16,big5

”——————————————————

syntax on “自动语法高亮

set mouse=a “所有模式下允许使用鼠标

set background=dark “设置背景颜色为Dark,让字体更加醒目

set nu “显示行号

set showcmd “显示输入命令

set smartindent “智能语法对齐

set foldenable “允许折叠

set foldmethod=manual “手动折叠

set shiftwidth=4 “代码缩进为4个字符

set softtabstop=4 “按一次Tab前进4个字符

set tabstop=4 “保存Tab宽度为4个字符

set history=300 “保存300条历史记录

set expandtab “使用空格代替制表符

set hlsearch “搜索高亮

set incsearch “搜素逐字高亮

set nowrapscan “禁止搜索到文件两端时重新搜索

set ignorecase smartcase “搜索时智能忽略大小写

set magic “设置魔术

set ttimeoutlen=100 “设置键码超时

colorscheme ron “ron配色方案

autocmd InsertEnter * se cul “进入编辑模式下高亮当前行

autocmd InsertLeave * se nocul “回到普通模式下取消高亮当前行

“vimrc修改之后自动加载

autocmd! bufwritepost .vimrc source %

”———————插件相关————————-

“vundle插件管理器

set nocompatible “关闭vi兼容模式,vundle需求设置

filetype off “关闭文件类型检测,vundle需求设置

set rtp+=~/.vim/bundle/vundle/

call vundle#rc()

” 让Vundle管理自身

Bundle ‘gmarik/vundle’

“使用vundle管理的插件在下面声明:

” github上使用如下方式填写

“Bundle ‘tpope/vim-fugitive’

“Bundle ‘rstacruz/sparkup’, {‘rtp’: ‘vim/’}

Bundle “scrooloose/syntastic”

Bundle “Shougo/neocomplcache”

” vim-scripts上的插件按照下面方式填写

” 插件名可以在这里搜索[url=http://vim-scripts.org/vim/scripts.html]http://vim-scripts.org/vim/scripts.html[/url]

Bundle ‘The-NERD-tree’

Bundle ‘The-NERD-Commenter’

Bundle ‘fcitx.vim’

Bundle ‘colorizer’

Bundle ‘vim-javascript’

Bundle ‘taglist.vim’

Bundle ‘sgmlendtag’

Bundle ‘EasyMotion’

“其他的插件按照下面方式填写

“Bundle ‘git://git.wincent.com/command-t.git’

Bundle ‘https://github.com/Lokaltog/vim-powerline.git’

filetype plugin indent on “根据文件类型启用插件,vundle需求设置

“vundle使用方法:

” :BundleList - 列出已声明的插件

” :BundleInstall(!) - 安装(更新)插件

” :BundleSearch(!) foo - 搜索插件(或先刷新缓存)

” :BundleClean(!) - 清除不在声明列表中插件

” 输入:h vundle查看更多帮助文档与细节

” NOTE: comments after Bundle command are not allowed..

“vim-powerline配置(状态栏扩展)

set laststatus=2

set t_Co=256

let g:Powerline_symbols = ‘unicode’

“NERDTree”

“F4打开/关闭NERDtree插件

map :NERDTreeToggle

“imap :NERDTreeToggle

“The-NERD-Commenter

let mapleader=”,” “改变默认’'键,将其改映射为’,’键

“普通模式下:

” ,cc 注释当前行

” ,cs 以”性感”的方式注释

” ,cu 取消注释

” ,ca 在可选的注释方式之间切换,比如C/C++ 的块注释/* */和行注释//

” ,cm 添加块注释

” ,cA 当前行未添加注释符号

” colorizer

” 普通模式下输入 ,tc 开启/关闭CSS中显示颜色

“javascript

let b:javascript_fold=1 “ 打开javascript折叠

let javascript_enable_domhtmlcss=1 “ 打开javascript对dom、html和css的支持

” syntastic(一个非常好用的多语言的语法与编码风格检查插件)

let g:syntastic_auto_jump=1

let g:syntastic_check_on_open = 1

let g:syntastic_error_symbol = ‘✗’

let g:syntastic_warning_symbol = ‘⚠’

let g:syntastic_auto_loc_list = 1

let g:syntastic_loc_list_height = 6

let g:syntastic_enable_highlighting = 0

“Taglist(按F3启动代码浏览)

nmap :Tlist

let Tlist_Use_Right_Window=1

let Tlist_Exit_OnlyWindow = 1

let Tlist_Show_One_File = 1

let Tlist_Use_SingleClick=1

“easymotion(快速一定光标)

let g:EasyMotion_leader_key = ‘’

“双空格+w出现行关键字字母然后快速跳跃

“neocomplcache(自动补全插件)

” 启动vim时开启neocomplcache.

let g:neocomplcache_enable_at_startup = 1

” Use smartcase.

let g:neocomplcache_enable_smart_case = 1

” Set minimum syntax keyword length.

let g:neocomplcache_min_syntax_length = 3

let g:neocomplcache_lock_buffer_name_pattern = ‘*ku*’

” Enable heavy features.

” Use camel case completion.

let g:neocomplcache_enable_camel_case_completion = 1

” Use underbar completion.

let g:neocomplcache_enable_underbar_completion = 1

” Define keyword.

if !exists(‘g:neocomplcache_keyword_patterns’)

let g:neocomplcache_keyword_patterns = {}

endif

let g:neocomplcache_keyword_patterns[‘default’] = ‘\h\w*’

” Enable omni completion.

autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS

autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags

autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS

autocmd FileType python setlocal omnifunc=pythoncomplete#Complete

autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags

autocmd FileType ruby setlocal omnifunc=rubycomplete#Complete

” Enable heavy omni completion.

if !exists(‘g:neocomplcache_omni_patterns’)

let g:neocomplcache_omni_patterns = {}

endif

let g:neocomplcache_omni_patterns.ruby = ‘[^. \t].\h\w|\h\w*::’

let g:neocomplcache_omni_patterns.php = ‘[^. \t]->\h\w|\h\w::’

let g:neocomplcache_omni_patterns.c = ‘[^.[:digit:] *\t]\%(.|->)’

let g:neocomplcache_omni_patterns.cpp = ‘[^.[:digit:] \t]\%(.|->)|\h\w::’

”——————–自定义功能————————–

“F8/F9开启/关闭粘贴模式(粘贴代码时避免自动缩进)

map :set paste

map :set nopaste

“新建.c,.h,.sh,.java文件,自动插入文件头

autocmd BufNewFile .cpp,.[ch],.sh,.java,*.py exec “:call SetTitle()”

"”定义函数SetTitle,自动插入文件头

func SetTitle()

“如果文件类型为.sh文件

if &filetype == ‘sh’

call setline(1,”#########################################################################”)

call append(line(“.”), “# File Name: “.expand(“%”))

call append(line(“.”)+1, “# Author: 这里修改为您的名字”)

call append(line(“.”)+2, “# mail: 这里修改为您的邮箱”)

call append(line(“.”)+3, “# Created Time: “.strftime(“%c”))

call append(line(“.”)+4, “#########################################################################”)

call append(line(“.”)+5, “#!/bin/bash”)

call append(line(“.”)+6, “”)

elseif &filetype == ‘python’

call setline(1,”#!/usr/bin/env python”)

call append(line(“.”),”#coding=utf-8”)

call append(line(“.”)+1, “”)

else

call setline(1, “/*************************”)

call append(line(“.”), “ > File Name: “.expand(“%”))

call append(line(“.”)+1, “ > Author: 这里修改为您的名字”)

call append(line(“.”)+2, “ > Mail: 这里修改为您的邮箱 “)

call append(line(“.”)+3, “ > Created Time: “.strftime(“%c”))

call append(line(“.”)+4, “ ************************/”)

call append(line(“.”)+5, “”)

endif

if &filetype == ‘cpp’

call append(line(“.”)+6, “#include”)

call append(line(“.”)+7, “using namespace std;”)

call append(line(“.”)+8, “”)

endif

if &filetype == ‘c’

call append(line(“.”)+6, “#include”)

call append(line(“.”)+7, “”)

endif

if &filetype == ‘java’

call append(line(“.”)+6,”public class “.expand(“%”))

call append(line(“.”)+7,””)

endif

endfunc

“新建文件后,自动定位到文件末尾

autocmd BufNewFile * normal G

“C/C++/shell脚本/Python/Java/html按F5自动编译/运行

map :call AutoCompileRun()

func! AutoCompileRun()

exec “w”

if &filetype == ‘c’

exec “!g++ % -o %<”

exec “!time ./%<”

elseif &filetype == ‘cpp’

exec “!g++ % -o %<”

exec “!time ./%<”

elseif &filetype == ‘sh’

:!time bash %

elseif &filetype == ‘python’

exec “!time python2.7 %”

elseif &filetype == ‘java’

exec “!javac %”

exec “!time java %<”

elseif &filetype == ‘html’

exec “!firefox % &”

endif

endfunc

“C/C++按F6使用GDB进行调试

map :call Rungdb()

func! Rungdb()

exec “w”

exec “!g++ % -g -o %<”

exec “!gdb ./%<”

endfunc

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

配置问题:楼主在配置时遇到以下几个问题。 第一:git 由于博主采用的是centos,默认没装git。而vim中的插件管理器Vundle,最方便的方法是git安装。然后楼主在网上查了下,一大堆,为了省事,发现直接yum install git即可,查看git –version,得到版本,安装成功。 第二:安装Vundle git clone http://github.com/gmarik/vundle.git ~/.vim/bundle/vundle 即可。这个主要是配置vimrc时用到,vimrc是更改vim所需,配置文件可放在github上。 第三:配置文件作者的小问题 据发布这个配置的网友所说,复制配置文件.vimrc到用户目录后,要进入vim命令模式:BundleInstall,才能更新写入配置,但不知道是因为root权限或者centos系统本身还是其他神马的缘故,并不用更新,直接可用。暗自揣测可能是配置文件本身直接更新了的缘故吧。 第四:关于配置文件格式的整改 由于部分github上程序猿开发的跨平台性并不是特好,诸多异处,比如换行符。在win下开发的拿到linux下用各种出错,我们可以采用dos2unix转换下格式,(在centos下没有好像默认安装,附上链接: http://blog.csdn.net/bluewhale1/article/details/8074978

补充一点 载入配置可用:BundleInstall

如:颜色配置文件在里,/usr/share/vim/vim71/colors/ 中间那个vim71数字可能会不一样,视情况而定。

PS:推荐一篇vim配置的文章,朋友们可以diy喔。http://blog.chinaunix.net/uid-179573-id-2856644.html vim是一款非常强大的编辑器,能改善程序猿码字调试时的错误率,大幅度提高速度,但需要较好的掌握语法和对其的熟练度,与君共勉!