" An example for a vimrc file. " " Maintainer: a18ccms <a18ccms@gmail.com> " Last change: 2010 03 12 " " To use it, copy it to " for Unix and OS/2: ~/.vimrc " for Amiga: s:.vimrc " for MS-DOS and Win32: $VIM\_vimrc " for OpenVMS: sys$login:.vimrc " When started as "evim", evim.vim will already have done these settings. if v:progname =~? "evim" finish endif set history=50 " keep 50 lines of command line history set showcmd " display incomplete commands " For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries " let &guioptions = substitute(&guioptions, "t", "", "g") " Don't use Ex mode, use Q for formatting map Q gq " Convenient command to see the difference between the current buffer and the " file it was loaded from, thus the changes you made. command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis \ | wincmd p | diffthis \ | wincmd p | diffthis set guioptions-=T """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 一般设定 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 设定默认解码 set encoding=utf-8 set fileencodings=utf-8,chinese,latin-1 if has("win32") set fileencoding=chinese else set fileencoding=utf-8 endif language message zh_CN.utf-8 "解决菜单乱码 source $VIMRUNTIME/delmenu.vim source $VIMRUNTIME/menu.vim "set font "set guifont=Nsimsun "设置窗口大小 set lines=35 set columns=120 " 不要使用vi的键盘模式,而是vim自己的 "set nocompatible " 在处理未保存或只读文件的时候,弹出确认 set confirm " 与windows共享剪贴板 set clipboard+=unnamed " 侦测文件类型 filetype on " 载入文件类型插件 filetype plugin on " 为特定文件类型载入相关缩进文件 filetype indent on " 带有如下符号的单词不要被换行分割 set iskeyword+=_,$,@,%,#,- " 语法高亮 syntax on " 高亮字符,让其不受100列限制 :highlight OverLength ctermbg=red ctermfg=white guibg=red guifg=white :match OverLength '\%101v.*' " 状态行颜色 highlight StatusLine guifg=SlateBlue guibg=Yellow highlight StatusLineNC guifg=Gray guibg=White """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 文件设置 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 不要备份文件(根据自己需要取舍) set nobackup " 不要生成swap文件,当buffer被丢弃的时候隐藏它 setlocal noswapfile set bufhidden=hide " 字符间插入的像素行数目 set linespace=0 " 增强模式中的命令行自动完成操作 set wildmenu " 在状态行上显示光标所在位置的行号和列号 set ruler set rulerformat=%20(%2*%<%f%=\ %m%r\ %3l\ %c\ %p%%%) " 命令行(在状态行下)的高度,默认为1,这里是2 set cmdheight=2 " 使回格键(backspace)正常处理indent, eol, start等 set backspace=2 " 允许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=5 " 在搜索的时候忽略大小写 set ignorecase " 高亮被搜索的句子(phrases) set hlsearch " 在搜索时,输入的词句的逐字符高亮(类似firefox的搜索) set incsearch " 输入:set list命令是应该显示些啥? set listchars=tab:\|\ ,trail:.,extends:>,precedes:<,eol:$ " 光标移动到buffer的顶部和底部时保持3行距离 set scrolloff=3 " 不要闪烁 set novisualbell " 我的状态行显示的内容(包括文件类型和解码) set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")} " 总是显示状态行 set laststatus=2 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 文本格式和排版 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 自动格式化 set formatoptions=tcrqn " 继承前一行的缩进方式,特别适用于多行注释 set autoindent " 为C程序提供自动缩进 set smartindent " 使用C样式的缩进 set cindent " 制表符为4 set tabstop=4 " 统一缩进为4 set softtabstop=4 set shiftwidth=4 " 不要用空格代替制表符 set noexpandtab " 不要换行 set nowrap " 在行和段开始处使用制表符 set smarttab """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Autocommands """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 只在下列文件类型被侦测到的时候显示行号,普通文本文件不显示 if has("autocmd") autocmd FileType xml,html,c,cs,java,perl,shell,bash,cpp,python,vim,php,ruby set number autocmd FileType xml,html vmap <C-o> <ESC>'<i<!--<ESC>o<ESC>'>o--> autocmd FileType java,c,cpp,cs vmap <C-o> <ESC>'<o autocmd FileType html,text,php,vim,c,java,xml,bash,shell,perl,python setlocal textwidth=100 autocmd Filetype html,xml,xsl source $VIMRUNTIME/plugin/closetag.vim autocmd BufReadPost * \ if line("'\"") > 0 && line("'\"") <= line("$") | \ exe "normal g`\"" | \ endif endif " has("autocmd") "设置Java代码的自动补全 au FileType java setlocal omnifunc=javacomplete#Complete let mapleader = "." "绑定自动补全的快捷键<C-X><C-O>到<leader>; imap <leader>; <C-X><C-O> "设定开关Taglist插件的快捷键为F4,可以在VIM的左侧栏列出函数列表等 map <F4> :Tlist<CR> "设置程序的编译运行和调试的快捷键F5,F6,Ctrl-F5 map <F5> :call CompileRun()<CR> map <C-F5> :call Debug()<CR> map <F6> :call Run()<CR> "设置代码格式化快捷键F3 map <F3> :call FormartSrc()<CR> "设置tab操作的快捷键,绑定:tabnew到<leader>t,绑定:tabn, :tabp到<leader>n, "<leader>p map <leader>t :tabnew<CR> map <leader>n :tabn<CR> map <leader>p :tabp<CR> "用cscope支持 "set csprg=d:\bin\cscope "使用<leader>e打开当前文件同目录中的文件 if has("unix") map ,e :e <C-R>=expand("%:p:h") . "/" <CR> else map ,e :e <C-R>=expand("%:p:h") . "\" <CR> endif "定义CompileRun函数,用来调用进行编译和运行 func CompileRun() exec "w" "C程序 if &filetype == 'c' exec "!del %<.exe" exec "!gcc % -o %<.exe" exec "!%<.exe" elseif &filetype == 'cpp' exec "!del %<.exe" exec "!g++ % -o %<.exe" exec "!%<.exe" "Java程序 elseif &filetype == 'java' exec "!del %<.class" exec "!javac %" exec "!java %<" endif endfunc "结束定义CompileRun "定义Run函数,用来调用进行编译和运行 func Run() exec "w" "C程序 if &filetype == 'c' exec "!%<.exe" elseif &filetype == 'cpp' exec "!%<.exe" "Java程序 elseif &filetype == 'java' exec "!java %<" endif endfunc "结束定义Run "定义Debug函数,用来调试程序 func Debug() exec "w" "C程序 if &filetype == 'c' exec "!del %<.exe" exec "!gcc % -g -o %<.exe" exec "!gdb %<.exe" elseif &filetype == 'cpp' exec "!del %<.exe" exec "!g++ % -g -o %<.exe" exec "!gdb %<.exe" "Java程序 exec "!del %<.class" elseif &filetype == 'java' exec "!javac %" exec "!jdb %<" endif endfunc "结束定义Debug "定义FormartSrc() func FormartSrc() exec "w" "C程序,Perl程序,Python程序 if &filetype == 'c' exec "!astyle --style=gnu --suffix=none %" exec "e! %" elseif &filetype == 'cpp' exec "!astyle --style=gnu --suffix=none %" exec "e! %" elseif &filetype == 'perl' exec "!astyle --style=gnu --suffix=none %" exec "e! %" elseif &filetype == 'py' exec "!astyle --style=gnu --suffix=none %" exec "e! %" "Java程序 elseif &filetype == 'java' exec "!astyle --style=java --suffix=none %" exec "e! %" elseif &filetype == 'jsp' exec "!astyle --style=gnu --suffix=none %" exec "e! %" elseif &filetype == 'xml' exec "!astyle --style=gnu --suffix=none %" exec "e! %" elseif &filetype == 'html' exec "!astyle --style=gnu --suffix=none %" exec "e! %" elseif &filetype == 'htm' exec "!astyle --style=gnu --suffix=none %" exec "e! %" endif endfunc "结束定义FormartSrc " 能够漂亮地显示.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() " 高亮显示普通txt文件(需要txt.vim脚本) au BufRead,BufNewFile * setfiletype txt " 用空格键来开关折叠 set foldenable set foldmethod=manual nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR> colo darkblue