VIM配置文件vimrc

 

Ubuntu 默认情况下只安装tiny-vim , 只要运行 sudo apt-get install vim 安装完整的vim就好了


.vimrc 下载

 

[python]  view plain copy print ?
 
  1. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  2. " Author: sunboy_2050 
  3. " Version: 1.0 
  4. " Last Change: 2011-11-11 11:11:11 
  5. "
  6. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  7.   
  8. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  9. " General 
  10. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  11. "Get out of VI's compatible mode..  
  12. set nocompatible  
  13.   
  14. " Platform  
  15. function! MySys()  
  16.   return "linux"  
  17. endfunction  
  18.   
  19. "Sets how many lines of history VIM har to remember  
  20. set history=400  
  21.   
  22. " Chinese  
  23. if MySys() == "windows"  
  24.    "set encoding=utf-8  
  25.    "set langmenu=zh_CN.UTF-8  
  26.    "language message zh_CN.UTF-8  
  27.    "set fileencodings=ucs-bom,utf-8,gb18030,cp936,big5,euc-jp,euc-kr,latin1  
  28. endif  
  29.   
  30. "Enable filetype plugin  
  31. filetype plugin on  
  32. filetype indent on  
  33.   
  34. "Set to auto read when a file is changed from the outside  
  35. set autoread  
  36.   
  37. "Have the mouse enabled all the time:  
  38. set mouse=a  
  39.   
  40. "Set mapleader  
  41. let mapleader = ","  
  42. let g:mapleader = ","  
  43.   
  44. "Fast saving  
  45. nmap <silent> <leader>ww :w<cr>  
  46. nmap <silent> <leader>wf :w!<cr>  
  47.   
  48. "Fast quiting  
  49. nmap <silent> <leader>qw :wq<cr>  
  50. nmap <silent> <leader>qf :q!<cr>  
  51. nmap <silent> <leader>qq :q<cr>  
  52. nmap <silent> <leader>qa :qa<cr>  
  53.   
  54. "Fast remove highlight search  
  55. nmap <silent> <leader><cr> :noh<cr>  
  56.   
  57. "Fast redraw  
  58. nmap <silent> <leader>rr :redraw!<cr>  
  59.   
  60. " Switch to buffer according to file name  
  61. function! SwitchToBuf(filename)  
  62.     "let fullfn = substitute(a:filename, "^\\~/", $HOME . "/", "")  
  63.     " find in current tab  
  64.     let bufwinnr = bufwinnr(a:filename)  
  65.     if bufwinnr != -1  
  66.         exec bufwinnr . "wincmd w"  
  67.         return  
  68.     else  
  69.         " find in each tab  
  70.         tabfirst  
  71.         let tab = 1  
  72.         while tab <= tabpagenr("{1}quot;)  
  73.             let bufwinnr = bufwinnr(a:filename)  
  74.             if bufwinnr != -1  
  75.                 exec "normal " . tab . "gt"  
  76.                 exec bufwinnr . "wincmd w"  
  77.                 return  
  78.             endif  
  79.             tabnext  
  80.             let tab = tab + 1  
  81.         endwhile  
  82.         " not exist, new tab  
  83.         exec "tabnew " . a:filename  
  84.     endif  
  85. endfunction  
  86.   
  87. "Fast edit vimrc  
  88. if MySys() == 'linux'  
  89.     "Fast reloading of the .vimrc  
  90.     map <silent> <leader>ss :source ~/.vimrc<cr>  
  91.     "Fast editing of .vimrc  
  92.     map <silent> <leader>ee :call SwitchToBuf("~/.vimrc")<cr>  
  93.     "When .vimrc is edited, reload it  
  94.     autocmd! bufwritepost .vimrc source ~/.vimrc  
  95. elseif MySys() == 'windows'  
  96.     " Set helplang  
  97.     set helplang=cn  
  98.     "Fast reloading of the _vimrc  
  99.     map <silent> <leader>ss :source ~/_vimrc<cr>  
  100.     "Fast editing of _vimrc  
  101.     map <silent> <leader>ee :call SwitchToBuf("~/_vimrc")<cr>  
  102.     "When _vimrc is edited, reload it  
  103.     autocmd! bufwritepost _vimrc source ~/_vimrc  
  104.     "Fast copying from linux  
  105.     func! CopyFromZ()  
  106.       autocmd! bufwritepost _vimrc  
  107.       exec 'split y:/.vimrc'  
  108.       exec 'normal 17G'  
  109.       exec 's/return "linux"/return "windows"/'  
  110.       exec 'w! ~/_vimrc'  
  111.       exec 'normal u'  
  112.       exec 'q'  
  113.     endfunc  
  114.     nnoremap <silent> <leader>uu :call CopyFromZ()<cr>:so ~/_vimrc<cr>  
  115. endif  
  116.   
  117. " For windows version  
  118. if MySys() == 'windows'  
  119.     source $VIMRUNTIME/mswin.vim  
  120.     behave mswin  
  121.   
  122.     set diffexpr=MyDiff()  
  123.     function! MyDiff()  
  124.         let opt = '-a --binary '  
  125.         if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif  
  126.         if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif  
  127.         let arg1 = v:fname_in  
  128.         if arg1 =~ ' ' | let arg1 = '"''"' . arg1 . '"' | endif  
  129.         let arg2 = v:fname_new  
  130.         if arg2 =~ ' ' | let arg2 = '"''"' . arg2 . '"' | endif  
  131.         let arg3 = v:fname_out  
  132.         if arg3 =~ ' ' | let arg3 = '"''"' . arg3 . '"' | endif  
  133.         let eq = ''  
  134.         if $VIMRUNTIME =~ ' '  
  135.             if &sh =~ '\<cmd'  
  136.                 let cmd = '""' . $VIMRUNTIME . '\diff"'  
  137.                 let eq = '"''"' 
  138.             else 
  139.                 let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"' 
  140.             endif 
  141.         else 
  142.             let cmd = $VIMRUNTIME . '\diff' 
  143.         endif 
  144.         silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq 
  145.     endfunction 
  146. endif 
  147.  
  148. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  149. " Colors and Fonts 
  150. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  151.  
  152. "Set font 
  153. "if MySys() == "linux" 
  154. "  set gfn=Monospace\ 11 
  155. "endif 
  156.  
  157. " Avoid clearing hilight definition in plugins 
  158. if !exists("g:vimrc_loaded") 
  159.     "Enable syntax hl 
  160.     syntax enable 
  161.  
  162.     " color scheme 
  163.     if has("gui_running") 
  164.         set guioptions-=T 
  165.         set guioptions-=m 
  166.         set guioptions-=L 
  167.         set guioptions-=r 
  168.         colorscheme darkblue_my 
  169.         "hi normal guibg=#294d4a 
  170.     else 
  171.         "colorscheme desert_my" 
  172.     endif " has 
  173. endif " exists(...) 
  174.  
  175. "Some nice mapping to switch syntax (useful if one mixes different languages in one file) 
  176. map <leader>1 :set syntax=c<cr> 
  177. map <leader>2 :set syntax=xhtml<cr> 
  178. map <leader>3 :set syntax=python<cr> 
  179. map <leader>4 :set ft=javascript<cr> 
  180. map <leader>$ :syntax sync fromstart<cr> 
  181.  
  182. autocmd BufEnter * :syntax sync fromstart 
  183.  
  184. "Highlight current 
  185. "if has("gui_running") 
  186. "  set cursorline 
  187. "  hi cursorline guibg=#333333 
  188. "  hi CursorColumn guibg=#333333 
  189. "endif 
  190.  
  191. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  192. " Fileformats 
  193. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  194. "Favorite filetypes 
  195. set ffs=unix,dos 
  196.  
  197. nmap <leader>fd :se ff=dos<cr> 
  198. nmap <leader>fu :se ff=unix<cr> 
  199.  
  200. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  201. " VIM userinterface 
  202. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  203. "Set 7 lines to the curors - when moving vertical.. 
  204. "set so=7 
  205.  
  206. " Maximum window when GUI running 
  207. if has("gui_running") 
  208.   set lines=9999 
  209.   set columns=9999 
  210. endif 
  211.  
  212. "Turn on WiLd menu 
  213. set wildmenu 
  214.  
  215. "Always show current position 
  216. set ruler 
  217.  
  218. "The commandbar is 2 high 
  219. set cmdheight=2 
  220.  
  221. "Show line number 
  222. set nu 
  223.  
  224. "Do not redraw, when running macros.. lazyredraw 
  225. set lz 
  226.  
  227. "Change buffer - without saving 
  228. "set hid 
  229.  
  230. "Set backspace 
  231. set backspace=eol,start,indent 
  232.  
  233. "Bbackspace and cursor keys wrap to 
  234. "set whichwrap+=<,>,h,l 
  235. set whichwrap+=<,> 
  236.  
  237. "Ignore case when searching 
  238. "set ignorecase 
  239.  
  240. "Include search 
  241. set incsearch 
  242.  
  243. "Highlight search things 
  244. set hlsearch 
  245.  
  246. "Set magic on 
  247. set magic 
  248.  
  249. "No sound on errors. 
  250. set noerrorbells 
  251. set novisualbell 
  252. set t_vb= 
  253.  
  254. "show matching bracets 
  255. "set showmatch 
  256.  
  257. "How many tenths of a second to blink 
  258. "set mat=2 
  259.  
  260.   """""""""""""""""""""""""""""" 
  261.   " Statusline 
  262.   """""""""""""""""""""""""""""" 
  263.   "Always hide the statusline 
  264.   set laststatus=2 
  265.  
  266.   function! CurDir() 
  267.      let curdir = substitute(getcwd(), '/home/easwy/', "~/", "g") 
  268.      return curdir 
  269.   endfunction 
  270.  
  271.   "Format the statusline 
  272.   "set statusline=\ %F%m%r%h\ %w\ \ CWD:\ %r%{CurDir()}%h\ \ \ Line:\ %l/%L:%c 
  273.  
  274.  
  275.  
  276. """""""""""""""""""""""""""""" 
  277. " Visual 
  278. """""""""""""""""""""""""""""" 
  279. " From an idea by Michael Naumann 
  280. function! VisualSearch(direction) range 
  281.   let l:saved_reg = @" 
  282.   execute "normal! vgvy" 
  283.   let l:pattern = escape(@", '\\/.*$^~[]') 
  284.   let l:pattern = substitute(l:pattern, "\n{1}quot;, "", "") 
  285.   if a:direction == 'b' 
  286.     execute "normal ?" . l:pattern . "^M" 
  287.   else 
  288.     execute "normal /" . l:pattern . "^M" 
  289.   endif 
  290.   let @/ = l:pattern 
  291.   let @" = l:saved_reg 
  292. endfunction 
  293.  
  294. "Basically you press * or # to search for the current selection !! Really useful 
  295. vnoremap <silent> * :call VisualSearch('f')<CR> 
  296. vnoremap <silent> # :call VisualSearch('b')<CR> 
  297.  
  298.  
  299. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  300. " Moving around and tabs 
  301. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  302. "Map space to / and c-space to ? 
  303. "map <space> / 
  304. "map <c-space> ? 
  305.  
  306. "Smart way to move btw. windows 
  307. nmap <C-j> <C-W>j 
  308. nmap <C-k> <C-W>k 
  309. nmap <C-h> <C-W>h 
  310. nmap <C-l> <C-W>l 
  311.  
  312. "Actually, the tab does not switch buffers, but my arrows 
  313. "Bclose function can be found in "Buffer related" section 
  314. map <leader>bd :Bclose<cr> 
  315. "map <down> <leader>bd 
  316.  
  317. "Use the arrows to something usefull 
  318. "map <right> :bn<cr> 
  319. "map <left> :bp<cr> 
  320.  
  321. "Tab configuration 
  322. map <leader>tn :tabnew 
  323. map <leader>te :tabedit 
  324. map <leader>tc :tabclose<cr> 
  325. map <leader>tm :tabmove 
  326. try 
  327.   set switchbuf=useopen 
  328.   set stal=1 
  329. catch 
  330. endtry 
  331.  
  332. "Moving fast to front, back and 2 sides ;) 
  333. imap <m-{1}gt; <esc>$a 
  334. imap <m-0> <esc>0i 
  335.  
  336. "Switch to current dir 
  337. map <silent> <leader>cd :cd %:p:h<cr> 
  338.  
  339. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  340. " Parenthesis/bracket expanding 
  341. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  342. vnoremap @1 <esc>`>a)<esc>`<i(<esc> 
  343. ") 
  344. vnoremap @2 <esc>`>a]<esc>`<i[<esc> 
  345. vnoremap @3 <esc>`>a}<esc>`<i{<esc> 
  346. vnoremap @$ <esc>`>a"<esc>`<i"<esc> 
  347. vnoremap @q <esc>`>a'<esc>`<i'<esc> 
  348. vnoremap @w <esc>`>a"<esc>`<i"<esc> 
  349.  
  350. "Map auto complete of (, ", ', [ 
  351. inoremap @1 ()<esc>:let leavechar=")"<cr>i 
  352. inoremap @2 []<esc>:let leavechar="]"<cr>i 
  353. inoremap @3 {}<esc>:let leavechar="}"<cr>i 
  354. inoremap @4 {<esc>o}<esc>:let leavechar="}"<cr>O 
  355. inoremap @q ''<esc>:let leavechar="'"<cr>i 
  356. inoremap @w ""<esc>:let leavechar='"'<cr>i  
  357. "au BufNewFile,BufRead *.\(vim\)\@! inoremap " ""<esc>:let leavechar='"'<cr>i  
  358. "au BufNewFile,BufRead *.\(txt\)\@! inoremap ' ''<esc>:let leavechar="'"<cr>i  
  359.   
  360. "imap <m-l> <esc>:exec "normal f" . leavechar<cr>a  
  361. "imap <d-l> <esc>:exec "normal f" . leavechar<cr>a  
  362.   
  363.   
  364. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  365. " General Abbrevs 
  366. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  367. "My information  
  368. iab xdate <c-r>=strftime("%c")<cr>  
  369. iab xname Easwy Yang  
  370.   
  371.   
  372. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  373. " Editing mappings etc. 
  374. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  375.   
  376. func! DeleteTrailingWS()  
  377.   exe "normal mz"  
  378.   %s/\s\+$//ge  
  379.   nohl  
  380.   exe "normal `z"  
  381. endfunc  
  382.   
  383. " do not automaticlly remove trailing whitespace  
  384. "autocmd BufWrite *.[ch] :call DeleteTrailingWS()  
  385. "autocmd BufWrite *.cc :call DeleteTrailingWS()  
  386. "autocmd BufWrite *.txt :call DeleteTrailingWS()  
  387. nmap <silent> <leader>ws :call DeleteTrailingWS()<cr>:w<cr>  
  388. "nmap <silent> <leader>ws! :call DeleteTrailingWS()<cr>:w!<cr>  
  389.   
  390. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  391. " Command-line config 
  392. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  393. "Bash like  
  394. cnoremap <C-A>    <Home>  
  395. cnoremap <C-E>    <End>  
  396. cnoremap <C-K>    <C-U>  
  397.   
  398. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  399. " Buffer realted 
  400. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  401. "Open a dummy buffer for paste  
  402. map <leader>es :tabnew<cr>:setl buftype=nofile<cr>  
  403. if MySys() == "linux"  
  404. map <leader>ec :tabnew ~/tmp/scratch.txt<cr>  
  405. else  
  406. map <leader>ec :tabnew $TEMP/scratch.txt<cr>  
  407. endif  
  408.   
  409. "Restore cursor to file position in previous editing session  
  410. set viminfo='10,\"100,:20,n~/.viminfo  
  411. au BufReadPost * if line("'\"") > 0|if line("'\"") <= line("{1}quot;)|exe("norm '\"")|else|exe "norm {1}quot;|endif|endif  
  412.   
  413. " Don't close window, when deleting a buffer  
  414. command! Bclose call <SID>BufcloseCloseIt()  
  415.   
  416. function! <SID>BufcloseCloseIt()  
  417.    let l:currentBufNum = bufnr("%")  
  418.    let l:alternateBufNum = bufnr("#")  
  419.   
  420.    if buflisted(l:alternateBufNum)  
  421.      buffer #  
  422.    else  
  423.      bnext  
  424.    endif  
  425.   
  426.    if bufnr("%") == l:currentBufNum  
  427.      new  
  428.    endif  
  429.   
  430.    if buflisted(l:currentBufNum)  
  431.      execute("bdelete! ".l:currentBufNum)  
  432.    endif  
  433. endfunction  
  434.   
  435. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  436. " Session options 
  437. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  438. set sessionoptions-=curdir  
  439. set sessionoptions+=sesdir  
  440.   
  441. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  442. " Files and backups 
  443. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  444. "Turn backup off  
  445. set nobackup  
  446. set nowb  
  447. "set noswapfile  
  448.   
  449.   
  450. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  451. " Folding 
  452. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  453. "Enable folding, I find it very useful  
  454. "set fen  
  455. "set fdl=0  
  456. nmap <silent> <leader>zo zO  
  457. vmap <silent> <leader>zo zO  
  458.   
  459.   
  460. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  461. " Text options 
  462. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  463. set expandtab  
  464. set shiftwidth=4  
  465.   
  466. map <leader>t2 :set shiftwidth=2<cr>  
  467. map <leader>t4 :set shiftwidth=4<cr>  
  468. au FileType html,python,vim,javascript setl shiftwidth=2  
  469. "au FileType html,python,vim,javascript setl tabstop=2  
  470. au FileType java,c setl shiftwidth=4  
  471. "au FileType java setl tabstop=4  
  472. au FileType txt setl lbr  
  473. au FileType txt setl tw=78  
  474.   
  475. set smarttab  
  476. "set lbr  
  477. "set tw=78  
  478.   
  479.    """"""""""""""""""""""""""""""  
  480.    " Indent  
  481.    """"""""""""""""""""""""""""""  
  482.    "Auto indent  
  483.    set ai  
  484.   
  485.    "Smart indet  
  486.    set si  
  487.   
  488.    "C-style indeting  
  489.    set cindent  
  490.   
  491.    "Wrap lines  
  492.    set wrap  
  493.   
  494.   
  495. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  496. " Spell checking 
  497. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  498. map <leader>sn ]s  
  499. map <leader>sp [s  
  500. map <leader>sa zg  
  501. map <leader>s? z=  
  502.   
  503. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  504. " Complete 
  505. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  506. " options  
  507. set completeopt=menu  
  508. set complete-=u  
  509. set complete-=i  
  510.   
  511. " mapping  
  512. inoremap <expr> <CR>       pumvisible()?"\<C-Y>":"\<CR>"  
  513. inoremap <expr> <C-J>      pumvisible()?"\<PageDown>\<C-N>\<C-P>":"\<C-X><C-O>"  
  514. inoremap <expr> <C-K>      pumvisible()?"\<PageUp>\<C-P>\<C-N>":"\<C-K>"  
  515. inoremap <expr> <C-U>      pumvisible()?"\<C-E>":"\<C-U>"  
  516. inoremap <C-]>             <C-X><C-]>  
  517. inoremap <C-F>             <C-X><C-F>  
  518. inoremap <C-D>             <C-X><C-D>  
  519. inoremap <C-L>             <C-X><C-L>  
  520.   
  521. " Enable syntax  
  522. if has("autocmd") && exists("+omnifunc")  
  523.   autocmd Filetype *  
  524.         \if &omnifunc == "" |  
  525.         \  setlocal omnifunc=syntaxcomplete#Complete |  
  526.         \endif  
  527. endif  
  528.   
  529. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  530. " cscope setting 
  531. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  532. if has("cscope")  
  533.   if MySys() == "linux"  
  534.     set csprg=/usr/bin/cscope  
  535.   else  
  536.     set csprg=cscope  
  537.   endif  
  538.   set csto=1  
  539.   set cst  
  540.   set nocsverb  
  541.   " add any database in current directory  
  542.   if filereadable("cscope.out")  
  543.       cs add cscope.out  
  544.   endif  
  545.   set csverb  
  546. endif  
  547.   
  548. nmap <C-@>s :cs find s <C-R>=expand("<cword>")<CR><CR>  
  549. nmap <C-@>g :cs find g <C-R>=expand("<cword>")<CR><CR>  
  550. nmap <C-@>c :cs find c <C-R>=expand("<cword>")<CR><CR>  
  551. nmap <C-@>t :cs find t <C-R>=expand("<cword>")<CR><CR>  
  552. nmap <C-@>e :cs find e <C-R>=expand("<cword>")<CR><CR>  
  553. nmap <C-@>f :cs find f <C-R>=expand("<cfile>")<CR><CR>  
  554. nmap <C-@>i :cs find i ^<C-R>=expand("<cfile>")<CR>{1}lt;CR>  
  555. nmap <C-@>d :cs find d <C-R>=expand("<cword>")<CR><CR>  
  556.   
  557. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  558. " Plugin configuration 
  559. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  560.    """"""""""""""""""""""""""""""  
  561.    " Super Tab  
  562.    """"""""""""""""""""""""""""""  
  563.    "let g:SuperTabDefaultCompletionType = "<C-X><C-O>"  
  564.    let g:SuperTabDefaultCompletionType = "<C-P>"  
  565.   
  566.    """"""""""""""""""""""""""""""  
  567.    " yank ring setting  
  568.    """"""""""""""""""""""""""""""  
  569.    map <leader>yr :YRShow<cr>  
  570.   
  571.    """"""""""""""""""""""""""""""  
  572.    " file explorer setting  
  573.    """"""""""""""""""""""""""""""  
  574.    "Split vertically  
  575.    let g:explVertical=1  
  576.   
  577.    "Window size  
  578.    let g:explWinSize=35  
  579.   
  580.    let g:explSplitLeft=1  
  581.    let g:explSplitBelow=1  
  582.   
  583.    "Hide some files  
  584.    let g:explHideFiles='^\.,.*\.class$,.*\.swp$,.*\.pyc$,.*\.swo$,\.DS_Store  
[python]  view plain copy print ?
 
  1. "Hide the help thing..  
  2.    let g:explDetailedHelp=0  
  3.   
  4.   
  5.   
  6.   
  7.    """"""""""""""""""""""""""""""  
  8.    " minibuffer setting  
  9.    """"""""""""""""""""""""""""""  
  10.    let loaded_minibufexplorer = 1         " *** Disable minibuffer plugin  
  11.    let g:miniBufExplorerMoreThanOne = 2   " Display when more than 2 buffers  
  12.    let g:miniBufExplSplitToEdge = 1       " Always at top  
  13.    let g:miniBufExplMaxSize = 3           " The max height is 3 lines  
  14.    let g:miniBufExplMapWindowNavVim = 1   " map CTRL-[hjkl]  
  15.    let g:miniBufExplUseSingleClick = 1    " select by single click  
  16.    let g:miniBufExplModSelTarget = 1      " Dont change to unmodified buffer  
  17.    let g:miniBufExplForceSyntaxEnable = 1 " force syntax on  
  18.    "let g:miniBufExplVSplit = 25  
  19.    "let g:miniBufExplSplitBelow = 0  
  20.   
  21.   
  22.    autocmd BufRead,BufNew :call UMiniBufExplorer  
  23.   
  24.   
  25.    """"""""""""""""""""""""""""""  
  26.    " bufexplorer setting  
  27.    """"""""""""""""""""""""""""""  
  28.    let g:bufExplorerDefaultHelp=1       " Do not show default help.  
  29.    let g:bufExplorerShowRelativePath=1  " Show relative paths.  
  30.    let g:bufExplorerSortBy='mru'        " Sort by most recently used.  
  31.    let g:bufExplorerSplitRight=0        " Split left.  
  32.    let g:bufExplorerSplitVertical=1     " Split vertically.  
  33.    let g:bufExplorerSplitVertSize = 30  " Split width  
  34.    let g:bufExplorerUseCurrentWindow=1  " Open in new window.  
  35.    let g:bufExplorerMaxHeight=13        " Max height  
  36.   
  37.   
  38.    """"""""""""""""""""""""""""""  
  39.    " taglist setting  
  40.    """"""""""""""""""""""""""""""  
  41.    if MySys() == "windows"  
  42.      let Tlist_Ctags_Cmd = 'ctags'  
  43.    elseif MySys() == "linux"  
  44.      let Tlist_Ctags_Cmd = '/usr/bin/ctags'  
  45.    endif  
  46.    let Tlist_Show_One_File = 1  
  47.    let Tlist_Exit_OnlyWindow = 1  
  48.    let Tlist_Use_Right_Window = 1  
  49.    nmap <silent> <leader>tl :Tlist<cr>  
  50.   
  51.   
  52.    """"""""""""""""""""""""""""""  
  53.    " winmanager setting  
  54.    """"""""""""""""""""""""""""""  
  55.    let g:winManagerWindowLayout = "BufExplorer,FileExplorer|TagList"  
  56.    let g:winManagerWidth = 30  
  57.    let g:defaultExplorer = 0  
  58.    nmap <C-W><C-F> :FirstExplorerWindow<cr>  
  59.    nmap <C-W><C-B> :BottomExplorerWindow<cr>  
  60.    nmap <silent> <leader>wm :WMToggle<cr>  
  61.    autocmd BufWinEnter \[Buf\ List\] setl nonumber  
  62.   
  63.   
  64.    """"""""""""""""""""""""""""""  
  65.    " netrw setting  
  66.    """"""""""""""""""""""""""""""  
  67.    let g:netrw_winsize = 30  
  68.    nmap <silent> <leader>fe :Sexplore!<cr>  
  69.   
  70.   
  71.    """"""""""""""""""""""""""""""  
  72.    " LaTeX Suite things  
  73.    """"""""""""""""""""""""""""""  
  74.    set grepprg=grep\ -nH\ $*  
  75.    let g:Tex_DefaultTargetFormat="pdf"  
  76.    let g:Tex_ViewRule_pdf='xpdf'  
  77.   
  78.   
  79.    "Bindings  
  80.    autocmd FileType tex map <silent><leader><space> :w!<cr> :silent! call Tex_RunLaTeX()<cr>  
  81.   
  82.   
  83.    "Auto complete some things ;)  
  84.    autocmd FileType tex inoremap $i \indent  
  85.    autocmd FileType tex inoremap $* \cdot  
  86.    autocmd FileType tex inoremap $i \item  
  87.    autocmd FileType tex inoremap $m \[<cr>\]<esc>O  
  88.   
  89.   
  90.   
  91.   
  92.    """"""""""""""""""""""""""""""  
  93.    " lookupfile setting  
  94.    """"""""""""""""""""""""""""""  
  95.    let g:LookupFile_MinPatLength = 2  
  96.    let g:LookupFile_PreserveLastPattern = 0  
  97.    let g:LookupFile_PreservePatternHistory = 0  
  98.    let g:LookupFile_AlwaysAcceptFirst = 1  
  99.    let g:LookupFile_AllowNewFiles = 0  
  100.    if filereadable("./filenametags")  
  101.        let g:LookupFile_TagExpr = '"./filenametags"'  
  102.    endif  
  103.    nmap <silent> <leader>lk <Plug>LookupFile<cr>  
  104.    nmap <silent> <leader>ll :LUBufs<cr>  
  105.    nmap <silent> <leader>lw :LUWalk<cr>  
  106.   
  107.   
  108.    " lookup file with ignore case  
  109.    function! LookupFile_IgnoreCaseFunc(pattern)  
  110.        let _tags = &tags  
  111.        try  
  112.            let &tags = eval(g:LookupFile_TagExpr)  
  113.            let newpattern = '\c' . a:pattern  
  114.            let tags = taglist(newpattern)  
  115.        catch  
  116.            echohl ErrorMsg | echo "Exception: " . v:exception | echohl NONE  
  117.            return ""  
  118.        finally  
  119.            let &tags = _tags  
  120.        endtry  
  121.   
  122.   
  123.        " Show the matches for what is typed so far.  
  124.        let files = map(tags, 'v:val["filename"]')  
  125.        return files  
  126.    endfunction  
  127.    let g:LookupFile_LookupFunc = 'LookupFile_IgnoreCaseFunc'  
  128.   
  129.   
  130.    """"""""""""""""""""""""""""""  
  131.    " markbrowser setting  
  132.    """"""""""""""""""""""""""""""  
  133.    nmap <silent> <leader>mk :MarksBrowser<cr>  
  134.   
  135.   
  136.    """"""""""""""""""""""""""""""  
  137.    " showmarks setting  
  138.    """"""""""""""""""""""""""""""  
  139.    " Enable ShowMarks  
  140.    let showmarks_enable = 1  
  141.    " Show which marks  
  142.    let showmarks_include = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"  
  143.    " Ignore help, quickfix, non-modifiable buffers  
  144.    let showmarks_ignore_type = "hqm"  
  145.    " Hilight lower & upper marks  
  146.    let showmarks_hlline_lower = 1  
  147.    let showmarks_hlline_upper = 1  
  148.   
  149.   
  150.    """"""""""""""""""""""""""""""  
  151.    " mark setting  
  152.    """"""""""""""""""""""""""""""  
  153.    nmap <silent> <leader>hl <Plug>MarkSet  
  154.    vmap <silent> <leader>hl <Plug>MarkSet  
  155.    nmap <silent> <leader>hh <Plug>MarkClear  
  156.    vmap <silent> <leader>hh <Plug>MarkClear  
  157.    nmap <silent> <leader>hr <Plug>MarkRegex  
  158.    vmap <silent> <leader>hr <Plug>MarkRegex  
  159.   
  160.   
  161.    """"""""""""""""""""""""""""""  
  162.    " FeralToggleCommentify setting  
  163.    """"""""""""""""""""""""""""""  
  164.    let loaded_feraltogglecommentify = 1  
  165.    "map <silent> <leader>tc :call ToggleCommentify()<CR>j   
  166.    "imap <M-c> <ESC>:call ToggleCommentify()<CR>j   
  167.   
  168.   
  169.    """"""""""""""""""""""""""""""  
  170.    " vimgdb setting  
  171.    """"""""""""""""""""""""""""""  
  172.    let g:vimgdb_debug_file = ""  
  173.    run macros/gdb_mappings.vim  
  174.   
  175.   
  176. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  177. " Filetype generic 
  178. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  179.    """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  180.    " Todo 
  181.    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  182.    "au BufNewFile,BufRead *.todo so ~/vim_local/syntax/amido.vim  
  183.   
  184.   
  185.    """"""""""""""""""""""""""""""  
  186.    " HTML related  
  187.    """"""""""""""""""""""""""""""  
  188.    " HTML entities - used by xml edit plugin  
  189.    let xml_use_xhtml = 1  
  190.    "let xml_no_auto_nesting = 1  
  191.   
  192.   
  193.    "To HTML  
  194.    let html_use_css = 1  
  195.    let html_number_lines = 0  
  196.    let use_xhtml = 1  
  197.   
  198.   
  199.    """""""""""""""""""""""""""""""  
  200.    " Vim section  
  201.    """""""""""""""""""""""""""""""  
  202.    autocmd FileType vim set nofen  
  203.    autocmd FileType vim map <buffer> <leader><space> :w!<cr>:source %<cr>  
  204.   
  205.   
  206.    """"""""""""""""""""""""""""""  
  207.    " HTML  
  208.    """""""""""""""""""""""""""""""  
  209.    au FileType html set ft=xml  
  210.    au FileType html set syntax=html  
  211.   
  212.   
  213.   
  214.   
  215.    """"""""""""""""""""""""""""""  
  216.    " C/C++  
  217.    """""""""""""""""""""""""""""""  
  218.    autocmd FileType c,cpp  map <buffer> <leader><space> :make<cr>  
  219.    "autocmd FileType c,cpp  setl foldmethod=syntax | setl fen  
  220.   
  221.   
  222. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  223. " MISC 
  224. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  225.    "Quickfix  
  226.    nmap <leader>cn :cn<cr>  
  227.    nmap <leader>cp :cp<cr>  
  228.    nmap <leader>cw :cw 10<cr>  
  229.    "nmap <leader>cc :botright lw 10<cr>  
  230.    "map <c-u> <c-l><c-j>:q<cr>:botright cw 10<cr>  
  231.   
  232.   
  233.    function! s:GetVisualSelection()  
  234.        let save_a = @a  
  235.        silent normal! gv"ay  
  236.        let v = @a  
  237.        let @a = save_a  
  238.        let var = escape(v, '\\/.$*')  
  239.        return var  
  240.    endfunction  
  241.   
  242.   
  243.    " Fast grep  
  244.    nmap <silent> <leader>lv :lv /<c-r>=expand("<cword>")<cr>/ %<cr>:lw<cr>  
  245.    vmap <silent> <leader>lv :lv /<c-r>=<sid>GetVisualSelection()<cr>/ %<cr>:lw<cr>  
  246.   
  247.   
  248.    " Fast diff  
  249.    cmap @vd vertical diffsplit   
  250.    set diffopt+=vertical  
  251.   
  252.   
  253.    "Remove the Windows ^M  
  254.    noremap <Leader>dm mmHmn:%s/<C-V><cr>//ge<cr>'nzt'm  
  255.   
  256.   
  257.    "Paste toggle - when pasting something in, don't indent.  
  258.    set pastetoggle=<F3>  
  259.   
  260.   
  261.    "Remove indenting on empty lines  
  262.    "map <F2> :%s/\s*$//g<cr>:noh<cr>''  
  263.   
  264.   
  265.    "Super paste  
  266.    "inoremap <C-v> <esc>:set paste<cr>mui<C-R>+<esc>mv'uV'v=:set nopaste<cr>  
  267.   
  268.   
  269.    "Fast Ex command  
  270.    nnoremap ; :  
  271.   
  272.   
  273.    "For mark move  
  274.    nnoremap <leader>' '  
  275.   
  276.   
  277.    "Fast copy  
  278.    nnoremap ' "  
  279.   
  280.   
  281.    "A function that inserts links & anchors on a TOhtml export.  
  282.    " Notice:  
  283.    " Syntax used is:  
  284.    " Link  
  285.    " Anchor  
  286.    function! SmartTOHtml()  
  287.     TOhtml  
  288.     try  
  289.      %s/&quot;\s\+\*&gt; \(.\+\)</" <a href="#\1" style="color: cyan">\1<\/a></g  
  290.      %s/&quot;\(-\|\s\)\+\*&gt; \(.\+\)</" \&nbsp;\&nbsp; <a href="#\2" style="color: cyan;">\2<\/a></g  
  291.      %s/&quot;\s\+=&gt; \(.\+\)</" <a name="\1" style="color: #fff">\1<\/a></g  
  292.     catch  
  293.     endtry  
  294.     exe ":write!"  
  295.     exe ":bd"  
  296.    endfunction  
  297.   
  298.   
  299.   
  300.   
  301. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
  302. " Mark as loaded 
  303. """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""  
  304. let g:vimrc_loaded = 1  

 

 

===========================================================================

vimrc配置文件详解

"set encoding=chinese
"set langmenu=zh_CN.UTF-8"
if version >= 603
    set helplang=cn
endif
set langmenu=zh_CN.UTF-8
"set imcmdline "这一句导致字体大小、颜色设置失效
"set guifont=Monospace/ 12
set guifont=DejaVu/ Sans/ Mono/ 12 
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
"下一行为语法高亮,彩色的
syntax on

"添加自动缩进
set tabstop=4
set shiftwidth=4
set softtabstop=4
set ai "开启自动缩进
"set expandtab "自动把tab转化为空格
"retab "将已存在的tab都转化为空格
set list   "显示tab和行尾空格
set lcs=tab:+-,trail:- "显示tab为+---和行尾空格(只在输入时才显示)
"折叠python代码
"set foldmethod=indent
"let Tlist_Auto_Open=1 "auto open taglist自动打开taglist
set autoindent "自动缩进?
"添加python字典,实现自动补全(字典目录为~/.vim/pydiction,里面有字典和一个脚本),快捷键:ctrl+n(20080320 ~/.vim/tools/也可以)
if has("autocmd")
autocmd FileType python set complete+=k~/.vim/tools/pydiction
endif
"安F8智能补全
inoremap <F8> <C-x><C-o>

map <F5>:!/usr/bin/python2.5 %

set nobackup    "不自动备份
set nu      "开启行号
"搜索字高亮
set hlsearch
"取消 Vim 对 HTML 标记自动产生的缩进,但打开自动缩进选项
au FileType html setlocal autoindent indentexpr=

" multi-encoding setting
if has("multi_byte")
"set bomb
set fileencodings=ucs-bom,utf-8,cp936,big5,euc-jp,euc-kr,latin1
" CJK environment detection and corresponding setting
if v:lang =~ "^zh_CN"
    " Use cp936 to support GBK, euc-cn == gb2312
    set encoding=cp936
    set termencoding=cp936
    set fileencoding=cp936
elseif v:lang =~ "^zh_TW"
    " cp950, big5 or euc-tw
    " Are they equal to each other?
    set encoding=big5
    set termencoding=big5
    set fileencoding=big5
elseif v:lang =~ "^ko"
    " Copied from someone's dotfile, untested
    set encoding=euc-kr
    set termencoding=euc-kr
    set fileencoding=euc-kr
elseif v:lang =~ "^ja_JP"
    " Copied from someone's dotfile, untested
    set encoding=euc-jp
    set termencoding=euc-jp
    set fileencoding=euc-jp
endif
" Detect UTF-8 locale, and replace CJK setting if needed
if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
    set encoding=utf-8
    set termencoding=utf-8
    set fileencoding=utf-8
endif
else
echoerr "Sorry, this version of (g)vim was not compiled with multi_byte"
endif

*************************************
//
1.tabstop (ts-数值型): 设定文件中制表位占的空格个数,默认是8
   :set ts=4     (表示一个插入一个<Tab>占4个空格位)

2.expandtab (et-布尔型): 插入<Tab>时使用相应数量的空格,而不用制表位,默认关闭
   :set ts=10 et     (此时插入一个tab时,真正插入的是10个空格)
   注: 当'et'打开,要插入实际的制表位,需用CTRL-V<Tab>,win下加载了mswin.vim插件的用CTRL-Q<Tab>

3.softtabstop (sts-数值型): 当插入一个<Tab>时,若'ts'值大于'sts',则此时就插入'sts'值那么多空格;
   而当'ts'值小于'sts',则此时就插入几个制表位(制表位的个数是'sts'整除'ts'之商)
   和几个空格(空格的个数是'sts'整除'ts'之余数),默认是0,表示关闭
   :set ts=8 sts=6   (此时插入一个<Tab>,就会插入6个空格;若连续插入两个<Tab>,则会插入一个制表位和4个空格)
                    在此设置下这样输入: 一个<Tab>,3个空格,一个<Tab>,大家想想实际会输入什么?
   :set ts=3 sts=8   (此时插入一个<Tab>,就会插入2个制表位和2个空格)

4.retab (ret-ex下的命令,前面3个是选项): 把制表位和空格组成的连续序列替换成新的制表位或空格
   格式是   :[range]ret[!] [ts值]   (不是指定range,默认是全文;不指定'ts'值,就用原来的'ts'值)
   
   (1) 当'et'为关闭状态时,retab会尽量把由"制表位和空格组成的连续空白序列"替换成尽可能多的制表位,如:
   有一个连续"空白序列"是由: 3个空格,两个制表位,5个空格组成,这时设置如下命令
   :ret 6    (原来的"空白序列"变为由: 3个制表位,2个空格组成的新的"空白序列")
   (2) 当'et'为开启状态时,retab会把所有的制表位换成当前'ts
   (3) :ret! 命令则会把纯粹由空格组成的"空白序列"强制替换为尽可能多的制表位加空格
   注:retab命令对文本的处理,不会引起视觉上的变化

5.smarttab (sta-布尔型): 它确定行首插入<Tab>时的情况,它跟选项'shiftwidth'(sw)相关联,默认关闭.
   :set sta   (则若行首插入一个<Tab>,会根据'sw'的值来插入"空白序列",其余的地方还是插入一个制表位;
               而这里的"空白序列"是由什么组成,是由'sw','ts'值的相对大小,以及是否开启了'et'决定的.
               若'sw'小于'ts'的值,且'et'是关闭的,则行首插入一个<Tab>就直接插入'sw'值所代表的空格数;
               若'sw'大于'ts'的值,且'et'是关闭的,则行首插入一个<Tab>就插入尽可能多的制表位加空格;
               若'et'是开启的,若行首插入一个<Tab>就直接插入'sw'值所代表的空格数

   注:选项'sw'只用于normal下的左右移动命令: > , >> , < , <<

************************ 说 明 *********************************
*                                                            
* (a) 文中的<Tab>表示动作:敲击键盘上的Tab制表键(位于Q键左边), 
*     而文中的"制表位"表示前面那个动作后的输入;                
* (b) 为了便于制表位和空格的区分,也就是让它们成为"可见"模式:    
*     :set list                                              
*     :set lcs=eol:&,tab<+        
       set list   "显示tab和行尾空格
       set lcs=tab:>-,trail:- "显示tab为---和行尾空格(只在输入时才显示)                           
*     这样每行结尾有字符"&",制表位若是4,则为:<+++ ,             
*     而若制表位是8,则为:<+++++++                         
* (c) <Backspace>在插入模式下可以删除整个'sts'和'sta'下的'sw' 
*     但象normal下"x"这样的命令就只能删除真正的制表位和空格       
==========================================================================
20090123
" 自动补全命令时候使用菜单式匹配列表
set wildmenu
" 允许退格键删除
set backspace=2
" 启用鼠标
set mouse=a
" 文件类型
filetype on
filetype plugin on
filetype indent on
" 设置编码自动识别, 中文引号显示
"set fileencodings=utf-8,cp936,big5,euc-jp,euc-kr,latin1,ucs-bom
set fileencodings=utf-8,gbk,ucs-bom
set ambiwidth=double

" 移动长行
nnoremap <Down> gj
nnoremap <Up> gk

" 让编辑模式可以中文输入法下按:转到命令模式
nnoremap : :

" 高亮
syntax on
" 设置高亮搜索
set hlsearch
" 输入字符串就显示匹配点
set incsearch
" 输入的命令显示出来,看的清楚些。
set showcmd

" 打开当前目录文件列表
map <F3> :e .<CR>

" Taglist
let Tlist_File_Fold_Auto_Close=1
set updatetime=1000
map <F4> :Tlist<CR>

" 按 F8 智能补全
inoremap <F8> <C-x><C-o>

" vim 自动补全 Python 代码
" 来自http://vim.sourceforge.net/scripts/script.php?script_id=850
autocmd FileType python set complete+=k~/.vim/tools/pydiction
autocmd FileType python set shiftwidth=4 tabstop=4 "expandtab "把tab转化为空格
set list
set lcs=tab:+-,trail:-
" 自动使用新文件模板
autocmd BufNewFile *.py 0r ~/.vim/template/simple.py

autocmd FileType html set shiftwidth=4 tabstop=4 expandtab 
autocmd BufNewFile *.html 0r ~/.vim/template/simple.html

"要在命令行上实现 Emacs 风格的编辑操作: >
" 至行首
:cnoremap <C-A>        <Home>
" 后退一个字符
:cnoremap <C-B>        <Left>
" 删除光标所在的字符
:cnoremap <C-D>        <Del>
" 至行尾
:cnoremap <C-E>        <End>
" 前进一个字符
:cnoremap <C-F>        <Right>
" 取回较新的命令行
:cnoremap <C-N>        <Down>
" 取回以前 (较旧的) 命令行
:cnoremap <C-P>        <Up>
" 后退一个单词
:cnoremap <Esc><C-B>    <S-Left>
" 前进一个单词
:cnoremap <Esc><C-F>    <S-Right>

"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+=0x%-8B/ " current char
set statusline+=%-14.(%l,%c%V%)/ %<%P " offset

 

参考拓展:

vim配置文件vimrc

 

Vim的分屏功能

 

vim encoding and font

 

vim技巧快捷键学习

 

vim实用功能总结

 

VIM编辑代码时的一些技巧