史上最强的Vim 配置文件(原版+中文改进版)

xiaoxiao2021-02-28  82

我找到的“史上最强的Vim 配置文件”做了汇总,原始地址 (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>

原版二

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Maintainer: amix the lucky stiff " http://amix.dk - amix@amix.dk " " Version: 3.6 - 25/08/10 14:40:30 " " 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 " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " => General """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " set nocompatible " explicitly get out of vi-compatible mode " Enable filetype plugin filetype plugin on filetype indent on set autoread " Set to auto read when a file is changed from the outside " set filetype set cpoptions=aABceFsmq " ||||||||| " ||||||||+-- When joining lines, leave the cursor between joined lines " |||||||+-- When a new match is created (showmatch) pause for .5 " ||||||+-- Set buffer options when entering the buffer " |||||+-- :write command updates current file name " ||||+-- Automatically add <CR> to the last line when using :@r " |||+-- Searching continues at the end of the match at the cursor position " ||+-- A backslash has no special meaning in mappings " |+-- :write updates alternative file name " +-- :read updates alternative file name syntax enable " syntax highlighting on syntax on " With a map leader it's possible to do extra key combinations " like <leader>w saves the current file let mapleader = "," let g:mapleader = "," " <Diff> 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 " 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 " <Common> set autochdir " always switch to the current file directory set backspace=indent,eol,start " make backspace a more flexible set nobackup " make no backup file set nowritebackup set clipboard+=unnamed " share windows clipboard set directory=/tmp " directory to place swap files in set fileformats=unix,dos,mac " support all three, in this order set hidden " you can change buffers without saving " (XXX: #VIM/tpope warns the line below could break things) set iskeyword+=_,$,@,%,# " none of these are word dividers set mouse=a " use mouse everywhere set noerrorbells " don't make noise set whichwrap=b,s,h,l,<,>,~,[,] " everything wraps " | | | | | | | | | " | | | | | | | | +-- "]" Insert and Replace " | | | | | | | +-- "[" Insert and Replace " | | | | | | +-- "~" Normal " | | | | | +-- <Right> Normal and Visual " | | | | +-- <Left> Normal and Visual " | | | +-- "l" Normal and Visual (not recommended) " | | +-- "h" Normal and Visual (not recommended) " | +-- <Space> Normal and Visual " +-- <BS> Normal and Visual set wildmenu " turn on command line completion wild style set wildignore=*.dll,*.o,*.obj,*.bak,*.exe,*.pyc " ignore these list file extensions set wildmode=list:longest " turn on wild mode huge list set history=1000 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " => VIM user interface """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Set 7 lines to the curors - when moving vertical.. set so=7 set ruler "Always show current position set cmdheight=1 "The commandbar height set ignorecase "Ignore case when searching 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 t_vb= set tm=500 set incsearch " BUT do highlight as you type you search phrase set laststatus=2 " always show the status line set lazyredraw " do not redraw while running macros set linespace=1 " insert 1 extra pixel line betweens rows " set list " we do what to show tabs, to ensure we get them out of my files " set listchars=tab:>-,trail:- " show tabs and trailing set matchtime=5 " how many tenths of a second to blink matching brackets for "set nohlsearch " do not highlight searched for phrases set hlsearch set wrapscan set nostartofline " leave my cursor where it was set novisualbell " don't blink " set number " turn on line numbers set numberwidth=5 " We are good up to 99999 lines set report=0 " tell us when anything is changed via :... set scrolloff=8 " Keep 8 lines (top/bottom) for scope set shortmess=aOstT " shortens messages to avoid 'press a key' prompt set showcmd " show the command being typed set showmatch " show matching brackets set sidescrolloff=10 " Keep 5 lines at the size set statusline=%F%m%r%h%w[%L][%{&ff}]%y[%p%%][%04l,%04v] " | | | | | | | | | | | " | | | | | | | | | | + current column " | | | | | | | | | +-- current line " | | | | | | | | +-- current % into file " | | | | | | | +-- current syntax in square brackets " | | | | | | +-- current fileformat " | | | | | +-- number of lines " | | | | +-- preview flag in square brackets " | | | +-- help flag in square brackets " | | +-- readonly flag in square brackets " | +-- rodified flag in square brackets " +-- full path to file in the buffer """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " => Colors and Fonts """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" syntax enable "Enable syntax hl " Set font according to system "#set gfn="DejaVu_Sans_Mono"\ 14 set gfn=DejaVu\ Sans\ Mono\ 16 set shell=/bin/bash if has("gui_running") set guioptions-=T set t_Co=256 set background=dark colorscheme pablo set nonu else colorscheme zellner set background=dark set nonu endif set encoding=utf8 try lang en_US catch endtry set ffs=unix,dos "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 formatoptions=rq set shiftwidth=4 set tabstop=4 " set smarttab set shiftround " set lbr " set tw=120 set smartcase set wrap "Wrap lines " set autoindent " set smartindent """""""""""""""""""""""""""""" " => 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 " <Plugin> TagList let Tlist_Show_One_File = 1 let Tlist_Exit_OnlyWindow = 1 "let Tlist_Show_Menu = 1 "let Tlist_Ctags_Cmd = 'C:\Utils\ctags.exe' nnoremap <silent> <F8> :TlistToggle<CR> " <Plugin> OmniCppCompletion set nocp map <C-F12> :! ctags -R --c++-kinds=+p --fields=+iaS --extra=+q . let OmniCpp_GlobalScopeSearch = 1 let OmniCpp_NamespaceSearch = 1 let OmniCpp_DisplayMode = 0 let OmniCpp_ShowScopeInAbbr = 0 let OmniCpp_ShowPrototypeInAbbr = 1 let OmniCpp_ShowAccess = 1 let OmniCpp_DefaultNamespaces = [] let OmniCpp_MayCompleteDot = 1 let OmniCpp_MayCompleteArrow = 1 let OmniCpp_MayCompleteScope = 1 let OmniCpp_SelectFirstItem = 2 let OmniCpp_LocalSearchDecl = 0 " <Plugin> Visual Mark if &bg == "dark" highlight SignColor ctermfg=white ctermbg=blue guifg=wheat guibg=peru else highlight SignColor ctermbg=white ctermfg=blue guibg=grey guifg=RoyalBlue3 endif """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " => 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> func! Cwd() let cwd = getcwd() return "e " . cwd 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 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " => 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:miniBufExplUseSingleClick = 1 " let g:miniBufExplMapWindowNavVim = 1 " let g:miniBufExplVSplit = 25 " let g:miniBufExplSplitBelow=1 " let g:bufExplorerSortBy = "name" " let g:miniBufExplMapWindowNavArrows = 1 " let g:miniBufExplMapCTabSwitchBufs = 1 " let g:miniBufExplModSelTarget = 1 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> " CTRL-X and SHIFT-Del are Cut vnoremap <C-X> "+x vnoremap <S-Del> "+x " CTRL-C and CTRL-Insert are Copy vnoremap <C-C> "+y vnoremap <C-Insert> "+y " CTRL-V and SHIFT-Insert are Paste map <C-V> "+gP map <S-Insert> "+gP cmap <C-V> <C-R>+ cmap <S-Insert> <C-R>+ " Pasting blockwise and linewise selections is not possible in Insert and " Visual mode without the +virtualedit feature. They are pasted as if they " were characterwise instead. " Uses the paste.vim autoload script. exe 'inoremap <script> <C-V>' paste#paste_cmd['i'] exe 'vnoremap <script> <C-V>' paste#paste_cmd['v'] imap <S-Insert> <C-V> vmap <S-Insert> <C-V> " Use CTRL-Q to do what CTRL-V used to do noremap <C-R> <C-V> " <GUI> set columns=80 set lines=80 "set window=40 "winpos 0 0 "au GUIEnter * simalt ~x " Maximum the initial window "set guifont=DejaVu_Sans_Mono:h12 " reference "set guifont=Lucida_Sans_Typewriter:h9:cANSI "set guioptions-=b " ??? "set guioptions-=T " toolbar "set guioptions+=r " right scrollbar "set guioptions+=L " left scrollbar "set guioptions+=m " menu "set guioptions=ce "" || "" |+-- use simple dialogs rather than pop-ups "" + use GUI tabs, not console style tabs "set background=dark "colorscheme torte set mousehide " hide the mouse cursor when typing set completeopt=longest,menuone inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>" nnoremap <Leader>d$ :<C-u>
转载请注明原文地址: https://www.6miu.com/read-32132.html

最新回复(0)