VIM配置文件vimrc
Ubuntu 默认情况下只安装tiny-vim , 只要运行 sudo apt-get install vim 安装完整的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 <C-@>s :cs find s <C-R>=expand("<cword>")<CR><CR>
- nmap <C-@>g :cs find g <C-R>=expand("<cword>")<CR><CR>
- nmap <C-@>c :cs find c <C-R>=expand("<cword>")<CR><CR>
- nmap <C-@>t :cs find t <C-R>=expand("<cword>")<CR><CR>
- nmap <C-@>e :cs find e <C-R>=expand("<cword>")<CR><CR>
- nmap <C-@>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
- nmap <C-@>i :cs find i ^<C-R>=expand("<cfile>")<CR>{1}lt;CR>
- nmap <C-@>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/"\s\+\*> \(.\+\)</" <a href="#\1" style="color: cyan">\1<\/a></g
- %s/"\(-\|\s\)\+\*> \(.\+\)</" \ \ <a href="#\2" style="color: cyan;">\2<\/a></g
- %s/"\s\+=> \(.\+\)</" <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
参考拓展: