yaoming168 Vim配置

阅读更多

"=========================================================================

"                       第一部分

"=========================================================================
   "配置颜色
colorscheme murphy
"  colorscheme 256-jungle

   " 设置显示字体
    if has("win32")
        set guifont=Courier_New:h11:cANSI
        "set guifont=YaHei\ Mono:h11
        "set guifontwide=Microsoft\ Yahei\ Monotype:h11
        "set guifont=YaHei\ Consolas\ Hybrid:h12
    endif
    " 不要使用vi的键盘模式,而是vim自己的
    set nocompatible
    
    " 加载配置。
    behave mswin
    
    "设置快速编辑.vimrc文件 ,e 编辑.vimrc
    map e :call SwitchToBuf("~/_vimrc")
    
    "保存.vimrc文件后会自动调用新的.vimrc
    autocmd! bufwritepost .vimrc source ~/_vimrc

 
    " 设定解码
    if has("multi_byte")
        " When 'fileencodings' starts with 'ucs-bom', don't do this manually
        "set bomb
        set fileencodings=ucs-bom,utf-8,chinese,taiwan,japan,korea,latin1
        " CJK environment detection and corresponding setting
        if v:lang =~ "^zh_CN"
            " Simplified Chinese, on Unix euc-cn, on MS-Windows cp936
            set encoding=utf-8
            set termencoding=utf-8
            if &fileencoding == ''
                set fileencoding=utf-8
            endif
        elseif v:lang =~ "^zh_TW"
            " Traditional Chinese, on Unix euc-tw, on MS-Windows cp950
            set encoding=euc-tw
            set termencoding=euc-tw
            if &fileencoding == ''
                set fileencoding=euc-tw
            endif
        elseif v:lang =~ "^ja_JP"
            " Japanese, on Unix euc-jp, on MS-Windows cp932
            set encoding=euc-jp
            set termencoding=euc-jp
            if &fileencoding == ''
                set fileencoding=euc-jp
            endif
        elseif v:lang =~ "^ko"
            " Korean on Unix euc-kr, on MS-Windows cp949
            set encoding=euc-kr
            set termencoding=euc-kr
            if &fileencoding == ''
                set fileencoding=ecu-kr
            endif
        endif
        " Detect UTF-8 locale, and override CJK setting if needed
        if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
            set encoding=utf-8
        endif
    else
        echoerr 'Sorry, this version of (g)Vim was not compiled with "multi_byte"'
    endif
    
    
    " browsedir设置
    set browsedir=buffer
    
    " 自动格式化设置
    filetype indent on
    set autoindent
    set smartindent
    
    " 设置备份及备份目录。
    set backspace=indent,eol,start
    set backupdir=D:\vim_back_files
    set autochdir
    
    " history文件中需要记录的行数,恢复必须用到。
    set history=1024
    
   " 解决菜单乱码,先指定语言。
set langmenu=zh_CN.UTF-8
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
language message zh_CN.UTF-8
set fileencodings=utf-8,GB2312,cp936,gb18030,big5,euc-jp,euc-kr,latin1

" 配置多语言环境
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
    
    
    " 在处理未保存或只读文件的时候,弹出确认
    set confirm
    
    " 共享外部剪贴板
    set clipboard+=unnamed
   
    " 选中状态下 Ctrl+c 复制
vmap "+y
    
    " 显示未完成命令
    set showcmd
    " 侦测文件类型
    filetype on
    
    " 载入文件类型插件
    filetype plugin on
    
    " 为特定文件类型载入相关缩进文件
    filetype indent on
    
    " 保存全局变量
    set viminfo+=!
    
    " 带有如下符号的单词不要被换行分割
    set iskeyword+=_,$,@,%,#,-
    
    " 语法高亮
    syntax on
    
    " 设置不兼容模式
    set nocp
   
      
    " 设置鼠标支持
    set mouse=a
    
    " 不要生成swap文件
    setlocal noswapfile
    
    " 当buffer被丢弃时隐藏
    set bufhidden=hide
    
    " 保存窗口大小
    set sessionoptions+=resize
    
    " C++头文件识别
    au BufEnter /usr/include/c++/* setf cpp
    au BufEnter /usr/include/g++-3/* setf cpp
    
    " GNU标准
    au BufEnter /usr/* call GnuIndent()
    
    " 显示行号
    set number
    
    " tab宽度
    set tabstop=4
    set cindent shiftwidth=4
    set autoindent shiftwidth=4
    
    " C/C++注释
    set comments=://
    
    " 修正自动C式样注释功能 <2005/07/16>
    set comments=s1:/*,mb:*,ex0:/
    
    " 增强检索功能
    set tags=./tags,./../tags,./**/tags
    
    " 保存文件格式
    set fileformats=unix,dos
    
    " 文件被其他程序修改时自动载入
    set autoread
    
    " 高亮字符,让其不受100列限制
    :highlight OverLength ctermbg=red ctermfg=white guibg=red guifg=white
    :match OverLength '\%101v.*'
    
    " 状态行颜色
    " highlight StatusLine guifg=SlateBlue guibg=Yellow
    highlight StatusLine guifg=SlateBlue guibg=White
    highlight StatusLineNC guifg=Gray guibg=White
    
    " 我的状态行显示的内容(包括文件类型和解码)
    set statusline=[%n]%<%f%y%h%m%r%=[%b\ 0x%B]\ %l\ of\ %L,%c%V\ Page\ %N\ %P
    
    " 设置命令行高度为2行
    set cmdheight=1
""=========================自动补全功能设置=================   
    " 命令行补全
    set wildmenu
    " 自动补全括号,包括大括号
    :inoremap ( ()i
    :inoremap ) =ClosePair(')')
    :inoremap { {}i
    :inoremap } =ClosePair('}')
    :inoremap [ []i
    :inoremap ] =ClosePair(']')
    ":inoremap < <>i
    ":inoremap > =ClosePair('>')
   
    " 自动补全引号
:inoremap " ""i
:inoremap ' ''i

function ClosePair(char)
if getline('.')[col('.') - 1] == a:char
return "\"
else
return a:char
endif
endf
    
    
  ""=========================自动补全功能设置完毕=================      
    " 打开文件时,总是跳到退出之前的光标处
    autocmd BufReadPost *
    \ if line("'\"") > 0 && line("'\"") <= line("$") |
    \   exe "normal! g`\"" |
    \ endif
    
    " 用浅色高亮当前行
    if has("gui_running")
        autocmd InsertLeave * se nocul
        autocmd InsertEnter * se cul
    endif
    
    filetype plugin on      "允许使用ftplugin目录下的文件类型特定脚本
    filetype indent on      "允许使用indent目录下的文件类型缩进
    

   
"==========================代码折叠========================
    
    " 设置以缩进的方式自动折叠和设置快捷方式
    set foldmethod=indent
    
    map zO " 打开折叠
    map zc " 关闭折叠
    map zR    " 打开所有折叠
    map zM    " 关闭所有折叠
    
set foldenable              " 开始折叠
set foldmethod=syntax       " 设置语法折叠
    
    " 用空格键来开关折叠
    set foldenable
    set foldmethod=manual
    nnoremap @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')
    
    
    " 保存代码文件前自动修改最后修改时间
    au BufWritePre *.sh           call TimeStamp('#')
    au BufWritePre .vimrc,*.vim   call TimeStamp('"')
    au BufWritePre *.c,*.h        call TimeStamp('//')
    au BufWritePre *.cpp,*.hpp    call TimeStamp('//')
    au BufWritePre *.cxx,*.hxx    call TimeStamp('//')
    au BufWritePre *.java         call TimeStamp('//')
    au BufWritePre *.rb           call TimeStamp('#')
    au BufWritePre *.py           call TimeStamp('#')
    au BufWritePre Makefile       call TimeStamp('#')
    au BufWritePre *.php
        \call TimeStamp('')
    au BufWritePre *.html,*htm
        \call TimeStamp('')
    
    " 更改Leader为","
    let g:C_MapLeader = ','
    
    " 不要闪烁
    set novisualbell
    
    " 能够漂亮地显示.NFO文件
    set encoding=utf-8
    function! SetFileEncodings(encodings)
        let b:myfileencodingsbak=&fileencodings
        let &fileencodings=a:encodings
    endfunction
    function! RestoreFileEncodings()
        let &fileencodings=b:myfileencodingsbak
        unlet b:myfileencodingsbak
    endfunction
    
    au BufReadPre *.nfo call SetFileEncodings('cp437')|set ambiwidth=single
    au BufReadPost *.nfo call RestoreFileEncodings()
   
  
    " 隐藏掉菜单和工具条。
    set guioptions-=m
    set guioptions-=T
    map :if &guioptions =~# 'T'
            \set guioptions-=T
            \set guioptions-=m
        \else
            \set guioptions+=T
            \set guioptions+=m
        \endif
    
    " 标签页设置
    if has("gui_running")
        set showtabline=2
        map! tn tabnew
        nmap :tabclose
    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()}
    
    " 使回格键(backspace)正常处理indent, eol, start等
    set backspace=eol,start,indent
    
    " 允许backspace和光标键跨越行边界
    " set whichwrap+=<,>,h,l
    
    " 可以在buffer的任何地方使用鼠标(类似office中在工作区双击鼠标定位)
    set mouse=a
    set selection=exclusive
    set selectmode=mouse,key
    
    " 启动的时候不显示那个援助索马里儿童的提示
    set shortmess=atI
    
    " 通过使用: commands命令,告诉我们文件的哪一行被改变过
    set report=0
    
    " 不让vim发出讨厌的滴滴声
    set noerrorbells
    
    " 在被分割的窗口间显示空白,便于阅读
    set fillchars=vert:\ ,stl:\ ,stlnc:\

    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    "                              搜索和匹配                                     
    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
   " 高亮显示匹配的括号
    set showmatch
    
    " 匹配括号高亮的时间(单位是十分之一秒)
    set matchtime=3
    
    " 在搜索的时候忽略大小写
    set ignorecase
    
    " 不要高亮被搜索的句子(phrases)
    " set nohlsearch
    
    " 在搜索时,输入的词句的逐字符高亮(类似firefox的搜索)
    set incsearch
    
    " 输入:set list命令是应该显示些啥?
    set listchars=tab:\|\ ,trail:.,extends:>,precedes:<,eol:$
    " Tab补全时忽略这些忽略这些
    set wildignore=*.o,*.obj,*.bak,*.exe
    " 光标移动到buffer的顶部和底部时保持3行距离
    set scrolloff=3
    
    "搜索出之后高亮关键词
    set hlsearch

    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    "                              CTags的设定                                    
    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

    
    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    "                        脚本内部用到的自定义函数                             
    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

    
    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"               python配置
    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

    
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

    
    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""



"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

                "第一部分完
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""





""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

                   "第二部分
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""


""=================================Vim的格式化代码功能======================


"设置制表符宽度,默认为
set tabstop=6
set cindent shiftwidth=6
set autoindent shiftwidth=6


你可能感兴趣的:(vim)