我的gVim配置备份

if(has("win32") || has("win95") || has("win64") || has("win16")) "判定当前操作系统类型
    let g:iswindows=1
else
    let g:iswindows=0
endif
"设置不兼容VI模式,在增强模式下运行
set nocompatible
syntax on"打开高亮
if has("autocmd")
    filetype plugin indent on "根据文件进行缩进
    augroup vimrcEx
        au! 
        autocmd FileType text setlocal textwidth=78
        autocmd BufReadPost *
                    \    if line("'\"") > 1 && line("'\"") <= line("$") |
                    \ exe "normal! g`\"" |
                    \ endif
    augroup END
else
    "智能缩进,相应 的有cindent,官方说autoindent可以支持各种文件的缩进,
    "但是效果会比只支持C/C++的cindent效果会差一点,但笔者并没有看出来
    set autoindent " always set autoindenting on 
endif " has("autocmd")
set nowrap "不自动换行
set hlsearch "高亮显示结果
set incsearch "在输入要搜索的文字时,vim会实时匹配
set backspace=indent,eol,start whichwrap+=<,>,[,] "允许退格键的使用
if(g:iswindows==1) "允许鼠标的使用
    "防止linux终端下无法拷贝
    if has('mouse')
        set mouse=a
    endif
    au GUIEnter * simalt ~x 
endif
"字体的设置
set guifont=Courier_New:h14:cDEFAULT "记住空格用下划线代替哦
"set gfw=幼圆:h10:cGB2312

" 显示状态栏(默认值为 1,无法显示状态栏)
set laststatus=2
" Format the statusline
" 我的状态行显示的内容(包括文件类型和解码)
set statusline=[%n]%<%f%y%h%m%r%=[%b\ 0x%B]\ %l\ of\ %L,%c%V\ Page\ %N\ %P
function! CurDir()
    let curdir = substitute(getcwd(), '/Users/amir/', "~/", "g")
    return curdir
endfunction
" 用浅色高亮当前行
if has("gui_running")
    autocmd InsertLeave * se nocul
    autocmd InsertEnter * se cul
endif

" 标签页设置
if has("gui_running")
    set showtabline=2
    map! tn tabnew
    nmap <C-c> :tabclose<CR>
endif
 
" 标签页只显示文件名
function ShortTabLabel ()
    let bufnrlist = tabpagebuflist (v:lnum)
    let label = bufname (bufnrlist[tabpagewinnr (v:lnum) -1])
    let filename = fnamemodify (label, ':t')
    return filename
endfunction
 
set guitablabel=%{ShortTabLabel()}


"模仿快捷键,如:ctrt+A 全选、Ctrl+C复制、 Ctrl+V 粘贴等
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
"定义 “mapleader”变量,系统默认的是反斜杠,它位置太偏不容易按到
let mapleader = ","
let g:mapleader = ","
 
"gvim 内部编码
set encoding=utf-8
"当前编辑的文件编码
set fileencoding=utf-8
"gvim打开支持编码的文件
set fileencodings=ucs-bom,utf-8,gbk,cp936,gb2312,big5,euc-jp,euc-jp,euc-kr,latin1
 
"解决consle输出乱码
language messages zh_CN.UTF-8
"解决菜单乱码
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
 
"设置终端编码为gvim内部编码encoding
let &termencoding=&encoding
" 防止特殊符号无法正常显示
set ambiwidth=double
"缩进尺寸为4个空格
set sw=4
"tab 宽度为4个字符
set ts=4
"编辑时将所有tab替换为空格
set et
"按一次backspace就删除4个空格了
set smarttab
"不生成备份文件,如~index.html
set nobackup
"开启行号标记
set number
"配色方案为desert
colo darkblack
"关才上侧工具栏
set guioptions-=T
"关才右侧滚动条
"set guioptions-=r
"开启自动缩进
set autoindent
"显示匹配括号
set showmatch


"代码自动补全  (按快捷键Ctrl+X+O)
autocmd FileType python set omnifunc=pythoncomplete#Complete
autocmd FileType javascrīpt set omnifunc=javascrīptcomplete#CompleteJS
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
autocmd FileType php set omnifunc=phpcomplete#CompletePHP
autocmd FileType c set omnifunc=ccomplete#Complete
"无需closetag插件,一行代码完成html/xml的闭合tag自动补全
autocmd BufNewFile,BufRead *.html,*.htm,*.xml inoremap </ </<c-x><c-o>
"转换文件保存的编码,只在UTF-8和CP936之间
map <leader>ut <esc>:set fenc=utf-8<cr>:w!<cr>
map <leader>zh <esc>:set fenc=cp936<cr>:w!<cr>


"--------------------------------------------------
"zencoding.vim
"默认快捷键为 <CTRL+Y>+,
" 按住CTRL 键同时按Y键,然后马上按,号
"--------------------------------------------------
let g:use_zen_complete_tag = 1
"设置默认的快捷键
let g:user_zen_leader_key = '<c-j>'

 
"实现括号和引号自动补全
inoremap ( ()<Esc>i
inoremap [ []<Esc>i
inoremap { {<CR>}<Esc>O
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


"代码折叠
"用空格键来开关折叠(说明西方“"”后面的内容为注释,不会被VIM所识别)
set foldenable
set foldmethod=indent
nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>
"代码折叠使用方式
set foldmethod=syntax " 用语法高亮来定义折叠
set foldmethod=indent " 更多的缩进表示更高级别的折叠(这个似乎效果好一些)

"--------------------------------------------------
"NERD_tree
"命令模式下输入:NERDTreeToggle便可打开或关闭NERDTreeToggle
"设置快捷键,默认是F10
map <F10> :NERDTreeToggle<cr>

"--------------------------------------------------
"nerdcommenter.vim
"在命令前加上数字可以同时注释多行
" <leader>ca 在可选的注释方式之间切换,比如C/C++ 的块注释/* */和行注释//。
" <leader>cc 注释当前行或者可视模式下被选中的文本。
" <Leader>c<space>或者<Leader>ci 切换被选中行的注释状态。
" <Leader>cA 或者<Leader>cI 添加注释符到行末或行首,并进入插入模式,光标移到注释符中。
" <Leader>cr 或cl 或cb 添加注释,注释符会向右,向左,居中对齐。
" <leader>cs 以”性感”的方式注释。
" <leader>c$ 注释到行尾。
" <leader>cu 取消注释。
" <leader>cm 添加块注释。
"--------------------------------------------------
"让注释符与语句之间留一个空格
let NERDSpaceDelims=1
"多行注释时样子更好看
let NERDCompactSexyComs=1
"--------------------------------------------------
"authorinfo.vim
"此插件需要nerdcommenter插件支持
"注:我修改了插件,让其版本号为第一次用authorinfo作注释的时间
let g:vimrc_author='Anduo'
let g:vimrc_email='[email protected]'
let g:vimrc_homepage='http://anduo.iteye.com'
"设置快捷键,默认是F4
map <F11> :AuthorInfoDetect<cr>

"检查当前文件代码语法(php){{{
function! CheckSyntax()
 if &filetype!="php"
  echohl WarningMsg | echo "Fail to check syntax! Please select the right file!" | echohl None
  return
 endif
 if &filetype=="php"
  " Check php syntax
  setlocal makeprg=\"php\"\ -l\ -n\ -d\ html_errors=off
  " Set shellpipe
  setlocal shellpipe=>
  " Use error format for parsing PHP error output
  setlocal errorformat=%m\ in\ %f\ on\ line\ %l
 endif
 execute "silent make %"
 set makeprg=make
 execute "normal :"
 execute "copen"
endfunction
map <F6> :call CheckSyntax()<CR>
"}}}

猜你喜欢

转载自anduo.iteye.com/blog/1867212