- 论坛徽章:
- 1
|
本帖最后由 crazyhadoop 于 2012-03-02 06:35 编辑
http://amix.dk/vim/vimrc.html 参考下这个配置!
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " Maintainer: amix the lucky stiff
- " http://amix.dk - amix@amix.dk
- "
- " Version: 3.6 - 25/08/10 14:40:30
- "
- " Blog_post:
- " http://amix.dk/blog/post/19486#The-ultimate-vim-configuration-vimrc
- " Syntax_highlighted:
- " http://amix.dk/vim/vimrc.html
- " Raw_version:
- " http://amix.dk/vim/vimrc.txt
- "
- " How_to_Install_on_Unix:
- " $ mkdir ~/.vim_runtime
- " $ svn co svn://orangoo.com/vim ~/.vim_runtime
- " $ cat ~/.vim_runtime/install.sh
- " $ sh ~/.vim_runtime/install.sh <system>
- " <sytem> can be `mac`, `linux` or `windows`
- "
- " How_to_Upgrade:
- " $ svn update ~/.vim_runtime
- "
- " Sections:
- " -> General
- " -> VIM user interface
- " -> Colors and Fonts
- " -> Files and backups
- " -> Text, tab and indent related
- " -> Visual mode related
- " -> Command mode related
- " -> Moving around, tabs and buffers
- " -> Statusline
- " -> Parenthesis/bracket expanding
- " -> General Abbrevs
- " -> Editing mappings
- "
- " -> Cope
- " -> Minibuffer plugin
- " -> Omni complete functions
- " -> Python section
- " -> JavaScript section
- "
- "
- " Plugins_Included:
- " > minibufexpl.vim - http://www.vim.org/scripts/script.php?script_id=159
- " Makes it easy to get an overview of buffers:
- " info -> :e ~/.vim_runtime/plugin/minibufexpl.vim
- "
- " > bufexplorer - http://www.vim.org/scripts/script.php?script_id=42
- " Makes it easy to switch between buffers:
- " info -> :help bufExplorer
- "
- " > yankring.vim - http://www.vim.org/scripts/script.php?script_id=1234
- " Emacs's killring, useful when using the clipboard:
- " info -> :help yankring
- "
- " > surround.vim - http://www.vim.org/scripts/script.php?script_id=1697
- " Makes it easy to work with surrounding text:
- " info -> :help surround
- "
- " > snipMate.vim - http://www.vim.org/scripts/script.php?script_id=2540
- " Snippets for many languages (similar to TextMate's):
- " info -> :help snipMate
- "
- " > mru.vim - http://www.vim.org/scripts/script.php?script_id=521
- " Plugin to manage Most Recently Used (MRU) files:
- " info -> :e ~/.vim_runtime/plugin/mru.vim
- "
- " > Command-T - http://www.vim.org/scripts/script.php?script_id=3025
- " Command-T plug-in provides an extremely fast, intuitive mechanism for opening filesa:
- " info -> :help CommandT
- " screencast and web-help -> http://amix.dk/blog/post/19501
- "
- "
- " Revisions:
- " > 3.6: Added lots of stuff (colors, Command-T, Vim 7.3 persistent undo etc.)
- " > 3.5: Paste mode is now shown in status line if you are in paste mode
- " > 3.4: Added mru.vim
- " > 3.3: Added syntax highlighting for Mako mako.vim
- " > 3.2: Turned on python_highlight_all for better syntax
- " highlighting for Python
- " > 3.1: Added revisions ;) and bufexplorer.vim
- "
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " => General
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " Sets how many lines of history VIM has to remember
- set history=700
- " Enable filetype plugin
- filetype plugin on
- filetype indent on
- " Set to auto read when a file is changed from the outside
- set autoread
- " With a map leader it's possible to do extra key combinations
- " like <leader>w saves the current file
- let mapleader = ","
- let g:mapleader = ","
- " Fast saving
- nmap <leader>w :w!<cr>
- " Fast editing of the .vimrc
- map <leader>e :e! ~/.vim_runtime/vimrc<cr>
- " When vimrc is edited, reload it
- autocmd! bufwritepost vimrc source ~/.vim_runtime/vimrc
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " => VIM user interface
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " Set 7 lines to the curors - when moving vertical..
- set so=7
- set wildmenu "Turn on WiLd menu
- set ruler "Always show current position
- set cmdheight=2 "The commandbar height
- set hid "Change buffer - without saving
- " Set backspace config
- set backspace=eol,start,indent
- set whichwrap+=<,>,h,l
- set ignorecase "Ignore case when searching
- set smartcase
- set hlsearch "Highlight search things
- set incsearch "Make search act like search in modern browsers
- set nolazyredraw "Don't redraw while executing macros
- set magic "Set magic on, for regular expressions
- set showmatch "Show matching bracets when text indicator is over them
- set mat=2 "How many tenths of a second to blink
- " No sound on errors
- set noerrorbells
- set novisualbell
- set t_vb=
- set tm=500
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " => Colors and Fonts
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- syntax enable "Enable syntax hl
- " Set font according to system
- if MySys() == "mac"
- set gfn=Menlo:h14
- set shell=/bin/bash
- elseif MySys() == "windows"
- set gfn=Bitstream\ Vera\ Sans\ Mono:h10
- elseif MySys() == "linux"
- set gfn=Monospace\ 10
- set shell=/bin/bash
- endif
- if has("gui_running")
- set guioptions-=T
- set t_Co=256
- set background=dark
- colorscheme peaksea
- set nonu
- else
- colorscheme zellner
- set background=dark
- set nonu
- endif
- set encoding=utf8
- try
- lang en_US
- catch
- endtry
- set ffs=unix,dos,mac "Default file types
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " => Files, backups and undo
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " Turn backup off, since most stuff is in SVN, git anyway...
- set nobackup
- set nowb
- set noswapfile
- "Persistent undo
- try
- if MySys() == "windows"
- set undodir=C:\Windows\Temp
- else
- set undodir=~/.vim_runtime/undodir
- endif
- set undofile
- catch
- endtry
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " => Text, tab and indent related
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- set expandtab
- set shiftwidth=4
- set tabstop=4
- set smarttab
- set lbr
- set tw=500
- set ai "Auto indent
- set si "Smart indet
- set wrap "Wrap lines
- """"""""""""""""""""""""""""""
- " => Visual mode related
- """"""""""""""""""""""""""""""
- " Really useful!
- " In visual mode when you press * or # to search for the current selection
- vnoremap <silent> * :call VisualSearch('f')<CR>
- vnoremap <silent> # :call VisualSearch('b')<CR>
- " When you press gv you vimgrep after the selected text
- vnoremap <silent> gv :call VisualSearch('gv')<CR>
- map <leader>g :vimgrep // **/*.<left><left><left><left><left><left><left>
- function! CmdLine(str)
- exe "menu Foo.Bar :" . a:str
- emenu Foo.Bar
- unmenu Foo
- endfunction
- " 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$", "", "")
- if a:direction == 'b'
- execute "normal ?" . l:pattern . "^M"
- elseif a:direction == 'gv'
- call CmdLine("vimgrep " . '/'. l:pattern . '/' . ' **/*.')
- elseif a:direction == 'f'
- execute "normal /" . l:pattern . "^M"
- endif
- let @/ = l:pattern
- let @" = l:saved_reg
- endfunction
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " => Command mode related
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " Smart mappings on the command line
- cno $h e ~/
- cno $d e ~/Desktop/
- cno $j e ./
- cno $c e <C-\>eCurrentFileDir("e")<cr>
- " $q is super useful when browsing on the command line
- cno $q <C-\>eDeleteTillSlash()<cr>
- " Bash like keys for the command line
- cnoremap <C-A> <Home>
- cnoremap <C-E> <End>
- cnoremap <C-K> <C-U>
- cnoremap <C-P> <Up>
- cnoremap <C-N> <Down>
- " Useful on some European keyboards
- map ½ $
- imap ½ $
- vmap ½ $
- cmap ½ $
- func! Cwd()
- let cwd = getcwd()
- return "e " . cwd
- endfunc
- func! DeleteTillSlash()
- let g:cmd = getcmdline()
- if MySys() == "linux" || MySys() == "mac"
- let g:cmd_edited = substitute(g:cmd, "\\(.*\[/\]\\).*", "\\1", "")
- else
- let g:cmd_edited = substitute(g:cmd, "\\(.*\[\\\\]\\).*", "\\1", "")
- endif
- if g:cmd == g:cmd_edited
- if MySys() == "linux" || MySys() == "mac"
- let g:cmd_edited = substitute(g:cmd, "\\(.*\[/\]\\).*/", "\\1", "")
- else
- let g:cmd_edited = substitute(g:cmd, "\\(.*\[\\\\\]\\).*\[\\\\\]", "\\1", "")
- endif
- endif
- return g:cmd_edited
- endfunc
- func! CurrentFileDir(cmd)
- return a:cmd . " " . expand("%:p:h") . "/"
- endfunc
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " => Moving around, tabs and buffers
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " Map space to / (search) and c-space to ? (backgwards search)
- map <space> /
- map <c-space> ?
- map <silent> <leader><cr> :noh<cr>
- " Smart way to move btw. windows
- map <C-j> <C-W>j
- map <C-k> <C-W>k
- map <C-h> <C-W>h
- map <C-l> <C-W>l
- " Close the current buffer
- map <leader>bd :Bclose<cr>
- " Close all the buffers
- map <leader>ba :1,300 bd!<cr>
- " Use the arrows to something usefull
- map <right> :bn<cr>
- map <left> :bp<cr>
- " Tab configuration
- map <leader>tn :tabnew<cr>
- map <leader>te :tabedit
- map <leader>tc :tabclose<cr>
- map <leader>tm :tabmove
- " When pressing <leader>cd switch to the directory of the open buffer
- map <leader>cd :cd %:p:h<cr>
- 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
- " Specify the behavior when switching between buffers
- try
- set switchbuf=usetab
- set stal=2
- catch
- endtry
- """"""""""""""""""""""""""""""
- " => Statusline
- """"""""""""""""""""""""""""""
- " Always hide the statusline
- set laststatus=2
- " Format the statusline
- set statusline=\ %{HasPaste()}%F%m%r%h\ %w\ \ CWD:\ %r%{CurDir()}%h\ \ \ Line:\ %l/%L:%c
- function! CurDir()
- let curdir = substitute(getcwd(), '/Users/amir/', "~/", "g")
- return curdir
- endfunction
- function! HasPaste()
- if &paste
- return 'PASTE MODE '
- else
- return ''
- endif
- endfunction
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " => 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 $e <esc>`>a"<esc>`<i"<esc>
- " Map auto complete of (, ", ', [
- inoremap $1 ()<esc>i
- inoremap $2 []<esc>i
- inoremap $3 {}<esc>i
- inoremap $4 {<esc>o}<esc>O
- inoremap $q ''<esc>i
- inoremap $e ""<esc>i
- inoremap $t <><esc>i
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " => General Abbrevs
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- iab xdate <c-r>=strftime("%d/%m/%y %H:%M:%S")<cr>
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " => Editing mappings
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- "Remap VIM 0
- map 0 ^
- "Move a line of text using ALT+[jk] or Comamnd+[jk] on mac
- nmap <M-j> mz:m+<cr>`z
- nmap <M-k> mz:m-2<cr>`z
- vmap <M-j> :m'>+<cr>`<my`>mzgv`yo`z
- vmap <M-k> :m'<-2<cr>`>my`<mzgv`yo`z
- if MySys() == "mac"
- nmap <D-j> <M-j>
- nmap <D-k> <M-k>
- vmap <D-j> <M-j>
- vmap <D-k> <M-k>
- endif
- "Delete trailing white space, useful for Python ;)
- func! DeleteTrailingWS()
- exe "normal mz"
- %s/\s\+$//ge
- exe "normal `z"
- endfunc
- autocmd BufWrite *.py :call DeleteTrailingWS()
- set guitablabel=%t
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " => Cope
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " Do :help cope if you are unsure what cope is. It's super useful!
- map <leader>cc :botright cope<cr>
- map <leader>n :cn<cr>
- map <leader>p :cp<cr>
- """"""""""""""""""""""""""""""
- " => bufExplorer plugin
- """"""""""""""""""""""""""""""
- let g:bufExplorerDefaultHelp=0
- let g:bufExplorerShowRelativePath=1
- map <leader>o :BufExplorer<cr>
- """"""""""""""""""""""""""""""
- " => Minibuffer plugin
- """"""""""""""""""""""""""""""
- let g:miniBufExplModSelTarget = 1
- let g:miniBufExplorerMoreThanOne = 2
- let g:miniBufExplModSelTarget = 0
- let g:miniBufExplUseSingleClick = 1
- let g:miniBufExplMapWindowNavVim = 1
- let g:miniBufExplVSplit = 25
- let g:miniBufExplSplitBelow=1
- let g:bufExplorerSortBy = "name"
- autocmd BufRead,BufNew :call UMiniBufExplorer
- map <leader>u :TMiniBufExplorer<cr>
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " => Omni complete functions
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- autocmd FileType css set omnifunc=csscomplete#CompleteCSS
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " => Spell checking
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- "Pressing ,ss will toggle and untoggle spell checking
- map <leader>ss :setlocal spell!<cr>
- "Shortcuts using <leader>
- map <leader>sn ]s
- map <leader>sp [s
- map <leader>sa zg
- map <leader>s? z=
- """"""""""""""""""""""""""""""
- " => Python section
- """"""""""""""""""""""""""""""
- let python_highlight_all = 1
- au FileType python syn keyword pythonDecorator True None False self
- au BufNewFile,BufRead *.jinja set syntax=htmljinja
- au BufNewFile,BufRead *.mako set ft=mako
- au FileType python inoremap <buffer> $r return
- au FileType python inoremap <buffer> $i import
- au FileType python inoremap <buffer> $p print
- au FileType python inoremap <buffer> $f #--- PH ----------------------------------------------<esc>FP2xi
- au FileType python map <buffer> <leader>1 /class
- au FileType python map <buffer> <leader>2 /def
- au FileType python map <buffer> <leader>C ?class
- au FileType python map <buffer> <leader>D ?def
- """"""""""""""""""""""""""""""
- " => JavaScript section
- """""""""""""""""""""""""""""""
- au FileType javascript call JavaScriptFold()
- au FileType javascript setl fen
- au FileType javascript setl nocindent
- au FileType javascript imap <c-t> AJS.log();<esc>hi
- au FileType javascript imap <c-a> alert();<esc>hi
- au FileType javascript inoremap <buffer> $r return
- au FileType javascript inoremap <buffer> $f //--- PH ----------------------------------------------<esc>FP2xi
- function! JavaScriptFold()
- setl foldmethod=syntax
- setl foldlevelstart=1
- syn region foldBraces start=/{/ end=/}/ transparent fold keepend extend
- function! FoldText()
- return substitute(getline(v:foldstart), '{.*', '{...}', '')
- endfunction
- setl foldtext=FoldText()
- endfunction
- """"""""""""""""""""""""""""""
- " => MRU plugin
- """"""""""""""""""""""""""""""
- let MRU_Max_Entries = 400
- map <leader>f :MRU<CR>
- """"""""""""""""""""""""""""""
- " => Command-T
- """"""""""""""""""""""""""""""
- let g:CommandTMaxHeight = 15
- set wildignore+=*.o,*.obj,.git,*.pyc
- noremap <leader>j :CommandT<cr>
- noremap <leader>y :CommandTFlush<cr>
- """"""""""""""""""""""""""""""
- " => Vim grep
- """"""""""""""""""""""""""""""
- let Grep_Skip_Dirs = 'RCS CVS SCCS .svn generated'
- set grepprg=/bin/grep\ -nH
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " => MISC
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " Remove the Windows ^M - when the encodings gets messed up
- noremap <Leader>m mmHmt:%s/<C-V><cr>//ge<cr>'tzt'm
- "Quickly open a buffer for scripbble
- map <leader>q :e ~/buffer<cr>
- au BufRead,BufNewFile ~/buffer iab <buffer> xh1 ===========================================
- map <leader>pp :setlocal paste!<cr>
- map <leader>bb :cd ..<cr>
复制代码 |
|