手记

分享一下我的vim配置

    这是我长时间使用vim总结的一些配置,分享给有需要的人。可以支持编译一键编译并执行C、C++和Java(需要安装编译器并配置环境变量),具体的使用方法,在下面的配置文件中讲的很详细。另外,在Linux上默认使用的clang的编译器,这种编译器可以兼容gcc的大部分选项,并且编译速度更快,提示更加友好,您也可以根据自己的需要改成自己喜欢的编译器。

    我是在Windows7下测试的,所以Windows7系统直接可用。其中的插件与配置文件在 Linux 下同样适用。如果您是XP的用户,可能会出现Consolas字体找不到的情况,可以从Windows7系统拷贝,或者到去下载。对于其他系统(UNIX,MAC)的用户直接将下载到的文件解压,把插件目录和配置文件覆盖掉原来的文件即可。在Linux下,需要把插件目录重新命名为 .vim,配置文件重新命名为 .vimrc。建议您全新安装vim,仅仅拷贝配置文件和插件目录。

    使用vim已经有快4年的时间了,从最初的排斥到现在的爱不释手,这段心路历程非常奇特。vim是一个非常奇特、精致的编辑器,是一个可以最大限度发挥人的智慧的编辑器。通过使用恰当的插件,完全可以秒杀其他昂贵而又笨重的IDE。然而最重要的是,它是免费的。这种免费充满了理想主义色彩,更难能可贵的是它有非常实用,这或许就是理想与现实的结合吧。

    分享一下我使用vim的心得:对于一个初学者,不要过于深入的去钻研的vim配置,而最重要的就是要把vim用起来。所以,一开始,尽可以去网上找一些别人的配置文件为己所用,不要去深究这些配置具体的原理。我最一开始就是这样做的。作为一个软件,最大的价值就是可以提高人的效率,而如果在使用的同时还充满了快乐,那不是更好了吗?  

下载连接:http://pan.baidu.com/s/1kT9WTvT

 

" -----------------     Author: Light" -----------------     Email: Black_Art@outlook.com" -----------------     Date: 2015-05-04 00:02:05"********************************encoding**************************************"默认为 UTF-8 编码set encoding=utf-8set fileencoding=utf-8set fileencodings=ucs-bom,utf-8,cp936,big5,euc-jp,euc-kr,latin1set fileencoding=utf-8 let &termencoding=&encoding"********************************ui**************************************"字体/配色"以下为解决中文显示问题,以及相应带来的提示及菜单乱码问题set encoding=utf-8 " 设置vim内部使用的字符编码,原来是cp936lang messages zh_CN.UTF-8 " 解决consle输出乱码 "解决菜单乱码 source $VIMRUNTIME/delmenu.vim source $VIMRUNTIME/menu.vimcolorscheme molokaiset guifont=Source\ Code\ Pro:h11.5,Consolas:h16"去掉工具条、菜单栏、滚动条"set go=aAce              "set guioptions-=m set shm+=Iset guioptions-=T"高亮光标所在的行set cursorline" 自动最大化窗口if has('gui_running')    au GUIEnter * simalt ~x    "给 Win32 下的 gVim 窗口设置透明度    au GUIEnter * call libcallnr("vimtweak.dll", "SetAlpha", 237)endif"********************************language**************************************"语言中文language chineselanguage messages zh_CN.utf-8"********************************system**************************************"保留Ctrl+A/c/v操作"source $VIMRUNTIME/mswin.vim"与windows共享剪贴板set clipboard+=unnamed"保留历史记录set history=500"导入删除菜单脚本,删除乱码的菜单source $VIMRUNTIME/delmenu.vim"导入正常的菜单脚本source $VIMRUNTIME/menu.vim  set nocompatible"Diff 模式的时候鼠标同步滚动 for Vim7.3if has('cursorbind')    set cursorbindend"********************************setting**************************************" 行控制set linebreakset textwidth=80set wrap"带如下字符不换行set iskeyword+=_,$,@,%,#,-"标签页set tabpagemax=9set showtabline=2"控制台响铃set noerrorbellsset novisualbellset t_vb= "close visual bell"行号和标尺set numberset rulerset rulerformat=%15(%c%V\ %p%%%)"命令行于状态行set ch=1set ls=2 " 始终显示状态行set wildmenu "命令行补全以增强模式运行"高亮、实时搜索set hlsearch  set magic     set showmatch set mat=2    set incsearchset ignorecase"制表符set tabstop=4set expandtabset smarttabset shiftwidth=4set softtabstop=4"状态栏显示目前所执行的指令set showcmd "缩进set autoindentset smartindent"自动重新读入set autoread"插入模式下使用 <BS>、<Del> <C-W> <C-U>set backspace=indent,eol,start"设定在任何模式下鼠标都可用set mouse=a"自动改变当前目录set autochdir"备份和缓存set nobackupset noswapfile"自动完成set complete=.,w,b,k,t,iset completeopt=longest,menu"定义 <Leader> 为逗号let mapleader = ","let maplocalleader = ",""保证语法高亮syntax enablesyntax onfiletype plugin indent on"********************************mapping**************************************"标签页操作nmap nt :tabnew<cr>:NERDTreeToggle<cr><c-w>wnmap tg :tabprevious<cr>nmap nc :tabclose<cr>"去掉查找后的高亮nmap nh :noh<cr>"转换文件类型nmap 'h :set filetype=html<cr>nmap 'j :set filetype=javascript<cr>nmap 'c :set filetype=css<cr>"在行尾添加;nmap ; $A;<ESC>"在行尾添加,nmap <leader><leader> $A,<ESC>"另存为nmap ss :browse confirm saveas<cr>"切换窗口nmap tt <c-w>w"新窗口打开配置文件nmap <leader>e :tabnew $VIM/_vimrc<cr>" 按下 Q 不进入 Ex 模式,而是退出nmap Q :x<cr>"Tabularize插件对齐快捷键nmap <Leader>te :Tabularize /=<CR>nmap <Leader>tm :Tabularize /:<CR>"排序注释nmap <Leader>tc :Tabularize /\/\/<CR>"搜索nmap <Leader>n :cnext<cr>nmap <Leader>p :cprev<cr>nmap <Leader>l :clist<cr>nmap <Leader>w :cw<cr>"********************************plugin**************************************"插件快捷键nmap ne :NERDTreeToggle<cr>"NERDTree配置let NERDTreeDirArrows=1 "目录箭头 1 显示箭头  0传统+-|号"neocomplcache配置let g:neocomplcache_enable_at_startup = 1 let g:neocomplcache_enable_camel_case_completion = 1 "doxygen配置let g:DoxygenToolkit_authorName="qinjia"let g:DoxygenToolkit_briefTag_funcName="yes"let g:doxygen_enhanced_color=1let g:DoxygenToolkit_paramTag_pre="@Param " let g:DoxygenToolkit_returnTag="@Returns "nmap <Leader>d :Dox<cr>nmap <Leader>b :DoxAuthor<cr>"********************************syntax**************************************" JavaScript 语法高亮au FileType html,javascript let g:javascript_enable_domhtmlcss = 1au BufRead,BufNewFile *.js set syntax=jquery" 给各语言文件添加 Dictlet s:dict_dir = $VIM.'\vimfiles\dict\'let s:dict_dir = "setlocal dict+=".s:dict_dirau FileType html exec s:dict_dir."html.dict"au FileType css,html exec s:dict_dir."css.dict"au FileType javascript,html exec s:dict_dir."javascript.dict"au FileType javascript set dictionary+=$VIM.'\vimfiles\dict\node.dict'" 将指定文件的换行符转换成 dos 格式au FileType php,javascript,html,xml,json,css,txt,vim,vimwiki set ff=dos"********************************function**************************************" 获取当前目录"func! GetPWD()    "return substitute(getcwd(), "", "", "g")"endf "------------------------------------------------------------------------------"  < 判断操作系统是否是 Windows 还是 Linux >"------------------------------------------------------------------------------if(has("win32") || has("win64") || has("win95") || has("win16"))    let g:iswindows = 1else    let g:iswindows = 0endif "------------------------------------------------------------------------------"  < 判断是终端还是 Gvim >"------------------------------------------------------------------------------if has("gui_running")    let g:isGUI = 1else    let g:isGUI = 0endif " -----------------------------------------------------------------------------"  < 编译、连接、运行配置 (目前只配置了C、C++、Java语言)>" -----------------------------------------------------------------------------" F9 一键保存、编译、连接存并运行nmap <F9> :call Run()<CR>imap <F9> <ESC>:call Run()<CR> " Ctrl + F9 一键保存并编译nmap <c-F9> :call Compile()<CR>imap <c-F9> <ESC>:call Compile()<CR> " Ctrl + F10 一键保存并连接nmap <c-F10> :call Link()<CR>imap <c-F10> <ESC>:call Link()<CR> let s:LastShellReturn_C = 0let s:LastShellReturn_L = 0let s:ShowWarning = 1let s:Obj_Extension = '.o'let s:Exe_Extension = '.exe'let s:Class_Extension = '.class'let s:Sou_Error = 0 let s:windows_CFlags = 'gcc\ -fexec-charset=gbk\ -Wall\ -g\ -std=c11\ -O0\ -c\ %\ -o\ %<.o'let s:linux_CFlags = 'clang\ -Wall\ -g\ -O0\ -std=c11\ -c\ %\ -o\ %<.o' let s:windows_CPPFlags = 'g++\ -fexec-charset=gbk\ -Wall\ -g\ -O0\ -c\ %\ -o\ %<.o'let s:linux_CPPFlags = 'clang++\ -Wall\ -g\ -O0\ -c\ %\ -o\ %<.o' let s:JavaFlags = 'javac\ %' func! Compile()    exe ":ccl"    exe ":update"    let s:Sou_Error = 0    let s:LastShellReturn_C = 0    let Sou = expand("%:p")    let v:statusmsg = ''    if expand("%:e") == "c" || expand("%:e") == "cpp" || expand("%:e") == "cxx"        let Obj = expand("%:p:r").s:Obj_Extension        let Obj_Name = expand("%:p:t:r").s:Obj_Extension        if !filereadable(Obj) || (filereadable(Obj) && (getftime(Obj) < getftime(Sou)))            redraw!            if expand("%:e") == "c"                if g:iswindows                    exe ":setlocal makeprg=".s:windows_CFlags                else                    exe ":setlocal makeprg=".s:linux_CFlags                endif                echohl WarningMsg | echo " compiling..."                silent make            elseif expand("%:e") == "cpp" || expand("%:e") == "cxx"                if g:iswindows                    exe ":setlocal makeprg=".s:windows_CPPFlags                else                    exe ":setlocal makeprg=".s:linux_CPPFlags                endif                echohl WarningMsg | echo " compiling..."                silent make            endif            redraw!            if v:shell_error != 0                let s:LastShellReturn_C = v:shell_error            endif            if g:iswindows                if s:LastShellReturn_C != 0                    exe ":bo cope"                    echohl WarningMsg | echo " compilation failed"                else                    if s:ShowWarning                        exe ":bo cw"                    endif                    echohl WarningMsg | echo " compilation successful"                endif            else                if empty(v:statusmsg)                    echohl WarningMsg | echo " compilation successful"                else                    exe ":bo cope"                endif            endif        else            echohl WarningMsg | echo ""Obj_Name"is up to date"        endif    elseif expand("%:e") == "java"        let class = expand("%:p:r").s:Class_Extension        let class_Name = expand("%:p:t:r").s:Class_Extension        if !filereadable(class) || (filereadable(class) && (getftime(class) < getftime(Sou)))            redraw!            exe ":setlocal makeprg=".s:JavaFlags            echohl WarningMsg | echo " compiling..."            silent make            redraw!            if v:shell_error != 0                let s:LastShellReturn_C = v:shell_error            endif            if g:iswindows                if s:LastShellReturn_C != 0                    exe ":bo cope"                    echohl WarningMsg | echo " compilation failed"                else                    if s:ShowWarning                        exe ":bo cw"                    endif                    echohl WarningMsg | echo " compilation successful"                endif            else                if empty(v:statusmsg)                    echohl WarningMsg | echo " compilation successful"                else                    exe ":bo cope"                endif            endif        else            echohl WarningMsg | echo ""class_Name"is up to date"        endif    else        let s:Sou_Error = 1        echohl WarningMsg | echo " please choose the correct source file"    endif    exe ":setlocal makeprg=make"endfunc func! Link()    call Compile()    if s:Sou_Error || s:LastShellReturn_C != 0        return    endif    if expand("%:e") == "c" || expand("%:e") == "cpp" || expand("%:e") == "cxx"        let s:LastShellReturn_L = 0        let Sou = expand("%:p")        let Obj = expand("%:p:r").s:Obj_Extension        if g:iswindows            let Exe = expand("%:p:r").s:Exe_Extension            let Exe_Name = expand("%:p:t:r").s:Exe_Extension        else            let Exe = expand("%:p:r")            let Exe_Name = expand("%:p:t:r")        endif        let v:statusmsg = ''        if filereadable(Obj) && (getftime(Obj) >= getftime(Sou))            redraw!            if !executable(Exe) || (executable(Exe) && getftime(Exe) < getftime(Obj))                if expand("%:e") == "c"                    setlocal makeprg=gcc\ -o\ %<\ %<.o                    echohl WarningMsg | echo " linking..."                    silent make                elseif expand("%:e") == "cpp" || expand("%:e") == "cxx"                    setlocal makeprg=g++\ -o\ %<\ %<.o                    echohl WarningMsg | echo " linking..."                    silent make                endif                redraw!                if v:shell_error != 0                    let s:LastShellReturn_L = v:shell_error                endif                if g:iswindows                    if s:LastShellReturn_L != 0                        exe ":bo cope"                        echohl WarningMsg | echo " linking failed"                    else                        if s:ShowWarning                            exe ":bo cw"                        endif                        echohl WarningMsg | echo " linking successful"                    endif                else                    if empty(v:statusmsg)                        echohl WarningMsg | echo " linking successful"                    else                        exe ":bo cope"                    endif                endif            else                echohl WarningMsg | echo ""Exe_Name"is up to date"            endif        endif        setlocal makeprg=make    elseif expand("%:e") == "java"        return    endifendfunc func! Run()    let s:ShowWarning = 0    call Link()    let s:ShowWarning = 1    if s:Sou_Error || s:LastShellReturn_C != 0 || s:LastShellReturn_L != 0        return    endif    let Sou = expand("%:p")    if expand("%:e") == "c" || expand("%:e") == "cpp" || expand("%:e") == "cxx"        let Obj = expand("%:p:r").s:Obj_Extension        if g:iswindows            let Exe = expand("%:p:r").s:Exe_Extension        else            let Exe = expand("%:p:r")        endif        if executable(Exe) && getftime(Exe) >= getftime(Obj) && getftime(Obj) >= getftime(Sou)            redraw!            echohl WarningMsg | echo " running..."            if g:iswindows                exe ":!%<.exe"            else                if g:isGUI                    exe ":!gnome-terminal -x bash -c './%<; echo; echo 请按 Enter 键继续; read'"                else                    exe ":!clear; ./%<"                endif            endif            redraw!            echohl WarningMsg | echo " running finish"        endif    elseif expand("%:e") == "java"        let class = expand("%:p:r").s:Class_Extension        if getftime(class) >= getftime(Sou)            redraw!            echohl WarningMsg | echo " running..."            if g:iswindows                exe ":!java %<"            else                if g:isGUI                    exe ":!gnome-terminal -x bash -c 'java %<; echo; echo 请按 Enter 键继续; read'"                else                    exe ":!clear; java %<"                endif            endif            redraw!            echohl WarningMsg | echo " running finish"        endif    endifendfunc

0人推荐
随时随地看视频
慕课网APP