set nocompatible source $VIMRUNTIME/vimrc_example.vim source $VIMRUNTIME/mswin.vim behave mswin set diffexpr=MyDiff() 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 "========================================================================= " DesCRiption: 我的的vimrc文件,for Linux/Windows, GUI/Console " " Last Change: 2012年04月14日 15时13分 " " Name: ZhaoHuanLei " "========================================================================= set nocompatible " 关闭 vi 兼容模式 syntax on " 自动语法高亮 colorscheme molokai " 设定配色方案 set number " 显示行号 set cursorline " 突出显示当前行 filetype plugin indent on " 开启插件 set ruler " 打开状态栏标尺 set tabstop=4 " 设定 tab 长度为 4 set softtabstop=4 " 使得按退格键时可以一次删掉 4 个空格 set shiftwidth=4 " 设定 << 和 >> 命令移动时的宽度为 4 set autochdir " 自动切换当前目录为当前文件所在的目录 set ignorecase smartcase " 搜索时忽略大小写,但在有一个或以上大写字母时仍保持对大小写敏感 set nowrapscan " 禁止在搜索到文件两端时重新搜索 set incsearch " 输入搜索内容时就显示搜索结果 set hlsearch " 搜索时高亮显示被找到的文本 set noerrorbells " 关闭错误信息响铃 set novisualbell " 关闭使用可视响铃代替呼叫 set t_vb= " 置空错误铃声的终端代码 filetype plugin indent on " 开启插件 set guioptions-=T " 隐藏工具栏 " set guioptions-=m " 隐藏菜单栏 set history=400 " vim记住的历史操作的数量,默认的是20 set autoread " 当文件在外部被修改时,自动重新读取 vmap <C-c> "+y " 选中状态下 Ctrl+c 复制 " ---------- 判断系统: windows,or linux, mac ------------- function! MySys() if has("win16") || has("win32") || has("win64") || has("win95") return "windows" elseif has("unix") return "linux" endif endfunction " -------------------- 设定doc文档目录 -------------------- let helptags=$VIMFILES.'/doc' " ------------------ 设置字体 以及中文支持 ---------------- if has("win32") set guifont=DeJaVu_Sans_Mono:h10:cANSI set gfw=YouYuan:h10:cGB2312 endif " -------------------- 配置多语言环境 --------------------- if has("multi_byte") " UTF-8 编码 set encoding=utf-8 set termencoding=utf-8 set formatoptions+=mM set fencs=utf-8,gbk if v:lang =~? '^\(zh\)\|\(ja\)\|\(ko\)' set ambiwidth=double endif if has("win32") source $VIMRUNTIME/delmenu.vim source $VIMRUNTIME/menu.vim language messages zh_CN.utf-8 endif else echoerr "Sorry, this version of (g)vim was not compiled with +multi_byte" endif " ---------------------- jQuery 语法高亮 ---------------------- au BufRead,BufNewFile jquery.*.js set ft=javascript syntax=jquery " Tab操作快捷方式! " nnoremap <C-TAB> :tabnext<CR> " nnoremap <C-S-TAB> :tabprev<CR> " --------------------- 自动完成括号和引号 -------------------- inoremap ( ()<Esc>i inoremap [ []<Esc>ii autocmd Syntax css inoremap { {}<Esc>i "javascript中自动匹配 {} 并自动换行 autocmd Syntax javascript inoremap { {<CR>}<Esc>O "html中自动匹配 <> "autocmd Syntax html,vim inoremap < <lt>><Esc>i| inoremap > <c-r>=ClosePair('>')<CR> inoremap ) <c-r>=ClosePair(')')<CR> inoremap ] <c-r>=ClosePair(']')<CR> inoremap } <c-r>=CloseBracket()<CR> inoremap " <c-r>=QuoteDelim('"')<CR> inoremap ' <c-r>=QuoteDelim("'")<CR> function ClosePair(char) if getline('.')[col('.') - 1] == a:char return "\<Right>" else return a:char endif endf function CloseBracket() if match(getline(line('.') + 1), '\s*}') < 0 return "\<CR>}" else return "\<Esc>j0f}a" endif endf function QuoteDelim(char) let line = getline('.') let col = col('.') if line[col - 2] == "\\" "Inserting a quoted quotation mark into the string return a:char elseif line[col - 1] == a:char "Escaping out of the string return "\<Right>" else "Starting a string return a:char.a:char."\<Esc>i" endif endf " ------------------ syntax javascript.vim JS折叠 ----------------- " 打开javascript折叠 " 打开javascript对dom、html和css的支持 " 用空格键来开关折叠 let b:javascript_fold=1 let javascript_enable_domhtmlcss=1 nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR> " ----------------- MiniBufExplorer.vim 多标签切换 --------------- " <C-Tab> 向前循环切换到每个buffer上,并在但前窗口打开 " <C-S-Tab> 向后循环切换到每个buffer上,并在但前窗口打开 let g:miniBufExplMapWindowNavVim = 1 let g:miniBufExplMapWindowNavArrows = 1 let g:miniBufExplMapCTabSwitchBufs = 1 let g:miniBufExplModSelTarget = 1 " ------------ NERD_tree.vim 浏览系统中的文件和目录 -------------- " :ERDtree 打开NERD_tree :NERDtreeClose 关闭NERD_tree " o 打开关闭文件或者目录 t 在标签页中打开 " T 在后台标签页中打开 ! 执行此文件 " p 到上层目录 P 到根目录 " K 到第一个节点 J 到最后一个节点 " u 打开上层目录 m 显示文件系统菜单(添加、删除、移动操作) " r 递归刷新当前目录 R 递归刷新当前根目录 " F3 NERDTree 切换 map <F3> :NERDTreeToggle<CR> imap <F3> <ESC>:NERDTreeToggle<CR> " ------------- ZenCoding.vim 快速输入 Html及CSS 代码 ------------ " Ctrl + y + , 默认快捷键启动 " 设置为ctlr+j扩展 let g:user_zen_expandabbr_key = '<c-j>' " ------------------ authorinfo.vim 添加作者信息 ------------------ " 设置快捷键为<F4> nmap <F4> :AuthorInfoDetect<cr> let g:vimrc_author='ZhaoHuanLei' let g:vimrc_email='huanleiwork@gmail.com' let g:vimrc_homepage='http://www.cnblogs.com/huanlei/' " -------------- NERD_commenter.vim 注释代码用的 ---------------- " [count],cc 光标以下count行逐行添加注释(7,cc) " [count],cu 光标以下count行逐行取消注释(7,cu) " [count],cm 光标以下count行尝试添加块注释(7,cm) " cA 在行尾插入 /* */,并且进入插入模式。 这个命令方便写注释。 " 注:count参数可选,无则默认为选中行或当前行 " 可视(V)模式中选择一段代码,按下\cc加逐行注释,\cu取消注释,\cm添加块注释 let NERDSpaceDelims=1 " 让注释符与语句之间留一个空格 let NERDCompactSexyComs=1 " 多行注释时样子更好看 " ---------– checksyntax.vim JavaScript常见语法错误检查 ----------- " 默认快捷方式为 F5 " let g:checksyntax_auto = 0 " 不自动检查 " ---------– autocomplpop.vim 实现自动补全功能 ----------- "========================================================================= " plugin – vim "=========================================================================