更新了VIM的配置-_vimc(2012年1月版)

不知道哪根神经发了神经,就想把vim更新一下,安装了最新版的VIM 7.3.46,在网上搜了一圈其他达人的配置,把不常用的插件该删的删,该更新的更新,于是有了2012年的第一次发帖。启动vim后的样子是这样滴:

 

 具体的_vimc文件内容如下,完整的vimfiles和_vimc配置文件下载,点击这里下载附件:

"********************************************
" 只适用于Windows平台   updated:2012-01-22
"********************************************

"全局设置
"""""""""""""""""""""""""""""""""""""
set nocompatible			" 关闭 vi 兼容模式
set langmenu=zh_CN.UTF-8		" 指定菜单翻译的语言,从$RUMTIMEPATH/lange目录中载入相应的文件
let $VIMFILES = $VIM."/vimfiles"	" 映射vimfiles目录为$VMIMFILES
let mapleader=","			" 映射快捷键开始命令为","号
let g:mapleader=","			" g:表示全局设置
set backspace=indent,eol,start		" 设定在插入状态用退格键和Delete键可以删除回车符
set whichwrap+=<,>,h,l			" 使左右移动键在行首或行尾可以移动到前一行或下一行
syntax on				" 自动语法高亮
set wildmenu				" 命令行补全增强模式,在输入命令时列出匹配项目 
" 插入模式下补全功能的显示方式,分别支持弹出菜单式、插入匹配的最长文本、在预览窗口里显示
set completeopt=menu,longest,preview
set pumheight=15			" 插入模式下弹出补全菜单的最大显示项目数
set lines=35				" 设置窗口行高
set columns=140				" 设置窗口宽度
winpos 50 0				" 设置初始窗口的坐标位置,相对于左上角的像素x,y
"set equalalways			" 窗口在分割或关闭某窗口时自动使用相同的尺寸
set number				" 显示行号
set scrolloff=6				" 光标所在行上下两侧最少保留的屏幕可见行数
set tabstop=4				" 设定 tab 长度为
set softtabstop=4			" 编辑时执行<tab>或<BackSpace>的时候,把<tab>作为空格的数目
set shiftwidth=4			" 设定 cindent、<<、>> 缩进每一步使用的空白数目
" 如果打开,行首的<tab>根据shiftwidth值插入。如果关闭,则取决于tapstop等值
set smarttab
set history=100				" 命令行历史记录的行数,可以用上下箭头选择
set nobackup				" 覆盖文件时不备份
set noswapfile				" 缓冲区不使用交换文件
" 在打开文件、切换/删除缓冲区、打开/关闭窗口等操作时,选择文件所在的目录
set autochdir
set ignorecase				" 忽略大小写
set smartcase				" 如果搜索模式包含大写字母,忽略ignorecase
set nowrapscan				" 搜索到文件末尾时,不再回绕到文件首
set incsearch				" 输入搜索命令时,实时显示匹配结果
set hlsearch				" 搜索时高亮显示被找到的结果
set noerrorbells			" 关闭错误信息响铃
set novisualbell			" 关闭代替鸣叫的可视响铃
set t_vb=				" 取消可视铃声
filetype on				" 打开文件类型的侦测
filetype plugin on			" 打开特定文件类型时允许其相关插件文件的载入
filetype indent on			" 为特定的文件载入相应的缩进文件
set autoindent				" 打开自动缩进,通常与smartindent同时打开
set smartindent				" 智能自动缩进
set iskeyword+=_,$,@,%,#,-		" 将这些字符作为关键字,带有这些符号的单词不换行
" 插入括号时,短暂的跳转到匹配的对应括号,显示匹配的时间由matchtime决定
set showmatch
set matchtime=3				" 单位是十分之一秒
set matchpairs=(:),{:},[:],<:>		" 匹配括号的规则,增加针对html的<>
set selectmode=mouse,key		" 指定什么场合开始选择时启用选择模式而不是可视模式
set selection=exclusive			" 设定选择区的行为为闭区间,选择的最后一个字符包含在操作范围之内
colorscheme rdark			" 配色方案
set guifont=YaHei\ Consolas\ Hybrid:h11	" 设置字体和大小
"set linespace=4			" 设置行间距,单位是像素
set shortmess=at			" 减少hit-enter屏幕消息提示的次数
"set shortmess+=I			" 启动时不显示介绍信息
set cmdheight=2				" 命令行使用的屏幕行数
"set cmdwinheight=2			" 命令行窗口的屏幕行数
set ruler				" 显示光标位置的行号和列号
set nosol				" 普通模式下光标行间移动时不到行首的第一个非空白,而是尽量在同一列
set list				" 制表符显示方式
" 制表符显示方式:trail为拖尾空白显示字符,extends和precedes分别是wrap关闭时,所在行在屏幕右边和左边显示的指示字符
set listchars=tab:\ \ ,trail:.,extends:>,precedes:<
set laststatus=2			" 最后一个窗口何时有状态栏:0为永不,1为至少两个窗口时,2为总是
set display=lastline			" 解决自动换行格式下, 如折行之后高在超过窗口高度看不到最后一行的问题
set mouse=a				" 确保在所有模式下识别鼠标
"set nocursorline			" 不突出显示当前行
set cursorline				" 设置光标十字坐标,高亮当前行
hi cursorline guibg=#333333		" 高亮当前行的背景颜色
"set cursorcolumn			" 设置光标十字坐标,高亮当前列
"hi CursorColumn guibg=#333333		" 高亮当前列的背景颜色
set report=0				" 报告哪些行被修改过
set termencoding=Chinese		" 指定终端使用的编码,在+multi_byte特性下有效
" 设置vim内部使用的字符编码,应用于缓冲区、寄存器、表达式、viminfo保存的文本等。指定了新建文件时的默认字符编码
set encoding=utf-8
" 字符编码列表,编辑已存在文件时依次尝试的编码格式。不用于新文件
set fileencodings=ucs-bom,utf-8,cp936,gbk,gb2312,gb18030,big5,latin1	
" 当encoding=utf-8或别的unicode编码时有效,使用ASCII字符两倍的宽度处理东亚字符类
set ambiwidth=double
source $VIMRUNTIME/delmenu.vim	        " 解决指定encoding后出现的菜单乱码,先删除菜单显示
source $VIMRUNTIME/menu.vim		" 再次读取缺省菜单
language messages zh_CN.utf-8		" 解决console和界面的乱码
if has("gui_running")		
 	"set guioptions-=m		" 隐藏菜单栏
 	set guioptions-=T		" 隐藏工具栏
 	set guioptions+=g		" 使不活动的菜单项变灰,默认是不显示
 	set guioptions-=L		" 隐藏左侧滚动条
 	"set guioptions-=r		" 隐藏右侧滚动条
 	"set guioptions-=b		" 隐藏底部滚动条
 	set guioptions+=e		" 打开GUI标签页支持
 	set showtabline=2		" 指定何时显示标签页行,0为永远不会,1为至少有两个标签,2为永远会
endif
highlight StatusLine guifg=White guibg=Orange			" 当前窗口状态栏颜色
highlight StatusLineNC guifg=LightGrey guibg=LightSlateGrey	" 非当前窗口状态栏颜色
highlight ModeMsg guifg=White guibg=LimeGreen			" 模式消息显示的颜色
" 设置在状态行显示的信息
set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ [%{(&fenc==\"\"?&enc:&fenc).(&bomb?\",BOM\":\"\")}]\ %c:%l/%L%)\ 


"自定义快捷键
"""""""""""""""""""""""""""""""""""""
nmap <leader>w :w!<cr>			" ->强行保存			
nmap <leader>q :q!<cr>			" ->强行不保存退出
nmap <leader>wq :wq<cr>			" ->保存退出
map <silent> <leader>s :source $VIM/_vimrc<cr>		" ->读取_vimrc文件
"map <leader>e :e! $VIM/_vimrc<cr>			" ->编辑vimrc
map <silent> <leader>e :call SwitchToBuf("$VIM/_vimrc")<cr>	" ->快速打开_vimrc文件
map <leader>h *N			" ->模拟*N,高亮所有搜索到的关键字
"map <space> :nohl<cr>			" 定义空格键暂时取消高亮匹配
"map <leader>cd :cd %:p:h<cr>		" ->切换到当前路径

"窗口分割时,进行切换的按键热键需要连接两次,比如从下方窗口移动光标到上方窗口,需要<c-w><c-w>k,现在重映射为<c-k>.
"map <C-j> <C-W>j			" ->切换到下方窗口
"map <C-k> <C-W>k			" ->切换到上方窗口
"map <C-h> <C-W>h			" ->切换到左方窗口
"map <C-l> <C-W>l			" ->切换到右方窗口
map <leader>bd :Bclose<cr>		" ->关闭当前缓冲区
map <leader>tn :tabnew %<cr>		" ->将当前内容在新标签中打开
map <leader>te :tabedit			" ->打开空白新标签
map <leader>tc :tabclose<cr>		" ->关闭当前标签
map <leader>tm :tabmove			" ->移动当前标签到最后


"自定义命令
"""""""""""""""""""""""""""""""""""""
autocmd! BufWritePost _vimrc source $VIM/_vimrc			" _vimrc编辑后重载
autocmd VimEnter * call BufPos_Initialize()			" ALT+n来切换标签页
 

"插件设置
"""""""""""""""""""""""""""""""""""""
let g:javascript_enable_domhtmlcss=1		" 在html文件中也支持js语法高亮,支持dom方法的关键字

"a.vim:在c源程序和头文件间切换
"version 2.18	2007-06-07 

"WinManager:文件浏览窗口
"version 2.3	2002-04-03
"{{
 	let g:winManagerWindowLayout='FileExplorer'
 	nmap wm :WMToggle<cr>				" 输入wm 命令开启文件浏览窗口
"}}

"MiniBufExplorer:多个文件切换 可使用鼠标双击相应文件名进行切换
"version 6.3.2	2004-11-18
"{{
 	let g:miniBufExplMapWindowNavVim=1
 	let g:miniBufExplMapWindowNavArrows=1
 	let g:miniBufExplMapCTabSwitchBufs=1
 	let g:miniBufExplModSelTarget=1
"}}

"NERDTree:智能文件管理
"version 4.2.0	2011-12-28
"{{
 	let NERDChristmasTree=1		" 类似圣诞树的显示方式
 	let NERDTreeAutoCenter=1	" 控制当光标移动超过一定距离时,是否自动将焦点调整到屏中心
 	let NERDTreeBookmarksFile=$VIMFILES.'\NERDTree_bookmarks'	" 指定书签文件
 	let NERDTreeMouseMode=2		" 指定鼠标模式(1.双击打开 2.单目录双文件 3.单击打开)
 	let NERDTreeShowBookmarks=1	" 是否默认显示书签列表
 	let NERDTreeShowFiles=1		" 是否默认显示文件
 	let NERDTreeShowHidden=1	" 是否默认显示隐藏文件
 	let NERDTreeShowLineNumbers=0	" 是否默认显示行号
 	let NERDTreeWinPos='left'	" 窗口位置('left' or 'right')
 	let NERDTreeWinSize=31		" 窗口宽度
 	let NERDTreeQuitOnOpen = 1	" 当通过NERD Tree打开文件自动退出NERDTree界面
 	nnoremap <Leader>nt :NERDTree<CR>  " ->打开NERDTree界面
"}}}

"NERD_commenter:注释代码
"version 2.3.0	2010-12-07
"以下为插件默认快捷键
"{{
 	"<leader>ca	->在可选的注释方式之间切换,比如C/C++ 的块注释/* */和行注释//
 	"<leader>cc	->注释当前行
 	"<leader>cs	->以”性感”的方式注释
 	"<leader>cA	->在当前行尾添加注释符,并进入Insert模式
 	"<leader>cu	->取消注释
 	"<leader>cm	->添加块注释
"}}

"Load_Template:根据文件后缀自动加载模板,使用:LoadTemplate呼出
"version 1.1.0	2010-02-09
"{{
 	let g:template_path=$VIMFILES.'\template\'
 	nmap <leader>lt :LoadTemplate<cr>		" <Leader> + lt	->调用模版
 	"map <ESC>:LoadTemplate<cr><ESC>:AuthorInfoDetect<cr><ESC>Gi
 	"vmap <ESC>:LoadTemplate<cr><ESC>:AuthorInfoDetect<cr><ESC>Gi
"}}

"authorinfo.vim:自动添加作者信息(需要和NERD_commenter联用)使用,:AuthorInfoDetect呼出
"version 1.5	2011-08-18
"{{
 	let g:vimrc_author='Oscar' 
 	let g:vimrc_email='oscarwx@gmail.com' 
 	let g:vimrc_homepage='http://www.xxlab.com' 
"}}

"fencview.vim:自动编码识别,用:FencView查看文件编码和更改文件编码
"version 4.7	2011-04-04
"{{
 	let g:fencview_autodetect=1
"}}

"mark.vim:追踪高亮指定关键字
"version 1.1.8-g	2008-04-25
"\m		--normal模式下,在想要高亮的单词上面敲击\m即可高亮或取消高亮该单词
":Mark        --取消所有高亮
":Mark abc	--指定高亮单词 abc 或取消高亮 abc

"TxtBrowser:高亮TXT文本文件
"version 1.3.5	2011-08-06
"{{
 	autocmd BufEnter *.txt setlocal ft=txt			" 识别txt文件
 	autocmd BufRead,BufNewFile *.log setlocal ft=txt	" 识别log文件
"}}

"taglist.vim:代码导航
"version 4.5	2007-09-21
"通过:help taglist.txt查看具体参数说明
"{{
 	let Tlist_Ctags_Cmd = '"'.$VIMRUNTIME.'/ctags.exe"'
 	let Tlist_Show_One_File = 1		" 不同时显示多个文件的tag,只显示当前文件的
 	let Tlist_Exit_OnlyWindow = 1		" 如果taglist窗口是最后一个窗口,则退出vim
 	let Tlist_Use_Right_Window = 1		" 在右侧窗口中显示taglist窗口
 	let Tlist_Auto_Highlight_Tag = 1	" 自动高亮当前tag
 	let Tlist_Auto_Open = 1			" 用Vim打开文件时自动打开Taglist窗口
 	let Tlist_Auto_Update = 1		" 自动更新最新编辑文件的taglist
 	let Tlist_Close_On_Select = 0							
 	let Tlist_Compact_Format = 0
 	let Tlist_Display_Prototype = 0
 	let Tlist_Display_Tag_Scope = 1
 	let Tlist_Enable_Fold_Column = 0
 	let Tlist_File_Fold_Auto_Close = 0
 	let Tlist_GainFocus_On_ToggleOpen = 1
 	let Tlist_Hightlight_Tag_On_BufEnter = 1
 	let Tlist_Inc_Winwidth = 0
 	let Tlist_Max_Submenu_Items = 1
 	let Tlist_Max_Tag_Length = 30
 	let Tlist_Process_File_Always = 0
 	let Tlist_Show_Menu = 0
 	let Tlist_Sort_Type = "order"
 	let Tlist_Use_Horiz_Window = 0
 	let Tlist_WinWidth = 31
 	let tlist_php_settings = 'php;c:class;i:interfaces;d:constant;f:function'
 	nnoremap <silent> <F8> :TlistToggle<CR>
"}}

"SnipMate:支持主流编程语言的语法结构补全
"version 0.83	2009-07-13
 

"ctags.vim:在标题或状态栏显示函数信息 
"在项目顶层目录执行ctags -R生成tags目录
"打开源文件,在命令模式中执行如:set tags=../../tags,将相应的tags加入
"在函数名上按 <C-]> 即可转到函数定义,按 <C-T> 可以返回调用地址
"{{
 	let g:ctags_path=$VIMRUNTIME.'/ctags.exe'	" 设置ctags.exe的路径
 	let g:ctags_statusline=1			" 在状态栏显示函数名
 	"let g:ctags_args=1				" ctags程序的附加参数
 	"let generate_tags=1				" 对支持的文件类型自动运行生成脚本
 	"let g:ctags_regenerate=1			" 自动重建tag 数据库
 	"let g:ctags_title=1				" 在标题显示函数名
 	"set tags+=c:\MinGW\include\tags
 	"set tags+=c:\Lua\lua\tags
 	"set tags+=c:\Cygwin\usr\include\tags
"}}
 

"bufexplorer:缓冲区切换浏览
"version 7.2.8	2010-11-08
"'\be'	--正常打开
"'\bs' 	--水平分割打开
"'\bv' 	--垂直分割打开
"{{
 	map <leader><leader> <leader>be		"快捷键打开
"}}

"jsbeautify.vim:把 javascript 代码格式化便于阅读
"2009-08-03
"<leader>ff调用

"LargeFile:载入超大文件的插件
"version 4	2008-09-23
"{{
 	let g:LargeFile=200		"设定所谓的大文件最小尺寸(M)
"}}

"matchit:快速跳转到配对的符号或标签
"version 1.13.2	2008-01-29
"{{
 	let g:loaded_matchit=1
"}}

"zencoding:快速编写 html 代码
"version 0.58	2011-11-22
"{{
 	let g:user_zen_leader_key='<c-y>'
 	"let g:user_zen_settings={
 	"\'indentation':''
 	"\}
"}}

"自定义函数
"""""""""""""""""""""""""""""""""""""
"SwitchToBuf(filename):打开文件时新建标签页或者跳转到已打开的对应文件
function! SwitchToBuf(filename)
 	" find in current tab
 	let bufwinnr = bufwinnr(a:filename)
 	if bufwinnr != -1
 		exec bufwinnr . "wincmd w"
 		return
 	else
 		" search each tab
 		tabfirst
 		let tb = 1
 		while tb <= tabpagenr("$")
 			let bufwinnr = bufwinnr(a:filename)
 			if bufwinnr != -1
 				exec "normal " . tb . "gt"
 				exec bufwinnr . "wincmd w"
 				return
 			endif
 			tabnext
 			let tb = tb +1
 		endwhile
 		" not exist, new tab
 		exec "tabnew " . a:filename
 	endif
endfunction

function! MyDiff()
  let opt = '-a --binary '
  if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
  if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
  let arg1 = v:fname_in
  if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
  let arg2 = v:fname_new
  if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
  let arg3 = v:fname_out
  if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
  let eq = ''
  if $VIMRUNTIME =~ ' '
    if &sh =~ '\<cmd'
      let cmd = '""' . $VIMRUNTIME . '\diff"'
      let eq = '"'
    else
      let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
    endif
  else
    let cmd = $VIMRUNTIME . '\diff'
  endif
  silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq
endfunction

"BufPos_ActivateBuffer(num):激活相应缓冲区
function! BufPos_ActivateBuffer(num)
 	let l:count = 1
 	for i in range(1, bufnr("$"))
 		if buflisted(i) && getbufvar(i, "&modifiable")
 			if l:count == a:num
 				exe "buffer " . i
 				return
 			endif
 			let l:count = l:count + 1
 		endif
 	endfor
 	echo "No buffer!"
endfunction

"BufPos_Initialize():初始化缓冲区,默认为10个
function! BufPos_Initialize()
 	for i in range(1, 9)
 		exe "map <M-" . i . "> :call BufPos_ActivateBuffer(" . i . ")<CR>"
 	endfor
 	exe "map <M-0> :call BufPos_ActivateBuffer(10)<CR>"
endfunction

"VisualSearch(direction):可视状态下的搜索
function! VisualSearch(direction) range
    let l:saved_reg = @"
    execute "normal! vgvy"
    let l:pattern = escape(@", '\\/.*$^~[]')
    let l:pattern = substitute(l:pattern, "\n$", "", "")
    if a:direction == 'b'
        execute "normal ?" . l:pattern . "^M"
    elseif a:direction == 'gv'
        call CmdLine("vimgrep " . '/'. l:pattern . '/' . ' **/*.')
    elseif a:direction == 'f'
        execute "normal /" . l:pattern . "^M"
    endif
    let @/ = l:pattern
    let @" = l:saved_reg
endfunction

"CmdLine(str):从命令行执行相应菜单功能
function! CmdLine(str)
    exe "menu Foo.Bar :" . a:str
    emenu Foo.Bar
    unmenu Foo
endfunction

"CurDir():获得当前路径
function! CurDir()
    let curdir = getcwd()
    return curdir
endfunction


"关闭缓冲区
command! Bclose call <SID>BufcloseCloseIt()
function! <SID>BufcloseCloseIt()
   let l:currentBufNum = bufnr("%")
   let l:alternateBufNum = bufnr("#")
   if buflisted(l:alternateBufNum)
     buffer #
   else
     bnext
   endif
   if bufnr("%") == l:currentBufNum
     new
   endif
   if buflisted(l:currentBufNum)
     execute("bdelete! ".l:currentBufNum)
   endif
endfunction

转载于:https://my.oschina.net/superoscar/blog/39502

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值