- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " Maintainer: amix the lucky stiff
- " - amix@amix.dk
- "
- " Version: 3.6 - 25/08/10 14:40:30
- "
- " Blog_post:
- " /blog/post/19486#The-ultimate-vim-configuration-vimrc
- " Syntax_highlighted:
- " /vim/vimrc.html
- " Raw_version:
- " /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
-
"
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 -
- " Makes it easy to get an overview of buffers:
- " info -> :e ~/.vim_runtime/plugin/minibufexpl.vim
- "
- " > bufexplorer -
- " Makes it easy to switch between buffers:
- " info -> :help bufExplorer
- "
- " > yankring.vim -
- " Emacs's killring, useful when using the clipboard:
- " info -> :help yankring
- "
- " > surround.vim -
- " Makes it easy to work with surrounding text:
- " info -> :help surround
- "
- " > snipMate.vim -
- " Snippets for many languages (similar to TextMate's):
- " info -> :help snipMate
- "
- " > mru.vim -
- " Plugin to manage Most Recently Used (MRU) files:
- " info -> :e ~/.vim_runtime/plugin/mru.vim
- "
- " > Command-T -
- " Command-T plug-in provides an extremely fast, intuitive mechanism for opening filesa:
- " info -> :help CommandT
- " screencast and web-help -> /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
w saves the current file - let mapleader = ","
- let g:mapleader = ","
- " Fast saving
-
nmap
w :w! - " Fast editing of the .vimrc
-
map
e :e! ~/.vim_runtime/vimrc - " 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
* :call VisualSearch('f') -
vnoremap
# :call VisualSearch('b') - " When you press gv you vimgrep after the selected text
-
vnoremap
gv :call VisualSearch('gv') -
map
g :vimgrep // **/*. - 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
eCurrentFileDir("e") - " $q is super useful when browsing on the command line
-
cno $q
eDeleteTillSlash() - " Bash like keys for the command line
-
cnoremap
-
cnoremap
-
cnoremap
-
cnoremap
-
cnoremap
- " 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
/ -
map
? -
map
:noh - " Smart way to move btw. windows
-
map
j -
map
k -
map
h -
map
l - " Close the current buffer
-
map
bd :Bclose - " Close all the buffers
-
map
ba :1,300 bd! - " Use the arrows to something usefull
-
map
:bn -
map
:bp - " Tab configuration
-
map
tn :tabnew -
map
te :tabedit -
map
tc :tabclose -
map
tm :tabmove -
" When pressing
cd switch to the directory of the open buffer -
map
cd :cd %:p:h -
command! Bclose call
BufcloseCloseIt() -
function!
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
`>a) ` -
vnoremap $2
`>a] ` -
vnoremap $3
`>a} ` -
vnoremap $$
`>a" ` -
vnoremap $q
`>a' ` -
vnoremap $e
`>a" ` - " Map auto complete of (, ", ', [
-
inoremap $1 ()
i -
inoremap $2 []
i -
inoremap $3 {}
i -
inoremap $4 {
o} O -
inoremap $q ''
i -
inoremap $e ""
i -
inoremap $t <>
i - """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " => General Abbrevs
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
-
iab xdate
=strftime("%d/%m/%y %H:%M:%S") - """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " => Editing mappings
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- "Remap VIM 0
- map 0 ^
- "Move a line of text using ALT+[jk] or Comamnd+[jk] on mac
-
nmap
mz:m+ `z -
nmap
mz:m-2 `z -
vmap
:m'>+ ` mzgv`yo`z -
vmap
:m'<-2 `>my` - if MySys() == "mac"
- nmap
- nmap
- vmap
- vmap
- 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
cc :botright cope - map
n :cn - map
p :cp - """"""""""""""""""""""""""""""
- " => bufExplorer plugin
- """"""""""""""""""""""""""""""
- let g:bufExplorerDefaultHelp=0
- let g:bufExplorerShowRelativePath=1
- map
o :BufExplorer - """"""""""""""""""""""""""""""
- " => 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
u :TMiniBufExplorer - """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " => Omni complete functions
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- autocmd FileType css set omnifunc=csscomplete#CompleteCSS
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- " => Spell checking
- """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
- "Pressing ,ss will toggle and untoggle spell checking
- map
ss :setlocal spell! - "Shortcuts using
- map
sn ]s - map
sp [s - map
sa zg - map
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
$r return - au FileType python inoremap
$i import - au FileType python inoremap
$p print - au FileType python inoremap
$f #--- PH ---------------------------------------------- FP2xi - au FileType python map
1 /class - au FileType python map
2 /def - au FileType python map
C ?class - au FileType python map
D ?def - """"""""""""""""""""""""""""""
- " => JavaScript section
- """""""""""""""""""""""""""""""
- au FileType javascript call JavaScriptFold()
- au FileType javascript setl fen
- au FileType javascript setl nocindent
- au FileType javascript imap
AJS.log(); hi - au FileType javascript imap
alert(); hi - au FileType javascript inoremap
$r return - au FileType javascript inoremap
$f //--- PH ---------------------------------------------- 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
f :MRU - """"""""""""""""""""""""""""""
- " => Command-T
- """"""""""""""""""""""""""""""
- let g:CommandTMaxHeight = 15
- set wildignore+=*.o,*.obj,.git,*.pyc
- noremap
j :CommandT - noremap
y :CommandTFlush - """"""""""""""""""""""""""""""
- " => 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
m mmHmt:%s/ //ge 'tzt'm - "Quickly open a buffer for scripbble
- map
q :e ~/buffer - au BufRead,BufNewFile ~/buffer iab
xh1 =========================================== - map
pp :setlocal paste! - map
bb :cd ..
链接地址: