这里会显示出您选择的修订版和当前版本之间的差别。
— |
linux:vim:vimrc-example [2011/01/23 08:05] (当前版本) |
||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== 史上最强的vimrc文件 ====== | ||
+ | |||
+ | 网上称为史上最强的vimrc文件,约800行,还是作者精简后的结果。评价:未必全用,但通读有益! | ||
+ | |||
+ | 中文改进版 [[linux:vim:vimrc-example-cn]] | ||
+ | |||
+ | <code vim> | ||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | " 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> | ||
+ | </code> | ||
+ | |||
+ | ===== 参考 ===== | ||
+ | |||
+ | * http://amix.dk/vim/vimrc.html | ||