VIM配置文件vimrc_weixin_30507481的博客-程序员宅基地

技术标签: 开发工具  操作系统  数据库  

VIM配置文件vimrc

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " " Author: sunboy_2050 " Version: 1.0 " Last Change: 2011-11-11 11:11:11 " http://blog.csdn.net/sunboy_2050 " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " General """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "Get out of VI's compatible mode.. set nocompatible " Platform function! MySys() return "linux" endfunction "Sets how many lines of history VIM har to remember set history=400 " Chinese if MySys() == "windows" "set encoding=utf-8 "set langmenu=zh_CN.UTF-8 "language message zh_CN.UTF-8 "set fileencodings=ucs-bom,utf-8,gb18030,cp936,big5,euc-jp,euc-kr,latin1 endif "Enable filetype plugin filetype plugin on filetype indent on "Set to auto read when a file is changed from the outside set autoread "Have the mouse enabled all the time: set mouse=a "Set mapleader let mapleader = "," let g:mapleader = "," "Fast saving nmap <silent> <leader>ww :w<cr> nmap <silent> <leader>wf :w!<cr> "Fast quiting nmap <silent> <leader>qw :wq<cr> nmap <silent> <leader>qf :q!<cr> nmap <silent> <leader>qq :q<cr> nmap <silent> <leader>qa :qa<cr> "Fast remove highlight search nmap <silent> <leader><cr> :noh<cr> "Fast redraw nmap <silent> <leader>rr :redraw!<cr> " Switch to buffer according to file name function! SwitchToBuf(filename) "let fullfn = substitute(a:filename, "^\\~/", $HOME . "/", "") " find in current tab let bufwinnr = bufwinnr(a:filename) if bufwinnr != -1 exec bufwinnr . "wincmd w" return else " find in each tab tabfirst let tab = 1 while tab <= tabpagenr("{1}quot;) let bufwinnr = bufwinnr(a:filename) if bufwinnr != -1 exec "normal " . tab . "gt" exec bufwinnr . "wincmd w" return endif tabnext let tab = tab + 1 endwhile " not exist, new tab exec "tabnew " . a:filename endif endfunction "Fast edit vimrc if MySys() == 'linux' "Fast reloading of the .vimrc map <silent> <leader>ss :source ~/.vimrc<cr> "Fast editing of .vimrc map <silent> <leader>ee :call SwitchToBuf("~/.vimrc")<cr> "When .vimrc is edited, reload it autocmd! bufwritepost .vimrc source ~/.vimrc elseif MySys() == 'windows' " Set helplang set helplang=cn "Fast reloading of the _vimrc map <silent> <leader>ss :source ~/_vimrc<cr> "Fast editing of _vimrc map <silent> <leader>ee :call SwitchToBuf("~/_vimrc")<cr> "When _vimrc is edited, reload it autocmd! bufwritepost _vimrc source ~/_vimrc "Fast copying from linux func! CopyFromZ() autocmd! bufwritepost _vimrc exec 'split y:/.vimrc' exec 'normal 17G' exec 's/return "linux"/return "windows"/' exec 'w! ~/_vimrc' exec 'normal u' exec 'q' endfunc nnoremap <silent> <leader>uu :call CopyFromZ()<cr>:so ~/_vimrc<cr> endif " For windows version if MySys() == 'windows' source $VIMRUNTIME/mswin.vim behave mswin set diffexpr=MyDiff() function! MyDiff() let opt = '-a --binary ' if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif let arg1 = v:fname_in if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif let arg2 = v:fname_new if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif let arg3 = v:fname_out if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif let eq = '' if $VIMRUNTIME =~ ' ' if &sh =~ '\<cmd' let cmd = '""' . $VIMRUNTIME . '\diff"' let eq = '"' else let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"' endif else let cmd = $VIMRUNTIME . '\diff' endif silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq endfunction endif """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Colors and Fonts """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "Set font "if MySys() == "linux" " set gfn=Monospace\ 11 "endif " Avoid clearing hilight definition in plugins if !exists("g:vimrc_loaded") "Enable syntax hl syntax enable " color scheme if has("gui_running") set guioptions-=T set guioptions-=m set guioptions-=L set guioptions-=r colorscheme darkblue_my "hi normal guibg=#294d4a else "colorscheme desert_my" endif " has endif " exists(...) "Some nice mapping to switch syntax (useful if one mixes different languages in one file) map <leader>1 :set syntax=c<cr> map <leader>2 :set syntax=xhtml<cr> map <leader>3 :set syntax=python<cr> map <leader>4 :set ft=javascript<cr> map <leader>$ :syntax sync fromstart<cr> autocmd BufEnter * :syntax sync fromstart "Highlight current "if has("gui_running") " set cursorline " hi cursorline guibg=#333333 " hi CursorColumn guibg=#333333 "endif """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Fileformats """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "Favorite filetypes set ffs=unix,dos nmap <leader>fd :se ff=dos<cr> nmap <leader>fu :se ff=unix<cr> """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " VIM userinterface """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "Set 7 lines to the curors - when moving vertical.. "set so=7 " Maximum window when GUI running if has("gui_running") set lines=9999 set columns=9999 endif "Turn on WiLd menu set wildmenu "Always show current position set ruler "The commandbar is 2 high set cmdheight=2 "Show line number set nu "Do not redraw, when running macros.. lazyredraw set lz "Change buffer - without saving "set hid "Set backspace set backspace=eol,start,indent "Bbackspace and cursor keys wrap to "set whichwrap+=<,>,h,l set whichwrap+=<,> "Ignore case when searching "set ignorecase "Include search set incsearch "Highlight search things set hlsearch "Set magic on set magic "No sound on errors. set noerrorbells set novisualbell set t_vb= "show matching bracets "set showmatch "How many tenths of a second to blink "set mat=2 """""""""""""""""""""""""""""" " Statusline """""""""""""""""""""""""""""" "Always hide the statusline set laststatus=2 function! CurDir() let curdir = substitute(getcwd(), '/home/easwy/', "~/", "g") return curdir endfunction "Format the statusline "set statusline=\ %F%m%r%h\ %w\ \ CWD:\ %r%{CurDir()}%h\ \ \ Line:\ %l/%L:%c """""""""""""""""""""""""""""" " Visual """""""""""""""""""""""""""""" " From an idea by Michael Naumann function! VisualSearch(direction) range let l:saved_reg = @" execute "normal! vgvy" let l:pattern = escape(@", '\\/.*$^~[]') let l:pattern = substitute(l:pattern, "\n{1}quot;, "", "") if a:direction == 'b' execute "normal ?" . l:pattern . "^M" else execute "normal /" . l:pattern . "^M" endif let @/ = l:pattern let @" = l:saved_reg endfunction "Basically you press * or # to search for the current selection !! Really useful vnoremap <silent> * :call VisualSearch('f')<CR> vnoremap <silent> # :call VisualSearch('b')<CR> """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Moving around and tabs """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "Map space to / and c-space to ? "map <space> / "map <c-space> ? "Smart way to move btw. windows nmap <C-j> <C-W>j nmap <C-k> <C-W>k nmap <C-h> <C-W>h nmap <C-l> <C-W>l "Actually, the tab does not switch buffers, but my arrows "Bclose function can be found in "Buffer related" section map <leader>bd :Bclose<cr> "map <down> <leader>bd "Use the arrows to something usefull "map <right> :bn<cr> "map <left> :bp<cr> "Tab configuration map <leader>tn :tabnew map <leader>te :tabedit map <leader>tc :tabclose<cr> map <leader>tm :tabmove try set switchbuf=useopen set stal=1 catch endtry "Moving fast to front, back and 2 sides ;) imap <m-{1}gt; <esc>$a imap <m-0> <esc>0i "Switch to current dir map <silent> <leader>cd :cd %:p:h<cr> """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Parenthesis/bracket expanding """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" vnoremap @1 <esc>`>a)<esc>`<i(<esc> ") vnoremap @2 <esc>`>a]<esc>`<i[<esc> vnoremap @3 <esc>`>a}<esc>`<i{<esc> vnoremap @$ <esc>`>a"<esc>`<i"<esc> vnoremap @q <esc>`>a'<esc>`<i'<esc> vnoremap @w <esc>`>a"<esc>`<i"<esc> "Map auto complete of (, ", ', [ inoremap @1 ()<esc>:let leavechar=")"<cr>i inoremap @2 []<esc>:let leavechar="]"<cr>i inoremap @3 {}<esc>:let leavechar="}"<cr>i inoremap @4 {<esc>o}<esc>:let leavechar="}"<cr>O inoremap @q ''<esc>:let leavechar="'"<cr>i inoremap @w ""<esc>:let leavechar='"'<cr>i "au BufNewFile,BufRead *.\(vim\)\@! inoremap " ""<esc>:let leavechar='"'<cr>i "au BufNewFile,BufRead *.\(txt\)\@! inoremap ' ''<esc>:let leavechar="'"<cr>i "imap <m-l> <esc>:exec "normal f" . leavechar<cr>a "imap <d-l> <esc>:exec "normal f" . leavechar<cr>a """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " General Abbrevs """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "My information iab xdate <c-r>=strftime("%c")<cr> iab xname Easwy Yang """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Editing mappings etc. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" func! DeleteTrailingWS() exe "normal mz" %s/\s\+$//ge nohl exe "normal `z" endfunc " do not automaticlly remove trailing whitespace "autocmd BufWrite *.[ch] :call DeleteTrailingWS() "autocmd BufWrite *.cc :call DeleteTrailingWS() "autocmd BufWrite *.txt :call DeleteTrailingWS() nmap <silent> <leader>ws :call DeleteTrailingWS()<cr>:w<cr> "nmap <silent> <leader>ws! :call DeleteTrailingWS()<cr>:w!<cr> """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Command-line config """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "Bash like cnoremap <C-A> <Home> cnoremap <C-E> <End> cnoremap <C-K> <C-U> """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Buffer realted """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "Open a dummy buffer for paste map <leader>es :tabnew<cr>:setl buftype=nofile<cr> if MySys() == "linux" map <leader>ec :tabnew ~/tmp/scratch.txt<cr> else map <leader>ec :tabnew $TEMP/scratch.txt<cr> endif "Restore cursor to file position in previous editing session set viminfo='10,\"100,:20,n~/.viminfo au BufReadPost * if line("'\"") > 0|if line("'\"") <= line("{1}quot;)|exe("norm '\"")|else|exe "norm {1}quot;|endif|endif " Don't close window, when deleting a buffer command! Bclose call <SID>BufcloseCloseIt() function! <SID>BufcloseCloseIt() let l:currentBufNum = bufnr("%") let l:alternateBufNum = bufnr("#") if buflisted(l:alternateBufNum) buffer # else bnext endif if bufnr("%") == l:currentBufNum new endif if buflisted(l:currentBufNum) execute("bdelete! ".l:currentBufNum) endif endfunction """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Session options """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set sessionoptions-=curdir set sessionoptions+=sesdir """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Files and backups """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "Turn backup off set nobackup set nowb "set noswapfile """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Folding """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "Enable folding, I find it very useful "set fen "set fdl=0 nmap <silent> <leader>zo zO vmap <silent> <leader>zo zO """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Text options """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set expandtab set shiftwidth=4 map <leader>t2 :set shiftwidth=2<cr> map <leader>t4 :set shiftwidth=4<cr> au FileType html,python,vim,javascript setl shiftwidth=2 "au FileType html,python,vim,javascript setl tabstop=2 au FileType java,c setl shiftwidth=4 "au FileType java setl tabstop=4 au FileType txt setl lbr au FileType txt setl tw=78 set smarttab "set lbr "set tw=78 """""""""""""""""""""""""""""" " Indent """""""""""""""""""""""""""""" "Auto indent set ai "Smart indet set si "C-style indeting set cindent "Wrap lines set wrap """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Spell checking """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" map <leader>sn ]s map <leader>sp [s map <leader>sa zg map <leader>s? z= """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Complete """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " options set completeopt=menu set complete-=u set complete-=i " mapping inoremap <expr> <CR> pumvisible()?"\<C-Y>":"\<CR>" inoremap <expr> <C-J> pumvisible()?"\<PageDown>\<C-N>\<C-P>":"\<C-X><C-O>" inoremap <expr> <C-K> pumvisible()?"\<PageUp>\<C-P>\<C-N>":"\<C-K>" inoremap <expr> <C-U> pumvisible()?"\<C-E>":"\<C-U>" inoremap <C-]> <C-X><C-]> inoremap <C-F> <C-X><C-F> inoremap <C-D> <C-X><C-D> inoremap <C-L> <C-X><C-L> " Enable syntax if has("autocmd") && exists("+omnifunc") autocmd Filetype * \if &omnifunc == "" | \ setlocal omnifunc=syntaxcomplete#Complete | \endif endif """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " cscope setting """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" if has("cscope") if MySys() == "linux" set csprg=/usr/bin/cscope else set csprg=cscope endif set csto=1 set cst set nocsverb " add any database in current directory if filereadable("cscope.out") cs add cscope.out endif set csverb endif nmap <[email protected]>s :cs find s <C-R>=expand("<cword>")<CR><CR> nmap <[email protected]>g :cs find g <C-R>=expand("<cword>")<CR><CR> nmap <[email protected]>c :cs find c <C-R>=expand("<cword>")<CR><CR> nmap <[email protected]>t :cs find t <C-R>=expand("<cword>")<CR><CR> nmap <[email protected]>e :cs find e <C-R>=expand("<cword>")<CR><CR> nmap <[email protected]>f :cs find f <C-R>=expand("<cfile>")<CR><CR> nmap <[email protected]>i :cs find i ^<C-R>=expand("<cfile>")<CR>{1}lt;CR> nmap <[email protected]>d :cs find d <C-R>=expand("<cword>")<CR><CR> """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Plugin configuration """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """""""""""""""""""""""""""""" " Super Tab """""""""""""""""""""""""""""" "let g:SuperTabDefaultCompletionType = "<C-X><C-O>" let g:SuperTabDefaultCompletionType = "<C-P>" """""""""""""""""""""""""""""" " yank ring setting """""""""""""""""""""""""""""" map <leader>yr :YRShow<cr> """""""""""""""""""""""""""""" " file explorer setting """""""""""""""""""""""""""""" "Split vertically let g:explVertical=1 "Window size let g:explWinSize=35 let g:explSplitLeft=1 let g:explSplitBelow=1 "Hide some files let g:explHideFiles='^\.,.*\.class$,.*\.swp$,.*\.pyc$,.*\.swo$,\.DS_Store"Hide the help thing..    let g:explDetailedHelp=0    """"""""""""""""""""""""""""""    " minibuffer setting    """"""""""""""""""""""""""""""    let loaded_minibufexplorer = 1         " *** Disable minibuffer plugin    let g:miniBufExplorerMoreThanOne = 2   " Display when more than 2 buffers    let g:miniBufExplSplitToEdge = 1       " Always at top    let g:miniBufExplMaxSize = 3           " The max height is 3 lines    let g:miniBufExplMapWindowNavVim = 1   " map CTRL-[hjkl]    let g:miniBufExplUseSingleClick = 1    " select by single click    let g:miniBufExplModSelTarget = 1      " Dont change to unmodified buffer    let g:miniBufExplForceSyntaxEnable = 1 " force syntax on    "let g:miniBufExplVSplit = 25    "let g:miniBufExplSplitBelow = 0    autocmd BufRead,BufNew :call UMiniBufExplorer    """"""""""""""""""""""""""""""    " bufexplorer setting    """"""""""""""""""""""""""""""    let g:bufExplorerDefaultHelp=1       " Do not show default help.    let g:bufExplorerShowRelativePath=1  " Show relative paths.    let g:bufExplorerSortBy='mru'        " Sort by most recently used.    let g:bufExplorerSplitRight=0        " Split left.    let g:bufExplorerSplitVertical=1     " Split vertically.    let g:bufExplorerSplitVertSize = 30  " Split width    let g:bufExplorerUseCurrentWindow=1  " Open in new window.    let g:bufExplorerMaxHeight=13        " Max height    """"""""""""""""""""""""""""""    " taglist setting    """"""""""""""""""""""""""""""    if MySys() == "windows"      let Tlist_Ctags_Cmd = 'ctags'    elseif MySys() == "linux"      let Tlist_Ctags_Cmd = '/usr/bin/ctags'    endif    let Tlist_Show_One_File = 1    let Tlist_Exit_OnlyWindow = 1    let Tlist_Use_Right_Window = 1    nmap <silent> <leader>tl :Tlist<cr>    """"""""""""""""""""""""""""""    " winmanager setting    """"""""""""""""""""""""""""""    let g:winManagerWindowLayout = "BufExplorer,FileExplorer|TagList"    let g:winManagerWidth = 30    let g:defaultExplorer = 0    nmap <C-W><C-F> :FirstExplorerWindow<cr>    nmap <C-W><C-B> :BottomExplorerWindow<cr>    nmap <silent> <leader>wm :WMToggle<cr>    autocmd BufWinEnter \[Buf\ List\] setl nonumber    """"""""""""""""""""""""""""""    " netrw setting    """"""""""""""""""""""""""""""    let g:netrw_winsize = 30    nmap <silent> <leader>fe :Sexplore!<cr>    """"""""""""""""""""""""""""""    " LaTeX Suite things    """"""""""""""""""""""""""""""    set grepprg=grep\ -nH\ $*    let g:Tex_DefaultTargetFormat="pdf"    let g:Tex_ViewRule_pdf='xpdf'    "Bindings    autocmd FileType tex map <silent><leader><space> :w!<cr> :silent! call Tex_RunLaTeX()<cr>    "Auto complete some things ;)    autocmd FileType tex inoremap $i \indent    autocmd FileType tex inoremap $* \cdot    autocmd FileType tex inoremap $i \item    autocmd FileType tex inoremap $m \[<cr>\]<esc>O    """"""""""""""""""""""""""""""    " lookupfile setting    """"""""""""""""""""""""""""""    let g:LookupFile_MinPatLength = 2    let g:LookupFile_PreserveLastPattern = 0    let g:LookupFile_PreservePatternHistory = 0    let g:LookupFile_AlwaysAcceptFirst = 1    let g:LookupFile_AllowNewFiles = 0    if filereadable("./filenametags")        let g:LookupFile_TagExpr = '"./filenametags"'    endif    nmap <silent> <leader>lk <Plug>LookupFile<cr>    nmap <silent> <leader>ll :LUBufs<cr>    nmap <silent> <leader>lw :LUWalk<cr>    " lookup file with ignore case    function! LookupFile_IgnoreCaseFunc(pattern)        let _tags = &tags        try            let &tags = eval(g:LookupFile_TagExpr)            let newpattern = '\c' . a:pattern            let tags = taglist(newpattern)        catch            echohl ErrorMsg | echo "Exception: " . v:exception | echohl NONE            return ""        finally            let &tags = _tags        endtry        " Show the matches for what is typed so far.        let files = map(tags, 'v:val["filename"]')        return files    endfunction    let g:LookupFile_LookupFunc = 'LookupFile_IgnoreCaseFunc'    """"""""""""""""""""""""""""""    " markbrowser setting    """"""""""""""""""""""""""""""    nmap <silent> <leader>mk :MarksBrowser<cr>    """"""""""""""""""""""""""""""    " showmarks setting    """"""""""""""""""""""""""""""    " Enable ShowMarks    let showmarks_enable = 1    " Show which marks    let showmarks_include = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"    " Ignore help, quickfix, non-modifiable buffers    let showmarks_ignore_type = "hqm"    " Hilight lower & upper marks    let showmarks_hlline_lower = 1    let showmarks_hlline_upper = 1    """"""""""""""""""""""""""""""    " mark setting    """"""""""""""""""""""""""""""    nmap <silent> <leader>hl <Plug>MarkSet    vmap <silent> <leader>hl <Plug>MarkSet    nmap <silent> <leader>hh <Plug>MarkClear    vmap <silent> <leader>hh <Plug>MarkClear    nmap <silent> <leader>hr <Plug>MarkRegex    vmap <silent> <leader>hr <Plug>MarkRegex    """"""""""""""""""""""""""""""    " FeralToggleCommentify setting    """"""""""""""""""""""""""""""    let loaded_feraltogglecommentify = 1    "map <silent> <leader>tc :call ToggleCommentify()<CR>j     "imap <M-c> <ESC>:call ToggleCommentify()<CR>j     """"""""""""""""""""""""""""""    " vimgdb setting    """"""""""""""""""""""""""""""    let g:vimgdb_debug_file = ""    run macros/gdb_mappings.vim """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Filetype generic """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""    " Todo    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""    "au BufNewFile,BufRead *.todo so ~/vim_local/syntax/amido.vim    """"""""""""""""""""""""""""""    " HTML related    """"""""""""""""""""""""""""""    " HTML entities - used by xml edit plugin    let xml_use_xhtml = 1    "let xml_no_auto_nesting = 1    "To HTML    let html_use_css = 1    let html_number_lines = 0    let use_xhtml = 1    """""""""""""""""""""""""""""""    " Vim section    """""""""""""""""""""""""""""""    autocmd FileType vim set nofen    autocmd FileType vim map <buffer> <leader><space> :w!<cr>:source %<cr>    """"""""""""""""""""""""""""""    " HTML    """""""""""""""""""""""""""""""    au FileType html set ft=xml    au FileType html set syntax=html    """"""""""""""""""""""""""""""    " C/C++    """""""""""""""""""""""""""""""    autocmd FileType c,cpp  map <buffer> <leader><space> :make<cr>    "autocmd FileType c,cpp  setl foldmethod=syntax | setl fen """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " MISC """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""    "Quickfix    nmap <leader>cn :cn<cr>    nmap <leader>cp :cp<cr>    nmap <leader>cw :cw 10<cr>    "nmap <leader>cc :botright lw 10<cr>    "map <c-u> <c-l><c-j>:q<cr>:botright cw 10<cr>    function! s:GetVisualSelection()        let save_a = @a        silent normal! gv"ay        let v = @a        let @a = save_a        let var = escape(v, '\\/.$*')        return var    endfunction    " Fast grep    nmap <silent> <leader>lv :lv /<c-r>=expand("<cword>")<cr>/ %<cr>:lw<cr>    vmap <silent> <leader>lv :lv /<c-r>=<sid>GetVisualSelection()<cr>/ %<cr>:lw<cr>    " Fast diff    cmap @vd vertical diffsplit     set diffopt+=vertical    "Remove the Windows ^M    noremap <Leader>dm mmHmn:%s/<C-V><cr>//ge<cr>'nzt'm    "Paste toggle - when pasting something in, don't indent.    set pastetoggle=<F3>    "Remove indenting on empty lines    "map <F2> :%s/\s*$//g<cr>:noh<cr>''    "Super paste    "inoremap <C-v> <esc>:set paste<cr>mui<C-R>+<esc>mv'uV'v=:set nopaste<cr>    "Fast Ex command    nnoremap ; :    "For mark move    nnoremap <leader>' '    "Fast copy    nnoremap ' "    "A function that inserts links & anchors on a TOhtml export.    " Notice:    " Syntax used is:    " Link    " Anchor    function! SmartTOHtml()     TOhtml     try      %s/&quot;\s\+\*&gt; \(.\+\)</" <a href="#\1" style="color: cyan">\1<\/a></g      %s/&quot;\(-\|\s\)\+\*&gt; \(.\+\)</" \&nbsp;\&nbsp; <a href="#\2" style="color: cyan;">\2<\/a></g      %s/&quot;\s\+=&gt; \(.\+\)</" <a name="\1" style="color: #fff">\1<\/a></g     catch     endtry     exe ":write!"     exe ":bd"    endfunction """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Mark as loaded """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" let g:vimrc_loaded = 1


下载

===========================================================================

vimrc配置文件详解

"set encoding=chinese
"set langmenu=zh_CN.UTF-8"
if version >= 603
    set helplang=cn
endif
set langmenu=zh_CN.UTF-8
"set imcmdline "这一句导致字体大小、颜色设置失效
"set guifont=Monospace/ 12
set guifont=DejaVu/ Sans/ Mono/ 12 
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
"下一行为语法高亮,彩色的
syntax on

"添加自动缩进
set tabstop=4
set shiftwidth=4
set softtabstop=4
set ai "开启自动缩进
"set expandtab "自动把tab转化为空格
"retab "将已存在的tab都转化为空格
set list   "显示tab和行尾空格
set lcs=tab:+-,trail:- "显示tab为+---和行尾空格(只在输入时才显示)
"折叠python代码
"set foldmethod=indent
"let Tlist_Auto_Open=1 "auto open taglist自动打开taglist
set autoindent "自动缩进?
"添加python字典,实现自动补全(字典目录为~/.vim/pydiction,里面有字典和一个脚本),快捷键:ctrl+n(20080320 ~/.vim/tools/也可以)
if has("autocmd")
autocmd FileType python set complete+=k~/.vim/tools/pydiction
endif
"安F8智能补全
inoremap <F8> <C-x><C-o>

map <F5>:!/usr/bin/python2.5 %

set nobackup    "不自动备份
set nu      "开启行号
"搜索字高亮
set hlsearch
"取消 Vim 对 HTML 标记自动产生的缩进,但打开自动缩进选项
au FileType html setlocal autoindent indentexpr=

" multi-encoding setting
if has("multi_byte")
"set bomb
set fileencodings=ucs-bom,utf-8,cp936,big5,euc-jp,euc-kr,latin1
" CJK environment detection and corresponding setting
if v:lang =~ "^zh_CN"
    " Use cp936 to support GBK, euc-cn == gb2312
    set encoding=cp936
    set termencoding=cp936
    set fileencoding=cp936
elseif v:lang =~ "^zh_TW"
    " cp950, big5 or euc-tw
    " Are they equal to each other?
    set encoding=big5
    set termencoding=big5
    set fileencoding=big5
elseif v:lang =~ "^ko"
    " Copied from someone's dotfile, untested
    set encoding=euc-kr
    set termencoding=euc-kr
    set fileencoding=euc-kr
elseif v:lang =~ "^ja_JP"
    " Copied from someone's dotfile, untested
    set encoding=euc-jp
    set termencoding=euc-jp
    set fileencoding=euc-jp
endif
" Detect UTF-8 locale, and replace CJK setting if needed
if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
    set encoding=utf-8
    set termencoding=utf-8
    set fileencoding=utf-8
endif
else
echoerr "Sorry, this version of (g)vim was not compiled with multi_byte"
endif

*************************************
//
1.tabstop (ts-数值型): 设定文件中制表位占的空格个数,默认是8
   :set ts=4     (表示一个插入一个<Tab>占4个空格位)

2.expandtab (et-布尔型): 插入<Tab>时使用相应数量的空格,而不用制表位,默认关闭
   :set ts=10 et     (此时插入一个tab时,真正插入的是10个空格)
   注: 当'et'打开,要插入实际的制表位,需用CTRL-V<Tab>,win下加载了mswin.vim插件的用CTRL-Q<Tab>

3.softtabstop (sts-数值型): 当插入一个<Tab>时,若'ts'值大于'sts',则此时就插入'sts'值那么多空格;
   而当'ts'值小于'sts',则此时就插入几个制表位(制表位的个数是'sts'整除'ts'之商)
   和几个空格(空格的个数是'sts'整除'ts'之余数),默认是0,表示关闭
   :set ts=8 sts=6   (此时插入一个<Tab>,就会插入6个空格;若连续插入两个<Tab>,则会插入一个制表位和4个空格)
                    在此设置下这样输入: 一个<Tab>,3个空格,一个<Tab>,大家想想实际会输入什么?
   :set ts=3 sts=8   (此时插入一个<Tab>,就会插入2个制表位和2个空格)

4.retab (ret-ex下的命令,前面3个是选项): 把制表位和空格组成的连续序列替换成新的制表位或空格
   格式是   :[range]ret[!] [ts值]   (不是指定range,默认是全文;不指定'ts'值,就用原来的'ts'值)
   
   (1) 当'et'为关闭状态时,retab会尽量把由"制表位和空格组成的连续空白序列"替换成尽可能多的制表位,如:
   有一个连续"空白序列"是由: 3个空格,两个制表位,5个空格组成,这时设置如下命令
   :ret 6    (原来的"空白序列"变为由: 3个制表位,2个空格组成的新的"空白序列")
   (2) 当'et'为开启状态时,retab会把所有的制表位换成当前'ts
   (3) :ret! 命令则会把纯粹由空格组成的"空白序列"强制替换为尽可能多的制表位加空格
   注:retab命令对文本的处理,不会引起视觉上的变化

5.smarttab (sta-布尔型): 它确定行首插入<Tab>时的情况,它跟选项'shiftwidth'(sw)相关联,默认关闭.
   :set sta   (则若行首插入一个<Tab>,会根据'sw'的值来插入"空白序列",其余的地方还是插入一个制表位;
               而这里的"空白序列"是由什么组成,是由'sw','ts'值的相对大小,以及是否开启了'et'决定的.
               若'sw'小于'ts'的值,且'et'是关闭的,则行首插入一个<Tab>就直接插入'sw'值所代表的空格数;
               若'sw'大于'ts'的值,且'et'是关闭的,则行首插入一个<Tab>就插入尽可能多的制表位加空格;
               若'et'是开启的,若行首插入一个<Tab>就直接插入'sw'值所代表的空格数

   注:选项'sw'只用于normal下的左右移动命令: > , >> , < , <<

************************ 说 明 *********************************
*                                                            
* (a) 文中的<Tab>表示动作:敲击键盘上的Tab制表键(位于Q键左边), 
*     而文中的"制表位"表示前面那个动作后的输入;                
* (b) 为了便于制表位和空格的区分,也就是让它们成为"可见"模式:    
*     :set list                                              
*     :set lcs=eol:&,tab<+        
       set list   "显示tab和行尾空格
       set lcs=tab:>-,trail:- "显示tab为---和行尾空格(只在输入时才显示)                           
*     这样每行结尾有字符"&",制表位若是4,则为:<+++ ,             
*     而若制表位是8,则为:<+++++++                         
* (c) <Backspace>在插入模式下可以删除整个'sts'和'sta'下的'sw' 
*     但象normal下"x"这样的命令就只能删除真正的制表位和空格       
==========================================================================
20090123
" 自动补全命令时候使用菜单式匹配列表
set wildmenu
" 允许退格键删除
set backspace=2
" 启用鼠标
set mouse=a
" 文件类型
filetype on
filetype plugin on
filetype indent on
" 设置编码自动识别, 中文引号显示
"set fileencodings=utf-8,cp936,big5,euc-jp,euc-kr,latin1,ucs-bom
set fileencodings=utf-8,gbk,ucs-bom
set ambiwidth=double

" 移动长行
nnoremap <Down> gj
nnoremap <Up> gk

" 让编辑模式可以中文输入法下按:转到命令模式
nnoremap : :

" 高亮
syntax on
" 设置高亮搜索
set hlsearch
" 输入字符串就显示匹配点
set incsearch
" 输入的命令显示出来,看的清楚些。
set showcmd

" 打开当前目录文件列表
map <F3> :e .<CR>

" Taglist
let Tlist_File_Fold_Auto_Close=1
set updatetime=1000
map <F4> :Tlist<CR>

" 按 F8 智能补全
inoremap <F8> <C-x><C-o>

" vim 自动补全 Python 代码
" 来自http://vim.sourceforge.net/scripts/script.php?script_id=850
autocmd FileType python set complete+=k~/.vim/tools/pydiction
autocmd FileType python set shiftwidth=4 tabstop=4 "expandtab "把tab转化为空格
set list
set lcs=tab:+-,trail:-
" 自动使用新文件模板
autocmd BufNewFile *.py 0r ~/.vim/template/simple.py

autocmd FileType html set shiftwidth=4 tabstop=4 expandtab 
autocmd BufNewFile *.html 0r ~/.vim/template/simple.html

"要在命令行上实现 Emacs 风格的编辑操作: >
" 至行首
:cnoremap <C-A>        <Home>
" 后退一个字符
:cnoremap <C-B>        <Left>
" 删除光标所在的字符
:cnoremap <C-D>        <Del>
" 至行尾
:cnoremap <C-E>        <End>
" 前进一个字符
:cnoremap <C-F>        <Right>
" 取回较新的命令行
:cnoremap <C-N>        <Down>
" 取回以前 (较旧的) 命令行
:cnoremap <C-P>        <Up>
" 后退一个单词
:cnoremap <Esc><C-B>    <S-Left>
" 前进一个单词
:cnoremap <Esc><C-F>    <S-Right>

"Format the statusline
"Nice statusbar
set laststatus=2
set statusline=
set statusline+=%2*%-3.3n%0*/ " buffer number
set statusline+=%f/ " file name
set statusline+=%h%1*%m%r%w%0* " flag
set statusline+=[
if v:version >= 600
set statusline+=%{strlen(&ft)?&ft:'none'}, " filetype
set statusline+=%{&encoding}, " encoding
endif
set statusline+=%{&fileformat}] " file format
if filereadable(expand("$VIM/vimfiles/plugin/vimbuddy.vim"))
set statusline+=/ %{VimBuddy()} " vim buddy
endif
set statusline+=%= " right align
"set statusline+=%2*0x%-8B/ " current char
set statusline+=0x%-8B/ " current char
set statusline+=%-14.(%l,%c%V%)/ %<%P " offset

 

参考拓展:

vim配置文件vimrc

 

Vim的分屏功能

 

vim encoding and font

 

vim技巧快捷键学习

 

vim实用功能总结

 

VIM编辑代码时的一些技巧

转载于:https://www.cnblogs.com/springside4/archive/2011/02/12/2481696.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30507481/article/details/97559910

智能推荐

基于MySQL binlog的flashback工具(mysqlbinlog_back)_cdrcsy的博客-程序员宅基地

#目前运行情况 现在已经在阿里的rds上,db为utf8字符集的生产环境下使用。其他环境没有在生产环境下使用,请小心。 项目地址:https://github.com/58daojia-dba/mysqlbinlog_flashback#工具简介 ##概述 mysqlbinlog_back.py 是在线读取row格式的mysqld的binlog,然后生成反向的sql语句的工具。一般用于...

Contest100000598 - 《算法笔记》6.3小节——C++标准模板库(STL)介绍->string的常见用法详解_李霁明的博客-程序员宅基地

文章目录Contest100000598 - 《算法笔记》6.3小节——C++标准模板库(STL)介绍-&gt;string的常见用法详解6.3 string的常见用法详解1. string的定义2. string中内容的访问3. string常用函数实例解析(1)operator+=(2)compare operator(3)length()/size()(4)insert()(5)erase(...

TT建站之路--vue项目基础框架搭建【01】_HashTang的博客-程序员宅基地

上篇文章就说过,要搞个网站玩玩,结果4个月过去了,现在才动手,哎呀。。。。。。觉得自己身为程序员三四年了,是时候搞一个属于自己独立开发的项目出来,暂定小说类型网站。促使我做这件事主要有以下几方面的原因:1:同步更新文章可以锻炼自己的文字输出能力。2:写文章的同时,可以加深自己对知识点的理解。3:自己写的项目,想怎么搞就怎么搞,可以把最新了解到的技术毫无顾忌的用到项目实践当中。说干就干,...

鸢尾花分类预测数据分析_QianYanDai的博客-程序员宅基地

鸢尾花分类预测数据分析目标:根据未知种类鸢尾花的特征预测其种类数据:鸢尾花数据集分析: 描述性分析探索性分析 建模分析模型分析迭代分析成果:位置种类鸢尾花的预测结果import numpy as npimport matplotlib.pyplot as plt# import pandas as pdfrom sklearn import neighbors, datas

塞班(Symbian)安装文件.SISX文件格式说明_「已注销」的博客-程序员宅基地

<br />原文地址:http://homepage.ntlworld.com/thouky/software/psifs/sis.html<br /> <br />用于分析SISX文件格式,解压SISX文件,压缩SISX文件,程序自动打包S60安装程序等.<br /> <br /> SIS File Format<br />Version 1.18, 19-Dec-07<br />by Alexander Thoukydides ([email protected]) <br /> Copyright

SSM完整项目的pom文件搭建_SimpleSimpleSimples的博客-程序员宅基地_ssm的pom文件

1.共同父依赖parent的pom文件    他是个简单骨架,是其他项目的父依赖。配置如下:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/

随便推点

深度学习——Fast R-CNN原理_ciky奇的博客-程序员宅基地

在SPPNet中,实际特征提取和区域分类是两个分离的步骤,利用ROI池化层来提取每个区域的特征,然后利用传统的SVM作为分类器对这些区域进行分类。Fast R-CNN相比SPPNet更进一步,不再使用SVM作为分类器,而是使用神经网络进行分类,这样就能同时训练特征提取网络和分类网络,比SPPNet取得更高准确度。Fast R-CNN网络结构如下图:    对于原始图中的...

poj1122&zoj1053 FDNY to the Rescue!(dijkstra+输出路径)_ophunter的博客-程序员宅基地

题目请戳这里(poj)或这里(zoj)题目大意:n个点表示n个路口,任意2个路口可能有一条路,现在给定一个着火点和若干消防局,求所有消防局到着火点最短距离并输出路径,按找距离升序输出,按样例输出。题目分析:裸的最短路,路径的话记录前驱就ok。不过这题还是搞的很dt,poj是单case,zoj是多case,而且消防局数量不告诉,所以要自己判断有多少个,sscanf可以解决,但是由于这题的

asp.net和asp的区别_binggetong的博客-程序员宅基地_asp asp.net

说到asp.net就要先说说asp这个基础了。         asp是动态服务器页面(active server Page)的英文缩写,后来也称为经典ASP,是微软公司开发的代替CGI脚本程序的一种应用,也是微软公司的第一个服务器侧的脚本引擎,能够动态产生Web页面。ASP可以与Web数据库以及其他程序进行交互,是一种简单、方便的编程工具、asp的网页文件的格式是.asp,曾用于各种动态网站

JavaScript连接sql server数据库实例+讲解------连接测试篇_小小探索者的博客-程序员宅基地_javascript连接数据库

本实例参考了下此位博主的内容:https://www.cnblogs.com/carekee/articles/5829656.html因为我不会直接在控制台中调试,就把连接数据库的代码加进了HTML中。具体如下:&lt;!DOCTYPE html&gt;&lt;head&gt; &lt;title&gt;测试js访问数据库&lt;/title&gt;&lt;/head&gt;...

linux 用户权限设置_hcleon66的博客-程序员宅基地

# useradd –d /usr/sam -m sam此命令创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录/usr/sam(/usr为默认的用户主目录所在的父目录)。 假设当前用户是sam,则下面的命令修改该用户自己的口令:# passwdOld password:******New password:*******...

前端基础面试题_fanlinqiang的博客-程序员宅基地

转自:http://www.qdfuns.com/notes/40816/795e40bec4bcf47ca37f983ce62f1ea4.htmlHTML+CSS部分1.行内元素和块级元素?img算什么?行内元素怎么转化为块级元素?行内元素:和有他元素都在一行上,高度、行高及外边距和内边距都不可改变,文字图片的宽度不可改变,只能容纳文本或者其他行内元素;其中img是行元素块级

推荐文章

热门文章

相关标签