这里会显示出您选择的修订版和当前版本之间的差别。
— |
linux:vim:vimrc-example-cn [2011/01/23 08:07] (当前版本) |
||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== VIM配置文件vimrc中文改进版 ====== | ||
+ | |||
+ | 史上最强的vimrc文件,据说有800行,还是作者精简后的结果. | ||
+ | |||
+ | 我在尽可能保留原作者的创意的前提下做了些小的修正,主要的修改如下: | ||
+ | |||
+ | 增加了对win32系统的兼容,原来的vimrc文件只兼容linux和mac | ||
+ | |||
+ | 修正了一些快捷键,例如ctr-q被原作者用来搜索buffer,用过win32版本vim的都知道ctrl-q被用来作为块编辑的快捷键,所以ctrl-q是万万不能被移做他用的. | ||
+ | |||
+ | 去掉了colorscheme,原作者的colorscheme对我来说实在是太geeky,我想软件默认的colorscheme就该是最适合大多数人的. | ||
+ | |||
+ | 启用了swap文件,因为我的机器配置太低,而且我经常要编辑大文件 | ||
+ | |||
+ | 取消了所有和python有关的plugin,因为一些路径问题,也因为我觉得vim对python的支持够强大了(事实是,我缺乏用python写大项目的经验). | ||
+ | |||
+ | 增加了对中文编码的支持,参考了吴咏炜的一篇文章 | ||
+ | |||
+ | 兼容低版本vi,目前我在vim5.8.9, vim6.1,vim6.3, vim6.4,vim7.0, 上测试过。 | ||
+ | 其他一些通用性,兼容性的修正 | ||
+ | |||
+ | 去掉了输入([{时的自动填入右括号的功能,在我修改代码时增加很多麻烦. | ||
+ | |||
+ | 我强烈建议你通读这个vimrc文件,一定会很有收获的,至少我是如此. | ||
+ | |||
+ | <code vim> | ||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | " _ | ||
+ | " __ | | ||
+ | " / | / | ||
+ | " __ | | ||
+ | " by Amix - http://amix.dk/ | ||
+ | " | ||
+ | " Maintainer: Amir Salihefendic <amix3k at gmail.com> | ||
+ | " Version: 2.0 | ||
+ | " Last Change: 12/08/06 13:39:28 | ||
+ | " Fixed (win32 compatible) by: redguardtoo <chb_sh at gmail.com> | ||
+ | " This vimrc file is tested on platforms like win32,linux, cygwin,mingw | ||
+ | " and vim7.0, vim6.4, vim6.1, vim5.8.9 by redguardtoo | ||
+ | " | ||
+ | " Tip: | ||
+ | " If you find anything that you can't understand than do this: | ||
+ | " help keyword OR helpgrep keyword | ||
+ | " Example: | ||
+ | " Go into command-line mode and type helpgrep nocompatible, ie. | ||
+ | " :helpgrep nocompatible | ||
+ | " then press <leader>c to see the results, or :botright cw | ||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | |||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | " => General | ||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | "Get out of VI's compatible mode.. | ||
+ | set nocompatible | ||
+ | |||
+ | function! MySys() | ||
+ | if has("win32") | ||
+ | return "win32" | ||
+ | elseif has("unix") | ||
+ | return "unix" | ||
+ | else | ||
+ | return "mac" | ||
+ | endif | ||
+ | endfunction | ||
+ | "Set shell to be bash | ||
+ | if MySys() == "unix" || MySys() == "mac" | ||
+ | set shell=bash | ||
+ | else | ||
+ | "I have to run win32 python without cygwin | ||
+ | "set shell=E:cygwininsh | ||
+ | endif | ||
+ | |||
+ | "Sets how many lines of history VIM har to remember | ||
+ | set history=400 | ||
+ | |||
+ | "Enable filetype plugin | ||
+ | filetype on | ||
+ | if has("eval") && v:version>=600 | ||
+ | filetype plugin on | ||
+ | filetype indent on | ||
+ | endif | ||
+ | |||
+ | "Set to auto read when a file is changed from the outside | ||
+ | if exists("&autoread") | ||
+ | set autoread | ||
+ | endif | ||
+ | |||
+ | "Have the mouse enabled all the time: | ||
+ | set mouse=a | ||
+ | |||
+ | "Set mapleader | ||
+ | let mapleader = "," | ||
+ | let g:mapleader = "," | ||
+ | |||
+ | "Fast saving | ||
+ | nmap <leader>w :w!<cr> | ||
+ | |||
+ | |||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | " => Colors and Font | ||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | "Enable syntax hl | ||
+ | if MySys()=="unix" | ||
+ | if v:version<600 | ||
+ | if filereadable(expand("$VIM/syntax/syntax.vim")) | ||
+ | syntax on | ||
+ | endif | ||
+ | else | ||
+ | syntax on | ||
+ | endif | ||
+ | else | ||
+ | syntax on | ||
+ | endif | ||
+ | |||
+ | "internationalization | ||
+ | "I only work in Win2k Chinese version | ||
+ | if has("multi_byte") | ||
+ | set termencoding=chinese | ||
+ | set encoding=utf-8 | ||
+ | set fileencodings=ucs-bom,utf-8,chinese | ||
+ | endif | ||
+ | |||
+ | "if you use vim in tty, | ||
+ | "'uxterm -cjk' or putty with option 'Treat CJK ambiguous characters as wide' on | ||
+ | if exists("&ambiwidth") | ||
+ | set ambiwidth=double | ||
+ | endif | ||
+ | |||
+ | if has("gui_running") | ||
+ | set guioptions-=m | ||
+ | set guioptions-=T | ||
+ | set guioptions-=l | ||
+ | set guioptions-=L | ||
+ | set guioptions-=r | ||
+ | set guioptions-=R | ||
+ | |||
+ | if MySys()=="win32" | ||
+ | "start gvim maximized | ||
+ | if has("autocmd") | ||
+ | au GUIEnter * simalt ~x | ||
+ | endif | ||
+ | endif | ||
+ | "let psc_style='cool' | ||
+ | "colorscheme ps_color | ||
+ | "colorscheme default | ||
+ | else | ||
+ | "set background=dark | ||
+ | "colorscheme default | ||
+ | endif | ||
+ | |||
+ | "Some nice mapping to switch syntax (useful if one mixes different languages in one file) | ||
+ | map <leader>1 :set syntax=cheetah<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> | ||
+ | |||
+ | "Highlight current | ||
+ | if has("gui_running") | ||
+ | if exists("&cursorline") | ||
+ | set cursorline | ||
+ | endif | ||
+ | endif | ||
+ | |||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | " => Fileformat | ||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | "Favorite filetype | ||
+ | set ffs=unix,dos,mac | ||
+ | |||
+ | 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 | ||
+ | |||
+ | "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 | ||
+ | |||
+ | "Ignore case when searching | ||
+ | "set ignorecase | ||
+ | set incsearch | ||
+ | |||
+ | "Set magic on | ||
+ | set magic | ||
+ | |||
+ | "No sound on errors. | ||
+ | set noerrorbells | ||
+ | set novisualbell | ||
+ | set t_vb= | ||
+ | |||
+ | "show matching bracet | ||
+ | set showmatch | ||
+ | |||
+ | "How many tenths of a second to blink | ||
+ | set mat=4 | ||
+ | |||
+ | "Highlight search thing | ||
+ | set hlsearch | ||
+ | |||
+ | """""""""""""""""""""""""""""" | ||
+ | " => Statusline | ||
+ | """""""""""""""""""""""""""""" | ||
+ | "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+=%-14.(%l,%c%V%)\ %<%P " offset | ||
+ | |||
+ | " special statusbar for special window | ||
+ | if has("autocmd") | ||
+ | au FileType qf | ||
+ | \ if &buftype == "quickfix" | | ||
+ | \ setlocal statusline=%2*%-3.3n%0* | | ||
+ | \ setlocal statusline+=\ \[Compiler\ Messages\] | | ||
+ | \ setlocal statusline+=%=%2*\ %<%P | | ||
+ | \ endif | ||
+ | |||
+ | fun! FixMiniBufExplorerTitle() | ||
+ | if "-MiniBufExplorer-" == bufname("%") | ||
+ | setlocal statusline=%2*%-3.3n%0* | ||
+ | setlocal statusline+=\[Buffers\] | ||
+ | setlocal statusline+=%=%2*\ %<%P | ||
+ | endif | ||
+ | endfun | ||
+ | |||
+ | if v:version>=600 | ||
+ | au BufWinEnter * | ||
+ | \ let oldwinnr=winnr() | | ||
+ | \ windo call FixMiniBufExplorerTitle() | | ||
+ | \ exec oldwinnr . " wincmd w" | ||
+ | endif | ||
+ | endif | ||
+ | |||
+ | " Nice window title | ||
+ | if has('title') && (has('gui_running') || &title) | ||
+ | set titlestring= | ||
+ | set titlestring+=%f\ " file name | ||
+ | set titlestring+=%h%m%r%w " flag | ||
+ | set titlestring+=\ -\ %{v:progname} " program name | ||
+ | endif | ||
+ | |||
+ | |||
+ | |||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | " => Moving around and tab | ||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | "Map space to / and c-space to ? | ||
+ | map <space> / | ||
+ | |||
+ | "Smart way to move btw. window | ||
+ | map <C-j> <C-W>j | ||
+ | map <C-k> <C-W>k | ||
+ | map <C-h> <C-W>h | ||
+ | map <C-l> <C-W>l | ||
+ | |||
+ | "Actually, the tab does not switch buffers, but my arrow | ||
+ | "Bclose function ca 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 %<cr> | ||
+ | map <leader>tc :tabclose<cr> | ||
+ | map <leader>tm :tabmove | ||
+ | |||
+ | if v:version>=700 | ||
+ | set switchbuf=usetab | ||
+ | endif | ||
+ | |||
+ | if exists("&showtabline") | ||
+ | set stal=2 | ||
+ | endif | ||
+ | |||
+ | "Moving fast to front, back and 2 sides ;) | ||
+ | imap <m-$> <esc>$a | ||
+ | imap <m-0> <esc>0i | ||
+ | imap <D-$> <esc>$a | ||
+ | imap <D-0> <esc>0i | ||
+ | |||
+ | |||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | " => General Autocommand | ||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | "Switch to current dir | ||
+ | map <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> | ||
+ | imap <c-l> <esc>la | ||
+ | imap <c-h> <esc>ha | ||
+ | |||
+ | "Map auto complete of (, ", ', [ | ||
+ | "http://www.vim.org/tips/tip.php?tip_id=153 | ||
+ | " | ||
+ | |||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | " => General Abbrev | ||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | "Comment for C like language | ||
+ | if has("autocmd") | ||
+ | au BufNewFile,BufRead *.js,*.htc,*.c,*.tmpl,*.css ino $c /**<cr> **/<esc>O | ||
+ | endif | ||
+ | |||
+ | "My information | ||
+ | ia xdate <c-r>=strftime("%d/%m/%y %H:%M:%S")<cr> | ||
+ | "iab xname Amir Salihefendic | ||
+ | |||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | " => Editing mappings etc. | ||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | "Remap VIM 0 | ||
+ | map 0 ^ | ||
+ | |||
+ | "Move a line of text using control | ||
+ | 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 | ||
+ | |||
+ | |||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | " => Command-line config | ||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | func! Cwd() | ||
+ | let cwd = getcwd() | ||
+ | return "e " . cwd | ||
+ | endfunc | ||
+ | |||
+ | func! DeleteTillSlash() | ||
+ | let g:cmd = getcmdline() | ||
+ | if MySys() == "unix" || MySys() == "mac" | ||
+ | let g:cmd_edited = substitute(g:cmd, "(.*[/]).*", "", "") | ||
+ | else | ||
+ | let g:cmd_edited = substitute(g:cmd, "(.*[\]).*", "", "") | ||
+ | endif | ||
+ | if g:cmd == g:cmd_edited | ||
+ | if MySys() == "unix" || MySys() == "mac" | ||
+ | let g:cmd_edited = substitute(g:cmd, "(.*[/]).*/", "", "") | ||
+ | else | ||
+ | let g:cmd_edited = substitute(g:cmd, "(.*[\]).*[\]", "", "") | ||
+ | endif | ||
+ | endif | ||
+ | return g:cmd_edited | ||
+ | endfunc | ||
+ | |||
+ | func! CurrentFileDir(cmd) | ||
+ | return a:cmd . " " . expand("%:p:h") . "/" | ||
+ | endfunc | ||
+ | |||
+ | "cno $q <C->eDeleteTillSlash()<cr> | ||
+ | "cno $c e <C->eCurrentFileDir("e")<cr> | ||
+ | "cno $tc <C->eCurrentFileDir("tabnew")<cr> | ||
+ | cno $th tabnew ~/ | ||
+ | cno $td tabnew ~/Desktop/ | ||
+ | |||
+ | "Bash like | ||
+ | cno <C-A> <Home> | ||
+ | cno <C-E> <End> | ||
+ | cno <C-K> <C-U> | ||
+ | |||
+ | |||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | " => Buffer realted | ||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | "Fast open a buffer by search for a name | ||
+ | "map <c-q> :sb | ||
+ | |||
+ | "Open a dummy buffer for paste | ||
+ | map <leader>q :e ~/buffer<cr> | ||
+ | |||
+ | "Restore cursor to file position in previous editing session | ||
+ | set viminfo='10,"100,:20,%,n~/.viminfo | ||
+ | |||
+ | " Buffer - reverse everything ... :) | ||
+ | map <F9> ggVGg? | ||
+ | |||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | " => Files and backup | ||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | "Turn backup off | ||
+ | set nobackup | ||
+ | set nowb | ||
+ | "set noswapfile | ||
+ | |||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | " => Folding | ||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | "Enable folding, I find it very useful | ||
+ | if exists("&foldenable") | ||
+ | set fen | ||
+ | endif | ||
+ | |||
+ | if exists("&foldlevel") | ||
+ | set fdl=0 | ||
+ | endif | ||
+ | |||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | " => Text option | ||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | " python script | ||
+ | "set expandtab | ||
+ | set shiftwidth=2 | ||
+ | set softtabstop=2 | ||
+ | set tabstop=2 | ||
+ | set backspace=2 | ||
+ | set smarttab | ||
+ | set lbr | ||
+ | "set tw=500 | ||
+ | |||
+ | """""""""""""""""""""""""""""" | ||
+ | " => Indent | ||
+ | """""""""""""""""""""""""""""" | ||
+ | "Auto indent | ||
+ | set ai | ||
+ | |||
+ | "Smart indet | ||
+ | set si | ||
+ | |||
+ | "C-style indenting | ||
+ | set cindent | ||
+ | |||
+ | "Wrap line | ||
+ | set wrap | ||
+ | |||
+ | |||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | " => Spell checking | ||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | map <leader>sn ] | ||
+ | map <leader>sp [ | ||
+ | map <leader>sa zg | ||
+ | map <leader>s? z= | ||
+ | |||
+ | |||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | " => Plugin configuration | ||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | """""""""""""""""""""""""""""" | ||
+ | " => Yank Ring | ||
+ | """""""""""""""""""""""""""""" | ||
+ | map <leader>y :YRShow<cr> | ||
+ | |||
+ | """""""""""""""""""""""""""""" | ||
+ | " => File explorer | ||
+ | """""""""""""""""""""""""""""" | ||
+ | "Split vertically | ||
+ | let g:explVertical=1 | ||
+ | |||
+ | "Window size | ||
+ | let g:explWinSize=35 | ||
+ | |||
+ | let g:explSplitLeft=1 | ||
+ | let g:explSplitBelow=1 | ||
+ | |||
+ | "Hide some file | ||
+ | let g:explHideFiles='^.,.*.class$,.*.swp$,.*.pyc$,.*.swo$,.DS_Store$' | ||
+ | |||
+ | "Hide the help thing.. | ||
+ | let g:explDetailedHelp=0 | ||
+ | |||
+ | |||
+ | """""""""""""""""""""""""""""" | ||
+ | " => Minibuffer | ||
+ | """""""""""""""""""""""""""""" | ||
+ | let g:miniBufExplModSelTarget = 1 | ||
+ | let g:miniBufExplorerMoreThanOne = 0 | ||
+ | let g:miniBufExplModSelTarget = 0 | ||
+ | let g:miniBufExplUseSingleClick = 1 | ||
+ | let g:miniBufExplMapWindowNavVim = 1 | ||
+ | let g:miniBufExplVSplit = 25 | ||
+ | let g:miniBufExplSplitBelow=1 | ||
+ | |||
+ | "WindowZ | ||
+ | map <c-w><c-t> :WMToggle<cr> | ||
+ | |||
+ | let g:bufExplorerSortBy = "name" | ||
+ | |||
+ | |||
+ | """""""""""""""""""""""""""""" | ||
+ | " => Tag list (ctags) - not used | ||
+ | """""""""""""""""""""""""""""" | ||
+ | "let Tlist_Ctags_Cmd = "/sw/bin/ctags-exuberant" | ||
+ | "let Tlist_Sort_Type = "name" | ||
+ | "let Tlist_Show_Menu = 1 | ||
+ | "map <leader>t :Tlist<cr> | ||
+ | map <F3> :Tlist<cr> | ||
+ | |||
+ | |||
+ | """""""""""""""""""""""""""""" | ||
+ | " => LaTeX Suite thing | ||
+ | """""""""""""""""""""""""""""" | ||
+ | "set grepprg=grep -r -s -n | ||
+ | let g:Tex_DefaultTargetFormat="pdf" | ||
+ | let g:Tex_ViewRule_pdf='xpdf' | ||
+ | |||
+ | if has("autocmd") | ||
+ | "Binding | ||
+ | au BufRead *.tex map <silent><leader><space> :w!<cr> :silent! call Tex_RunLaTeX()<cr> | ||
+ | |||
+ | "Auto complete some things ;) | ||
+ | au BufRead *.tex ino <buffer> $i indent | ||
+ | au BufRead *.tex ino <buffer> $* cdot | ||
+ | au BufRead *.tex ino <buffer> $i item | ||
+ | au BufRead *.tex ino <buffer> $m [<cr>]<esc>O | ||
+ | endif | ||
+ | |||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | " => Filetype generic | ||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | " => Todo | ||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | "au BufNewFile,BufRead *.todo so ~/vim_local/syntax/amido.vim | ||
+ | |||
+ | """""""""""""""""""""""""""""" | ||
+ | " => VIM | ||
+ | """""""""""""""""""""""""""""" | ||
+ | if has("autocmd") && v:version>600 | ||
+ | au BufRead,BufNew *.vim map <buffer> <leader><space> :w!<cr>:source %<cr> | ||
+ | endif | ||
+ | |||
+ | """""""""""""""""""""""""""""" | ||
+ | " => 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 = 0 | ||
+ | let html_number_lines = 0 | ||
+ | let use_xhtml = 1 | ||
+ | |||
+ | |||
+ | """""""""""""""""""""""""""""" | ||
+ | " => Ruby & PHP section | ||
+ | """""""""""""""""""""""""""""" | ||
+ | """""""""""""""""""""""""""""" | ||
+ | " => Python section | ||
+ | """""""""""""""""""""""""""""" | ||
+ | ""Run the current buffer in python - ie. on leader+space | ||
+ | "au BufNewFile,BufRead *.py so ~/vim_local/syntax/python.vim | ||
+ | "au BufNewFile,BufRead *.py map <buffer> <leader><space> :w!<cr>:!python %<cr> | ||
+ | "au BufNewFile,BufRead *.py so ~/vim_local/plugin/python_fold.vim | ||
+ | |||
+ | ""Set some bindings up for 'compile' of python | ||
+ | "au BufNewFile,BufRead *.py set makeprg=python -c "import py_compile,sys; sys.stderr=sys.stdout; py_compile.compile(r'%')" | ||
+ | "au BufNewFile,BufRead *.py set efm=%C %.%#,%A File "%f", line %l%.%#,%Z%[%^ ]%@=%m | ||
+ | "au BufNewFile,BufRead *.py nmap <buffer> <F8> :w!<cr>:make<cr> | ||
+ | |||
+ | ""Python iMap | ||
+ | "au BufNewFile,BufRead *.py set cindent | ||
+ | "au BufNewFile,BufRead *.py ino <buffer> $r return | ||
+ | "au BufNewFile,BufRead *.py ino <buffer> $s self | ||
+ | "au BufNewFile,BufRead *.py ino <buffer> $c ##<cr>#<space><cr>#<esc>kla | ||
+ | "au BufNewFile,BufRead *.py ino <buffer> $i import | ||
+ | "au BufNewFile,BufRead *.py ino <buffer> $p print | ||
+ | "au BufNewFile,BufRead *.py ino <buffer> $d """<cr>"""<esc>O | ||
+ | |||
+ | ""Run in the Python interpreter | ||
+ | "function! Python_Eval_VSplit() range | ||
+ | " let src = tempname() | ||
+ | " let dst = tempname() | ||
+ | " execute ": " . a:firstline . "," . a:lastline . "w " . src | ||
+ | " execute ":!python " . src . " > " . dst | ||
+ | " execute ":pedit! " . dst | ||
+ | "endfunction | ||
+ | "au BufNewFile,BufRead *.py vmap <F7> :call Python_Eval_VSplit()<cr> | ||
+ | |||
+ | |||
+ | """""""""""""""""""""""""""""" | ||
+ | " => Cheetah section | ||
+ | """"""""""""""""""""""""""""""" | ||
+ | |||
+ | """"""""""""""""""""""""""""""" | ||
+ | " => Java section | ||
+ | """"""""""""""""""""""""""""""" | ||
+ | |||
+ | """""""""""""""""""""""""""""" | ||
+ | " => JavaScript section | ||
+ | """"""""""""""""""""""""""""""" | ||
+ | "au BufNewFile,BufRead *.js so ~/vim_local/syntax/javascript.vim | ||
+ | "function! JavaScriptFold() | ||
+ | " set foldmethod=marker | ||
+ | " set foldmarker={,} | ||
+ | " set foldtext=getline(v:foldstart) | ||
+ | "endfunction | ||
+ | "au BufNewFile,BufRead *.js call JavaScriptFold() | ||
+ | "au BufNewFile,BufRead *.js imap <c-t> console.log();<esc>hi | ||
+ | "au BufNewFile,BufRead *.js imap <c-a> alert();<esc>hi | ||
+ | "au BufNewFile,BufRead *.js set nocindent | ||
+ | "au BufNewFile,BufRead *.js ino <buffer> $r return | ||
+ | |||
+ | "au BufNewFile,BufRead *.js ino <buffer> $d //<cr>//<cr>//<esc>ka<space> | ||
+ | "au BufNewFile,BufRead *.js ino <buffer> $c /**<cr><space><cr>**/<esc>ka | ||
+ | |||
+ | |||
+ | if has("eval") && has("autocmd") | ||
+ | "vim 5.8.9 on mingw donot know what is <SID>, so I avoid to use function | ||
+ | "c/cpp | ||
+ | fun! Abbrev_cpp() | ||
+ | ia <buffer> cci const_iterator | ||
+ | ia <buffer> ccl cla | ||
+ | ia <buffer> cco const | ||
+ | ia <buffer> cdb bug | ||
+ | ia <buffer> cde throw | ||
+ | ia <buffer> cdf /** file<CR><CR>/<Up> | ||
+ | ia <buffer> cdg ingroup | ||
+ | ia <buffer> cdn /** Namespace <namespace<CR><CR>/<Up> | ||
+ | ia <buffer> cdp param | ||
+ | ia <buffer> cdt test | ||
+ | ia <buffer> cdx /**<CR><CR>/<Up> | ||
+ | ia <buffer> cit iterator | ||
+ | ia <buffer> cns Namespace ianamespace | ||
+ | ia <buffer> cpr protected | ||
+ | ia <buffer> cpu public | ||
+ | ia <buffer> cpv private | ||
+ | ia <buffer> csl std::list | ||
+ | ia <buffer> csm std::map | ||
+ | ia <buffer> css std::string | ||
+ | ia <buffer> csv std::vector | ||
+ | ia <buffer> cty typedef | ||
+ | ia <buffer> cun using Namespace ianamespace | ||
+ | ia <buffer> cvi virtual | ||
+ | ia <buffer> #i #include | ||
+ | ia <buffer> #d #define | ||
+ | endfunction | ||
+ | |||
+ | fun! Abbrev_java() | ||
+ | ia <buffer> #i import | ||
+ | ia <buffer> #p System.out.println | ||
+ | ia <buffer> #m public static void main(String[] args) | ||
+ | endfunction | ||
+ | |||
+ | fun! Abbrev_python() | ||
+ | ia <buffer> #i import | ||
+ | ia <buffer> #p print | ||
+ | ia <buffer> #m if __name__=="__main": | ||
+ | endfunction | ||
+ | augroup abbreviation | ||
+ | au! | ||
+ | au FileType cpp,c :call Abbrev_cpp() | ||
+ | au FileType java :call Abbrev_java() | ||
+ | au FileType python :call Abbrev_python() | ||
+ | augroup END | ||
+ | endif | ||
+ | |||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | " => MISC | ||
+ | """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
+ | "Remove the Windows ^M | ||
+ | noremap <Leader>m :%s/r//g<CR> | ||
+ | |||
+ | "Paste toggle - when pasting something in, don't indent. | ||
+ | "set pastetoggle=<F3> | ||
+ | |||
+ | "Remove indenting on empty line | ||
+ | map <F2> :%s/\s*$//g<cr>:noh<cr>'' | ||
+ | |||
+ | "Super paste | ||
+ | ino <C-v> <esc>:set paste<cr>mui<C-R>+<esc>mv'uV'v=:set nopaste<cr> | ||
+ | </code> | ||
+ | |||
+ | ===== 参考 ===== | ||
+ | * http://blog.csdn.net/redguardtoo/archive/2006/09/03/1172136.aspx | ||
+ | |||