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> "}}}
我的gVim配置备份
猜你喜欢
转载自anduo.iteye.com/blog/1867212
今日推荐
周排行