分类:
2011-09-24 17:07:04
原文地址:很酷的vim配置文件 作者:jieoulinux
| """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
| " |
| " Leeiio的 Vim 配置文件 |
| " |
| " Author: Leeiio |
| " Website: |
| " Since: 2010-02-22 |
| " Last Modified: 2010-02-22 14:36:01 leeiio |
| " |
| """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" |
| "source $VIMRUNTIME/vimrc_example.vim |
| if v:version < 700 |
| echoerr 'This _vimrc requires Vim 7 or later.' |
| quit |
| endif |
| " 获取当前目录 |
| func! GetPWD() |
| return substitute(getcwd(), "", "", "g") |
| endf |
| " 跳过页头注释,到首行实际代码 |
| func! GotoFirstEffectiveLine() |
| let l:c = 0 |
| while l:c |
| \ getline(l:c) =~ '^\s*$' |
| \ || synIDattr(synID(l:c, 1, 0), "name") =~ ".*Comment.*" |
| \ || synIDattr(synID(l:c, 1, 0), "name") =~ ".*PreProc$" |
| \ ) |
| let l:c = l:c+1 |
| endwhile |
| exe "normal ".l:c."Gz\ |
| endf |
| " 返回当前时期 |
| func! GetDateStamp() |
| return strftime('%Y-%m-%d') |
| endfunction |
| " 全选 |
| func! SelectAll() |
| let s:current = line('.') |
| exe "norm gg" . (&slm == "" ? "VG" : "gH\ |
| endfunc |
| " ===================== |
| " 环境配置 |
| " ===================== |
| " 中文帮助 |
| set helplang=cn |
| " 保留历史记录 |
| set history=500 |
| " 行控制 |
| set linebreak " 英文单词在换行时不被截断 |
| set nocompatible " 设置不兼容VI |
| set textwidth=80 " 设置每行80个字符自动换行,加上换行符 |
| set wrap " 设置自动折行 |
| " 标签页 |
| set tabpagemax=15 " 最多15个标签 |
| set showtabline=2 " 总是显示标签栏 |
| " 关闭遇到错误时的声音提示 |
| set noerrorbells |
| set novisualbell |
| set t_vb= " close visual bell |
| " 行号和标尺 |
| set ruler " 显示标尺 |
| set number " 行号 |
| set rulerformat=%15(%c%V\ %p%%%) |
| " 命令行于状态行 |
| set cmdheight=1 " 设置命令行的高度 |
| set laststatus=2 " 始终显示状态行 |
| set stl=\ [File]\ %F%m%r%h%y[%{&fileformat},%{&fileencoding}]\ %w\ \ [PWD]\ %r%{GetPWD()}%h\ %=\ [Line]%l/%L\ %=\[%P] "设置状态栏的信息 |
| " 搜索 |
| set hlsearch " 高亮显示搜索的内容 |
| set noincsearch " 关闭显示查找匹配过程 |
| "set magic " Set magic on, for regular expressions |
| "set showmatch " Show matching bracets when text indicator is over them |
| "set mat=2 " How many tenths of a second to blink |
| " 制表符(设置所有的tab和缩进为4个空格) |
| set tabstop=4 |
| set shiftwidth=4 |
| set softtabstop=4 |
| set expandtab " 使用空格来替换tab |
| set smarttab |
| " 状态栏显示目前所执行的指令 |
| set showcmd |
| " 缩进 |
| set autoindent " 设置自动缩进 |
| set smartindent " 设置智能缩进 |
| " 自动重新读入 |
| set autoread " 当文件在外部被修改,自动更新该文件 |
| " 设定在任何模式下鼠标都可用 |
| set mouse=a |
| " 插入模式下使用 |
| set backspace=indent,eol,start |
| " 备份和缓存 |
| set nobackup |
| set nowb |
| "set noswapfile |
| " 自动完成 |
| set complete=.,w,b,k,t,i |
| set completeopt=longest,menu " 只在下拉菜单中显示匹配项目,并且会自动插入所有匹配项目的相同文本 |
| " 代码折叠 |
| set foldmethod=marker |
| " 显示tab和空格 |
| set list |
| " 设置tab和空格样式 |
| set listchars=tab:\|\ ,nbsp:%,trail:- |
| " 设定行首tab为灰色 |
| highlight LeaderTab guifg=#666666 |
| " 匹配行首tab |
| match LeaderTab /\t/ |
| " ===================== |
| " 多语言环境 |
| " 默认为 UTF-8 编码 |
| " ===================== |
| if has("multi_byte") |
| set encoding=utf-8 |
| " English messages only |
| "language messages zh_CN.utf-8 |
| if has('win32') |
| language english |
| let &termencoding=&encoding " 处理consle输出乱码 |
| endif |
| set fencs=utf-8,gbk,chinese,latin1 |
| set formatoptions+=mM |
| set nobomb " 不使用 Unicode 签名 |
| if v:lang =~? '^\(zh\)\|\(ja\)\|\(ko\)' |
| set ambiwidth=double |
| endif |
| else |
| echoerr "Sorry, this version of (g)vim was not compiled with +multi_byte" |
| endif |
| " ===================== |
| " AutoCmd 自动运行 |
| " ===================== |
| if has("autocmd") |
| filetype plugin indent on " 打开文件类型检测 |
| augroup vimrcEx " 记住上次文件位置 |
| au! |
| autocmd FileType text setlocal textwidth=80 |
| autocmd BufReadPost * |
| \ if line("'\"") > 0 && line("'\"") <= line("$") | |
| \ exe "normal g`\"" | |
| \ endif |
| augroup END |
| " 括号自动补全 |
| function! AutoClose() |
| :inoremap ( () |
| :inoremap " "" |
| :inoremap ' '' |
| :inoremap { {} |
| :inoremap [ [] |
| :inoremap ) |
| :inoremap } |
| :inoremap ] |
| endf |
| function! ClosePair(char) |
| if getline('.')[col('.') - 1] == a:char |
| return "\ |
| else |
| return a:char |
| endif |
| endf |
| "auto close for PHP and Javascript script |
| au FileType css,html,php,c,python,javascript exe AutoClose() |
| " Auto Check Syntax |
| au BufWritePost,FileWritePost *.js,*.php call CheckSyntax(1) |
| " JavaScript 语法高亮 |
| au FileType html,javascript let g:javascript_enable_domhtmlcss = 1 |
| au BufRead,BufNewFile *.js setf jquery |
| " 给各语言文件添加 Dict |
| if has('win32') |
| au FileType php setlocal dict+=$VIM/vimfiles/dict/php_funclist.dict |
| au FileType css setlocal dict+=$VIM/vimfiles/dict/css.dict |
| au FileType javascript setlocal dict+=$VIM/vimfiles/dict/javascript.dict |
| else |
| au FileType php setlocal dict+=~/.vim/dict/php_funclist.dict |
| au FileType css setlocal dict+=~/.vim/dict/css.dict |
| au FileType javascript setlocal dict+=~/.vim/dict/javascript.dict |
| endif |
| " 自动最大化窗口 |
| if has('gui_running') |
| if has("win32") |
| au GUIEnter * simalt ~x |
| "elseif has("unix") |
| "au GUIEnter * winpos 0 0 |
| "set lines=999 columns=999 |
| endif |
| endif |
| " 格式化 JavaScript 文件 |
| au FileType javascript map |
| au FileType javascript set omnifunc=javascriptcomplete#CompleteJS |
| " 增加 ActionScript 语法支持 |
| au BufNewFile,BufRead,BufEnter,WinEnter,FileType *.as setf actionscript |
| " CSS3 语法支持 |
| au BufRead,BufNewFile *.css set ft=css syntax=css3 |
| " 增加 Objective-C 语法支持 |
| au BufNewFile,BufRead,BufEnter,WinEnter,FileType *.m,*.h setf objc |
| " 将指定文件的换行符转换成 UNIX 格式 |
| au FileType php,javascript,html,css,python,vim,vimwiki set ff=unix |
| endif |
| " 自动载入VIM配置文件 |
| autocmd! bufwritepost vimrc source $MYVIMRC |
| " 关闭VIM的时候保存会话,按F122读取会话 |
| set sessionoptions=buffers,sesdir,help,tabpages,winsize |
| au VimLeave * mks! ~/Session.vim |
| nmap |
| " ===================== |
| " 图形界面 |
| " ===================== |
| if has('gui_running') |
| "set guioptions=mcr " 只显示菜单 |
| "set guioptions= " 隐藏全部的gui选项 |
| "set guioptions+=r " 显示gui右边滚动条 |
| "Toggle Menu and Toolbar 使用F2隐藏/显示菜单 |
| set guioptions-=m |
| set guioptions-=T |
| map |
| \set guioptions-=T |
| \set guioptions-=m |
| \else |
| \set guioptions+=T |
| \set guioptions+=m |
| \endif |
| if has('gui_macvim') |
| set guioptions+=e |
| endif |
| set cursorline " 高亮光标所在的行 |
| "hi cursorline guibg=#222222 |
| "hi CursorColumn guibg=#333333 |
| if has("win32") |
| " Windows 兼容配置 |
| source $VIMRUNTIME/mswin.vim |
| " F11 最大化 |
| map |
| " 字体配置 |
| "exec 'set guifont='.iconv('Courier_New', &enc, 'gbk').':h10:cANSI' |
| "exec 'set guifontwide='.iconv('微软雅黑', &enc, 'gbk').':h10' |
| set guifont=YaHei_Consolas_Hybrid:h12:cANSI |
| set guifontwide=YaHei_Consolas_Hybrid:h12 |
| endif |
| if has("unix") && !has('gui_macvim') |
| set guifont=Courier\ 10\ Pitch\ 11 |
| endif |
| if has("mac") || has("gui_macvim") |
| if has("gui_macvim") |
| " MacVim 下的字体配置 |
| "set guifont=Courier_New:h14 |
| "set guifontwide=YouYuan:h14 |
| set guifont=YaHei_Consolas_Hybrid:h13 |
| set guifontwide=YaHei_Consolas_Hybrid:h12 |
| set transparency=2 |
| set lines=200 columns=120 |
| " 使用 MacVim 原生的全屏幕功能 |
| let s:lines=&lines |
| let s:columns=&columns |
| func! FullScreenEnter() |
| set lines=999 columns=999 |
| set fu |
| endf |
| func! FullScreenLeave() |
| let &lines=s:lines |
| let &columns=s:columns |
| set nofu |
| endf |
| func! FullScreenToggle() |
| if &fullscreen |
| call FullScreenLeave() |
| else |
| call FullScreenEnter() |
| endif |
| endf |
| endif |
| endif |
| endif |
| "去除当前所编辑文件的路径信息,只保留文件名 |
| set guitablabel=%{ShortTabLabel()} |
| function ShortTabLabel() |
| let bufnrlist = tabpagebuflist(v:lnum) |
| let label = bufname(bufnrlist[tabpagewinnr(v:lnum) -1]) |
| let filename = fnamemodify(label, ':t') |
| return filename |
| endfunction |
| " ===================== |
| " 快捷键 |
| " ===================== |
| "设置','为leader快捷键 |
| let mapleader = "," |
| let g:mapleader = "," |
| "设置快速保存和退出 |
| "快速保存为,s |
| "快速退出(保存)为,w |
| "快速退出(不保存)为,q |
| nmap |
| nmap |
| nmap |
| nmap |
| nmap |
| nmap |
| nmap |
| nmap |
| " 插件快捷键 |
| nmap |
| nmap |
| nmap |
| " 插入模式按 F4 插入当前时间 |
| imap |
| " 新建 XHTML 、PHP、Javascript 文件的快捷键 |
| nmap |
| nmap |
| nmap |
| nmap |
| " 直接查看第一行生效的代码 |
| nmap |
| " 按下 Q 不进入 Ex 模式,而是退出 |
| nmap Q :x |
| " 打开日历快捷键 |
| map ca :Calendar |
| "关闭自动检测编码用F6控制(fencview.vim) |
| let g:fencview_autodetect=0 |
| map |
| " 快速修改 vimrc 文件 |
| if has("win32") |
| map |
| map |
| else |
| map |
| map |
| endif |
| " ===================== |
| " 插件配置 |
| " ===================== |
| " Javascript in CheckSyntax |
| if has('win32') |
| let g:checksyntax_cmd_javascript = 'jsl -conf '.shellescape($VIM . '\vimfiles\plugin\jsl.conf') |
| else |
| let g:checksyntax_cmd_javascript = 'jsl -conf ~/.vim/plugin/jsl.conf' |
| endif |
| let g:checksyntax_cmd_javascript .= ' -nofilelisting -nocontext -nosummary -nologo -process' |
| " Under the Mac(MacVim) |
| if has("gui_macvim") |
| " Mac 下,按 \ff 切换全屏 |
| map |
| " I like TCSH :^) |
| set shell=/bin/tcsh |
| " Set input method off |
| "set imdisable |
| " Set QuickTemplatePath |
| let g:QuickTemplatePath = $HOME.'/.vim/templates/' |
| " 如果为空文件,则自动设置当前目录为桌面 |
| lcd ~/Desktop/ |
| endif |
| " 日历插件 |
| if has("win32") |
| let calendar_diary = "D:\\Program Files\\Vim\\vimfiles\\calendar" |
| autocmd BufNewFile *.cal read $VIM\vimfiles\template\calendar_morning_diary.tpl | normal ggdd "日历套用模版 |
| endif |
| if has("gui_macvim") |
| let calendar_diary = $HOME."/.vim/calendar" |
| autocmd BufNewFile *.cal read $HOME/.vim/templates/calendar_morning_diary.tpl | normal ggdd "日历套用模版 |
| endif |
| " VimWiki 配置 |
| if !exists("g:vimwiki_list") |
| let g:vimwiki_list = [ |
| \{"path": "~/Dropbox/VimWiki/wikiIndex", "path_html": "~/Dropbox/VimWiki/wikiHtml", |
| \ "html_footer": "~/Dropbox/VimWiki/wikiTemplate/footer.tpl", "html_header": "~/Dropbox/VimWiki/wikiTemplate/header.tpl", |
| \ "auto_export": 1}] |
| let g:vimwiki_auto_checkbox = 0 |
| if has('win32') |
| " 注意! |
| " 1、如果在 Windows 下,盘符必须大写 |
| " 2、路径末尾最好加上目录分隔符 |
| let s:vimwiki_root = "F:/My Dropbox/VimWiki" |
| let g:vimwiki_list = [ |
| \{"path": s:vimwiki_root."/wikiIndex/", |
| \ "html_footer": s:vimwiki_root."/wikiTemplate/footer.tpl", |
| \ "html_header": s:vimwiki_root."/wikiTemplate/header.tpl", |
| \ "path_html": s:vimwiki_root."/wikiHtml/", "auto_export": 1}] |
| let g:vimwiki_w32_dir_enc = 'cp936' |
| endif |
| au FileType vimwiki set ff=unix fenc=utf8 noswapfile nobackup |
| "au FileType vimwiki imap |
| nmap |
| endif |
| " on Windows, default charset is gbk |
| if has("win32") |
| let g:fontsize#encoding = "cp936" |
| endif |
| " ===================== |
| " 主题配色 |
| " ===================== |
| if has('syntax') |
| " 默认编辑器配色 |
| au BufNewFile,BufRead,BufEnter,WinEnter * colo molokai |
| " 各不同类型的文件配色不同 |
| au BufNewFile,BufRead,BufEnter,WinEnter *.wiki colo moria |
| " 保证语法高亮 |
| syntax on |
| endif |
| " vim: set et sw=4 ts=4 sts=4 fdm=marker ft=vim ff=unix fenc=utf8: |
来自于: |