for MYGENV
[hombase.git] / _vimrc
blob564680ff1af45c1b808ec799ba3c2f6bd7bd3df6
1 "@author:               Lifan
2 "@Modified:             
5 "set nocompatible       "because this is defined in vimrc_example.vim
7 "source $VIMRUNTIME/vimrc_example.vim
8 set fileformats=unix,dos
9 set fencs=ucs-bom,utf-8,gb2312,gbk,gb18030,latin1
10 "set fencs=ucs-bom,chinese,taiwan,japan,korea,utf-8,latin1
11 let mapleader = ","
13 if has("unix")
14         if has("gui_running")  "for gdk+ vim seting
15                 "set langmenu=none
16                 "language en_US
17                 "set enc=gb2312
18                 "source $VIMRUNTIME/delmenu.vim
19                 "source $VIMRUNTIME/menu.vim
20                 "set imactivatekey=C-space
21                 "set iminsert=0
22                 "set ims=0
23                 "inoremap <esc> <esc>:set iminsert=2<cr>
24                 "noremap i      :set iminsert=2<cr>i
25                 "noremap a :set iminsert=2<cr>a
26                 "set ims=0
27                 "set imc!
28                 
29                 " CTRL-A is Select all
30                 noremap <C-A> gggH<C-O>G
31                 inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
32                 cnoremap <C-A> <C-C>gggH<C-O>G
33                 onoremap <C-A> <C-C>gggH<C-O>G
34                 snoremap <C-A> <C-C>gggH<C-O>G
35                 xnoremap <C-A> <C-C>ggVG
37                 " CTRL-V and SHIFT-Insert are Paste
38                 imap <C-V> <C-r>* 
39                 map <C-V>               "*gP
40                 map <S-Insert>          "*gP
41                 cmap <C-V>              <C-R>*
42                 cmap <S-Insert>         <C-R>*
43         else            "for bash vim setting
44                 set noshowcmd
45                 colorscheme desert
46                 "syntax off
47         endif
48         "let $VIMFILY='~/.vim'
49         let $VIMFILY=expand("$HOME") . '/.vim'
50         "set rtp^=~/vimfiles
51         "source ~/vimfiles/filetype.vim
52 else            "for win32 setting
53         if has("gui_running")
54                 "source $VIMRUNTIME/mswin.vim
55                 "set guioptions+=a      "auto copy to 
56                 "understand this
57                 set grepprg=grep\ -n\ $*\ /dev/null
58                 set grepformat=%f:%l:%m,%f:%l%m,%f\     %l%m
59                 cabbrev sort /bin/sort
60         else
61                 set noshowcmd
62         endif
63         let $VIMFILY=expand("$HOME") . '/vimfiles'
64 endif
66 let $ADDED=$VIMFILY . '/added_plugin'
68 source $ADDED/my_vimrc_example.vim
69 if !has("unix") && has("gui_running")
70     source $ADDED/my_mswin.vim
71 endif
73 source $ADDED/publib.vim
75 "for latex suit now
76 let $ADDED2=$VIM . '/vimfiles/added_plugin2'
78 "for new tab setting and new align setting
79 " leader mode mapping
80 map <leader>la <esc>:call SecondLoadAlign()<cr>
81 map <leader>lt <esc>:call SecondTriggerChangeTab()<cr>
83 " remove space and enter charactor
84 map <leader>rs <esc>::%s= *$==<cr>
85 map <leader>rd <esc>:%s/\r//g<cr>
88 "add this by lifan
89 """"""""""""""""""""""""""""""""""""""""""""""""""""""
90 "General
91 """""""""""""""""""""""""""""""""""""""""""""""""""""
92 set helplang=cn
93 set hh=999      "set the help windows defaul height to max
94 set linebreak   "let english word break whole word
95 set showmatch
96 set mat=3
97 set history=500000
98 set viminfo='100,<1500,s500,:500,/300
99 set nohlsearch
100 set incsearch
101 set timeoutlen=1500
102 set hid         "let you can change buffer without save
103 set ignorecase
104 "turn off ignorecase in a typed search if an uppercase char exists.
105 set smartcase
106 call CodeMode()         "most time are coding:)
107 set noerrorbells
108 set visualbell t_vb=
109 set cmdheight=1
110 set guioptions-=T       "hide the toolbar
111 set guioptions-=m       "hide the menubar
112 "set guioptions+=c      "use text dialog
113 set laststatus=2
114 set noruler
115 set shortmess=at
116 "set rulerformat=%50(\ %n[%{&ff}]%r%m%y%=%-14.(%l,%c%V%)\ %p%%%)
117 "set statusline=%<%f %n[%{&ff}]%r%m%y%=%-14.(%l,%c%V%)\ %p%%
118 hi User1 term=standout,bold cterm=reverse ctermbg=red gui=bold guifg=red guibg=Grey
119 hi User2 term=standout,bold cterm=reverse gui=bold guibg=Grey
122 """""""""""""""""""""""""""""""""""""""""""""""""""""""
123 "function for return the file format and file encoding
124 "from http://msghost.iyublog.com/?cat=477
125 function! FunFileEncoding()
126 return &ff . ":" . &fenc
127 endfunction
128 """"""""""""""""""""""""""""""""""""""""""""""""""
130 set statusline=%2*%=\ \ \ %50(%f\ @%n[%{FunFileEncoding()}]%r%m%y#%{changenr()}%=\ \ \ %-14.(%l,%c\(%v\)%)\ %p%%%)%*
131 set report=0
132 set listchars=eol:<
133 set listchars+=tab:>-
134 set wildmenu                    "ÓÃtabÔÚÃüÁîÐÐÌáʾ
135 "set clipboard+=unnamed "ÊÇy ºÍ p Í¬ÏµÍ³¼ôÇаåÏàÁ¬
136 set clipboard+=autoselect
137 "set splitbelow                 "splitting a window below the current one
138 """""""""""""""""""""""""""""""""""""""""""""""""""""
139 "Files/Backups
140 """""""""""""""""""""""""""""""""""""""""""""""""""""
141 set autowrite
142 if has("unix")
143     set backupdir=/var/backups/vi
144 else
145     if($MYGENV == "true")
146         set backupdir=$E_DISK/var/backups/vi
147     else
148         set backupdir=e:/var/backups/vi
149     endif
151 endif
152 "set sessionoptions+=curdir
153 set browsedir=buffer
154 set backupskip+=*.clean,cvscommit.????,*.~
155 set wildignore=*.o,*.obj,*.exe,*.bak,*.clean
156 if has("gui_running")
157         let savevers_dirs = &backupdir
158         let savevers_max = 9
159         source $ADDED/savevers.vim
160         set backup
161         set patchmode=.clean
162         set backupcopy=yes
163 endif
164 "change the direct when chang the buffer
165 au   BufEnter *   :lcd %:p:h
166 set makeef=error.err
167 set title
168 set titlelen=80
169 set titlestring=%<%F\ %M\ %R\ %{v:servername}\ %{mode()}\ e\ U
171 """""""""""""""""""""""""""""""""""""""""""""""""""""
173 "Vim GUI
174 """"""""""""""""""""""""""""""""""""""""""""""""""""""
175 """""""""""""""""""""""""""""""""""""""""""""""""""""
176 " Text Formatting/Layout
177 """""""""""""""""""""""""""""""""""""""""""""""""""""
178 "set fo=tcrqn
179 """""""""""""""""""""""""""""""""""""""""""""""""""""
180 "Folding
181 """""""""""""""""""""""""""""""""""""""""""""""""""""
182 set foldenable " Turn on folding
183 "set foldmethod=indent " Make folding indent sensitive
184 set foldlevel=100 " Don't autofold anything (but I can still fold manually)
185 "set foldopen-=search " don't open folds when you search into them
186 set foldopen-=undo 
187 "set foldcolumn=8
188 "set foldmethod=syntax
189 let g:xml_syntax_folding = 1
190 let xml_use_xhtml = 1
195 """""""""""""""""""""""""""""""""""""""""""""""""""""
196 "Mappings
197 """""""""""""""""""""""""""""""""""""""""""""""""""""
198 "nomre mode maping
199 "nnoremap <C-i> i <esc>r
200 nnoremap j gj
201 nnoremap k gk
202 nnoremap ' `
204 "for caculator ++
205 nnoremap <C-c> <C-A>
207 "for del the auto comment
208 noremap <m-cr> o<esc>^"8d$a
210 "for eclipse compatible 
211 inoremap <m-/> <c-x><c-o>
213 "for good insert next line
214 "noremap <C-i> ddO
215 noremap <m-i> :let g:currentline=line('.')<cr>:.d<cr>:if g:currentline==line('.')<cr>:normal -<cr>:endif<cr>o
217 "use <c-v> to mapping the block visual mode do not using the win32 paste
218 nnoremap <c-v> <c-v>
220 "nnoremap <silent> <cr> i<cr><esc>
223 "insert mode maping
224 "use <C-t> old using is to shift right and now chang to <C-e>
225 inoremap <C-t> <space><esc>d$a
226 "use <C-e> old using is to inster the character which is below the cursor
227 inoremap <C-e> <C-t>
228 inoremap <m-cr> <cr><esc>^d$a
230 " reproduce previous line word by word
231 inoremap <C-j>  @@@<ESC>hhkyWjl?@@@<CR>P/@@@<CR>3s
233 "visual mode maping
234 "   Put string marked by visual mode as default for search commands / and ?
235 "   Warning: extending the marked text by searching doesn't work any more.
236 vnoremap / y/<C-R>=escape(substitute(@","\n.*",'',''),'/\?*.$^~][')<cr>
237 vnoremap ? y?<C-R>=escape(substitute(@","\n.*",'',''),'/\?*.$^~][')<cr>
238 "   Explanation:
239 " substitute(@",..) - remove lines after first, if >1 line highlighted
240 " escape(..)        - put '\' before all characters meaningful in regexp's
241 " y                 - yank current selection (in register ")
242 " ctrl-r = .. <cr>  - put expression after / as earch string
243 " credits go to Stefan Roemer and Peppe (Preben Guldberg).
245 "   Remove whitespace from lines containing nothing else (grr to all nedit users)
247 "for the mouse conflict key(c-insert) of HP notebook
248 noremap <Insert> <Esc>
249 noremap <C-Insert> <Esc>
250 inoremap <Insert> <Down>
251 inoremap <C-Insert> <Down>
253 "leader mode mapping
255 "map <leader>s <Esc>:w<cr><Esc>:!aspell -c --dont-backup --lang=en_US "%:p"<cr>:e! "%"<cr><cr>
256 map <leader>ls <esc>:ls!<cr>
257 map <leader>ew <esc>:call MyWrap()<cr>
258 map <leader>ex <esc>:Ex<cr>
259 "map <leader>eb <esc>:set encoding=big5<cr>
260 map <leader>ec <esc>:call MyCoding()<cr>
261 "map <leader>eu <esc>:set encoding=utf-8<cr>
262 map <leader>el <esc>:set list!<cr>
263 map <leader>es <esc>:set hlsearch!<cr>
264 map <leader>em <esc>:call MyMenu()<cr>
265 map <leader>en <esc>:set nu!<cr>:set cursorline!<cr>
266 "map <leader>df <esc>:silent !start firefox "http://www.m-w.com/cgi-bin/Dictionary?book=Dictionary&va=<cword>"<cr><cr>
267 "map <leader>dF <esc>:silent !start firefox "http://www.m-w.com/cgi-bin/Thesaurus?book=Thesaurus&va=<cword>"<cr><cr>
268 "map <leader>dW <esc>:silent !wnb <cword> <cr><cr>
269 "map <leader>dz <esc>:!start firefox.exe <cWORD><cr><cr>
270 map <leader>dz <esc>:call MyUrl(expand('<cWORD>'))<cr>
271 map <leader>dw <esc>:call MyWebs(expand('<cword>'))<cr>1<cr>-
272 nnoremap <leader>dd <esc>:call MyTriggerMore()<cr>
273 nnoremap <leader>fd :set fileformat=dos<cr>
274 nnoremap <leader>fu :set fileformat=unix<cr>
275 map <leader>bp <esc>:bp<return>
276 map <leader>bn <esc>:bn<return>
277 map <leader>yy <esc>^"*y$
278 map <leader>sn <esc>:%s//&/gn<cr>
279 map <leader>m <esc>:silent MarksBrowser<cr>
281 "MAKE IT EASY TO UPDATE/RELOAD_vimrc
282 nnoremap <leader>-s <esc>:source ~/_vimrc<cr>
283 nnoremap <leader>-v <esc>:e ~/_vimrc<cr> 
285 """""""""""""""""""""""""""""""""""""""""""""""""""""
286 " <F5>-<F8>maping for savers-pluging
287 " <F5> decrease version viewed in VersDiff window
288 " <F6> increase version viewed in VersDiff window
289 " <F7> do VersDiff with cvs version of current file
290 " <F8> cancel VersDiff window
291 nmap <silent> <F3> :VersDiff -<cr>
292 nmap <silent> <F4> :VersDiff +<cr>
293 """""""""""""""""""""""""""""""""""""""""""""""""""""
295 " for autohotkey to using:)
296 " 0=english input 1=chinese input
297 let g:cinput = 0
298 let g:down = 0
300 "user command maping
301 com! MM call MyMore()
302 """""""""""""""""""""""""""""""""""""""""""""""""""""
304 """""""""""""""""""""""""""""""""""""""""""""""""""""
305 "Programmings abbrevs
306 """""""""""""""""""""""""""""""""""""""""""""""""""""
307 """""""""""""""""""""""""""""""""""""""""""""""""""""
308 "Informational abbrevs
309 """""""""""""""""""""""""""""""""""""""""""""""""""""
310 "iab xda <c-r>=strftime("%Y-%m-%d-%H:%M:%S")<cr>
311 iab xda <c-r>=substitute(system("date +%Y-%m-%d-%H:%M"),"\n","","")<cr>
312 iabbrev teh the
313 iabbrev otehr other
314 iabbrev wnat want
315 iabbrev synchronisation
316         \ synchronization
317 iab hte the
318 iab fro for
319 iab adn and
320 iab taht that
321 iab knwe knew
322 iab htat that
323 iab tyr try
324 iab ture true
325 """""""""""""""""""""""""""""""""""""""""""""""""""""
328 """""""""""""""""""""""""""""""""""""""""""""""""""""
329 "for no swap attation
330 "set dir=~/tmp
331 func! CheckSwap()
332         swapname
333         if v:statusmsg =~ '\.sw[^p]$'
334                 set statusline=%2*%=\ \ \ %50(%f\ @%n%*%1*[$]%*%2*[%{&ff}]%r%m%y%=\ \ \ %-14.(%l,%c\(%v\)%)\ %p%%%)%*
335                 silent call MyMore()
336         else
337         set statusline=%2*%=\ \ \ %50(%f\ @%n[%{FunFileEncoding()}]%r%m%y#%{changenr()}%=\ \ \ %-14.(%l,%c\(%v\)%)\ %p%%%)%*
338                 "set statusline=%2*%=\ \ \ %50(%f\ @%n[%{&ff}]%r%m%y%=\ \ \ %-14.(%l,%c%V%)\ %p%%%)%*
339         endif
340 endfunc
342 if &swf
343         set shm+=A
344         autocmd BufEnter * silent call CheckSwap()
345 endif 
346 """""""""""""""""""""""""""""""""""""""""""""""""""""
351 """""""""""""""""""""""""""""""""""""""""""""""""""""
352 "ViKi Mode
353 """""""""""""""""""""""""""""""""""""""""""""""""""""
354 "let g:vikiUseParentSuffix = 1
355 "let g:vikiSpecialFiles='jpg\|gif\|bmp\|pdf\|dvi\|ps\|eps\|png\|jpeg\|wmf\|otl'
356 "let g:vikiOpenFileWith_otl = 'silent !D:/prog/Natara/Bonsai/Bonsai.exe %{FILE}'
358 " we want to allow deplate to execute ruby code and external helper 
359 " application
360 "let g:deplatePrg = "deplate -x -X "
361 "au FileType viki compiler deplate
362 "let g:vikiInterOLM= $HOME ."/olm"
363 "let g:vikiInterOLM_suffix= ".olm"
364 "let g:vikiInterHW= $HOME ."/viki"
365 "let g:vikiInterHW_suffix= ".txt"
370 """""""""""""""""""""""""""""""""""""""""""""""""""""
371 " setting for mru
372 map <leader>rr :MRU<cr>gg
373 let MRU_Max_Entries = 500
374 let MRU_Exclude_Files = '^/tmp/.*\|^/var/tmp/.*|^c:\\temp\\.*'
375 let MRU_File = $VIMFILY . "/_vim_mru_files"
376 "let MRU_Auto_Close = 0  " to keep the mru window
377 """""""""""""""""""""""""""""""""""""""""""""""""""""
379 """""""""""""""""""""""""""""""""""""""""""""""""""""
380 " setting for subversion
381 nmap <leader>va <Plug>VCSAdd
382 nmap <leader>vn <Plug>VCSAnnotate
383 nmap <leader>vc <Plug>VCSCommit
384 nmap <leader>vd <Plug>VCSDiff
385 nmap <leader>ve <Plug>VCSEdit
386 nmap <leader>vi <Plug>VCSEditors
387 nmap <leader>vg <Plug>VCSGotoOriginal
388 nmap <leader>vG <Plug>VCSGotoOriginal!
389 nmap <leader>vl <Plug>VCSLog
390 nmap <leader>vr <Plug>VCSReview
391 nmap <leader>vs <Plug>VCSStatus
392 nmap <leader>vt <Plug>VCSUnedit
393 nmap <leader>vu <Plug>VCSUpdate
394 nmap <leader>vv <Plug>VCSVimDiff
395 nmap <leader>vwv <Plug>VCSWatchers
396 nmap <leader>vwa <Plug>VCSWatchAdd
397 nmap <leader>vwn <Plug>VCSWatchOn
398 nmap <leader>vwf <Plug>VCSWatchOff
399 nmap <leader>vwf <Plug>VCSWatchRemove
400 """""""""""""""""""""""""""""""""""""""""""""""""""""
402 """""""""""""""""""""""""""""""""""""""""""""""""""""
403 " setting for crefre
404 if !hasmapto('<Plug>CRV_CRefVimVisual')
405         vmap <silent> <unique> <Leader>Cr <Plug>CRV_CRefVimVisual
406         nmap <silent> <unique> <Leader>Cr <Plug>CRV_CRefVimNormal
407         map <silent> <unique> <Leader>Cw <Plug>CRV_CRefVimAsk
408         map <silent> <unique> <Leader>Cc <Plug>CRV_CRefVimInvoke
409 endif
410 """""""""""""""""""""""""""""""""""""""""""""""""""""
413 """""""""""""""""""""""""""""""""""""""""""""""""""""
414 "aspell setting
415 "ca  xsp write !aspell -a --lang="en_US"<cr>
416 """""""""""""""""""""""""""""""""""""""""""""""""""""
419 """""""""""""""""""""""""""""""""""""""""""""""""""""
420 "Autocommands
421 """""""""""""""""""""""""""""""""""""""""""""""""""""
422 "autocmd BufEnter * :syntax sync fromstart " ensure every file does syntax highlighting (full)
423 "autocmd BufEnter * :lcd %:p:h " switch to current dir
424 "autocmd GUIEnter * :simalt ~x " maximize the screen
426 augroup filetypedetect 
427         """""""""""""""""""""""""""""""""""""""""""""""""""""
428         "for help and readbale file mode 
429         augroup! filetypedetect 
430         autocmd FileType help call MyMore()
431         """""""""""""""""""""""""""""""""""""""""""""""""""""
433         """""""""""""""""""""""""""""""""""""""""""""""""""""
434         "for the make error windows quickfix windows
435         au BufReadPost quickfix set modifiable
436         au BufReadPost quickfix  silent g/^/s//\=line(".")." "/
437         autocmd FileType qf call MyMore()
438         """""""""""""""""""""""""""""""""""""""""""""""""""""
440         """""""""""""""""""""""""""""""""""""""""""""""""""""
441         "template mode
442         """""""""""""""""""""""""""""""""""""""""""""""""""""
443         "autocmd BufNewFile *.sh                0r ~/vimtemplate/skeleton.sh
444         "autocmd BufNewFile *.vim               0r $HOME/vimfiles/skel/vim.skel
445         autocmd BufNewFile,BufReadPre *.java,*.vim,*.sh,*.html,*.xhtml,*.py             source $ADDED/skel.vim
446         "autocmd BufNewFile *.java              0r $VIMFILY/skel/java.skel
447         "autocmd BufNewFile *.vim               0r $VIMFILY/skel/vim.skel
448         "autocmd BufNewFile *.sh                0r $VIMFILY/skel/sh.skel
449         "autocmd BufNewFile *.html              0r $VIMFILY/skel/html.skel
450         "autocmd BufNewFile *.xhtml     0r $VIMFILY/skel/xhtml.skel
451         "autocmd BufNewFile *.java,*.vim,*.sh,*.html,*.xhtml            call Replacy()
452         """""""""""""""""""""""""""""""""""""""""""""""""""""
453         """""""""""""""""""""""""""""""""""""""""""""""""""""
454         "anti word
455         "au BufReadPre *.doc set ro
456         "au BufReadPre *.doc set hlsearch!
457         "au BufReadPost *.doc silent %!antiword "%"
458         "autocmd BufReadPost *.doc silent %!wvware "%"
459         """""""""""""""""""""""""""""""""""""""""""""""""""""
460         "au BufNewFile,BufRead /home/Administrator/std-java/new1.5/* let g:bnojikes=1
462         autocmd BufWritePre,FileWritePre *.vim  ks|call LastMod()|'s
463         autocmd BufWritePre,FileWritePre *.jsp,*.html  ks|call LastMod2()|'s
465         autocmd BufNewFile,BufreadPre *.text,*.wiki call TextMode()
466         "autocmd BufNewFile,BufreadPre *.rst call RstMode()
467         autocmd FileType vim setlocal complete=.,k~/dic/vimdiction,w,b,u,i
469         autocmd fileType ahk source $ADDED/bracket.vim
471 augroup end
472 """""""""""""""""""""""""""""""""""""""""""""""""""""
473 "CTags
474 """""""""""""""""""""""""""""""""""""""""""""""""""""
475 nnoremap <silent> <F8> :Tlist<cr>
476 let Tlist_Sort_Type = "name" " order by
477 let Tlist_Use_Right_Window = 1 " split to the right side of the screen
478 let tlist_dosini_settings= 'ini;r:respect'
479 let tlist_html_settings = 'html;a:anchor;f:javascript function;u:url'
480 let tlist_vb_settings= 'vb;t:type;s:sub;f:function'
481 let tlist_ant_settings = 'ant;p:Project;r:Property;t:Target'
482 let JavaBrowser_Use_SingleClick = 0
483 let JavaBrowser_Use_Right_Window = 1
484 let JavaBrowser_Use_Icon = 0
485 let JavaBrowser_Compact_Format = 1
486 let JavaBrowser_Expand_Tree_At_Startup = 1
489 """""""""""""""""""""""""""""""""""""""""""""""""""""
490 "JavaImp
491 """""""""""""""""""""""""""""""""""""""""""""""""""""
492 let g:JavaImpPaths = $JAVALIB."/j2sdk1.5_src,".$JAVALIB."junit_src,".$VIMFILY."/JavaImp/jmplst"
493 let g:JavaImpDataDir = $VIMFILY."/JavaImp"
494 let g:JavaImpDocPaths= $JAVA_DOCPATH
495 let g:JavaImpDocViewer = "viewHtml"
499 """""""""""""""""""""""""""""""""""""""""""""""""""""
500 "favex mod
501 """""""""""""""""""""""""""""""""""""""""""""""""""""
502 let g:favex_ff='<leader>fa'
503 let g:favex_fd='<leader>fA'
504 """""""""""""""""""""""""""""""""""""""""""""""""""""
506 """""""""""""""""""""""""""""""""""""""""""""""""""""
507 """""""""""""""""""""""""""""""""""""""""""""""""""""
508 "vcscommand mod
509 augroup VCSCommand
510   au VCSCommand User VCSBufferCreated silent! nmap <unique> <buffer> q          :bwipeout<cr>
511 augroup END
512 "let g:VCSCommandEdit= 'spilt'
514 """""""""""""""""""""""""""""""""""""""""""""""""""""
516 """""""""""""""""""""""""""""""""""""""""""""""""""""
517 "Buffer Explorer
518 """""""""""""""""""""""""""""""""""""""""""""""""""""
519 "let g:bufExplorerDetailedHelp=1
520 let g:netrw_keepdir=0
521 let g:netrw_cygwin= 1
522 let g:netrw_longlist=1
523 let g:netrw_sort_by="time"
524 let g:netrw_sort_direction="reverse"
525 let g:netrw_timefmt="   %Y %m %d\t%H:%M"
526 let g:netrw_winsize=25
528 """""""""""""""""""""""""""""""""""""""""""""""""""""
529 "Buffer Select
530 """""""""""""""""""""""""""""""""""""""""""""""""""""
531 "nmap <silent> <unique> <leader>be <Plug>SelectBuf
532 "nmap <unique> <leader>bl <Plug>SelBufLaunchCmd
533 "let selBufAlwaysShowHidden=0
534 "let selBufIgnoreNonFileBufs=0
536 "Buffer Line
537 "nmap <Leader>tv :call TabLineSet_verbose_toggle()<CR>
538 "nmap <Leader>tr :call TabLineSet_verbose_rotate()<CR>
539 "nmap <silent> <Leader>w :call WinWalkerMenu()<CR>
545 "Highlight space at end of line as error
546 "highlight WhitespaceEOL ctermbg=darkred guibg=darkred
547 "match WhitespaceEOL /\s\+$/
552 "not use now
553 "set diffexpr=MyDiff()
554 "function MyDiff()
555 "  let opt = '-a --binary '
556 "  if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
557 "  if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
558 "  let arg1 = v:fname_in
559 "  if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
560 "  let arg2 = v:fname_new
561 "  if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
562 "  let arg3 = v:fname_out
563 "  if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
564 "  silent execute '!e:\prog\Vim\vim63\diff ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3
565 "endfunction
568 function! MyTabLabel(n)
569         let buflist = tabpagebuflist(a:n)
570         let winnr = tabpagewinnr(a:n)
571         return bufname(buflist[winnr - 1])
572 endfunction
574 function! MyTabLine()
575         let s = ''
576         for i in range(tabpagenr('$'))
577                 " select the highlighting
578                 if i + 1 == tabpagenr()
579                   let s .= '%#TabLineSel#'
580                 else
581                   let s .= '%#TabLine#'
582                 endif
584                 " set the tab page number (for mouse clicks)
585                 let s .= '%' . (i + 1) . 'T'
587                 " the label is made by MyTabLabel()
588                 let s .= ' %{MyTabLabel(' . (i + 1) . ')} '
589         endfor
591         " after the last tab fill with TabLineFill and reset tab page nr
592         let s .= '%#TabLineFill#%T'
594         " right-align the label to close the current tab page
595         if tabpagenr('$') > 1
596                 let s .= '%=%#TabLine#%999Xclose'
597         endif
599         return s
600 endfunction
602 function! GuiTabLabel()
603         let label = ''
604         "let bufnrlist = tabpagebuflist(v:lnum)
606         " Add '+' if one of the buffers in the tab page is modified
607         "for bufnr in bufnrlist
608                 "if getbufvar(bufnr, "&modified")
609                         "let label = '+'
610                         "break
611                 "endif
612         "endfor
614         " Append the number of windows in the tab page if more than one
615         "let wincount = tabpagewinnr(v:lnum, '$')
616         "if wincount > 1
617                 "let label .= wincount
618         "endif
619         if v:lnum == g:currentPage
620                 let label .= ">>"
621         endif
622         return label
624         " Append the buffer name
625 endfunction
627 function! GuiTabLabel2()
628         let label = ''
629         let bufnrlist = tabpagebuflist(v:lnum)
631         " Add '+' if one of the buffers in the tab page is modified
632         "for bufnr in bufnrlist
633                 "if getbufvar(bufnr, "&modified")
634                         "let label = '+'
635                         "break
636                 "endif
637         "endfor
639         " Append the number of windows in the tab page if more than one
640         if v:lnum == g:currentPage
641                 let label .= "<<"
642         endif
643         let wincount = tabpagewinnr(v:lnum, '$')
644         if wincount > 1
645                 let label .= wincount
646         endif
647         return label
648 endfunction
650 let g:currentPage=1
651 function! GuiTabLabelEnter()
652         let g:currentPage=tabpagenr()
653         set guitablabel=%{GuiTabLabel()}%N\ %t\ %{GuiTabLabel2()}
654 endfunction
656 function! GuiTabLabelLeave()
657 endfunction
659 "       the tab setting and mapping
661 "set guitablabel=%N\ %f
662 "set guitablabel=%{GuiTabLabel()}
664 "set guitablabel=%N/\ %t\ %M
665 set tabline=%!MyTabLine()
666 let g:toggleTabs = 0
667 map <silent><F12> :if g:toggleTabs == 1<CR>:tabo<CR>:set lines+=3<CR>:let g:toggleTabs = 0<CR>:else<CR>:set lines-=3<CR>:tab ball<CR>:let g:toggleTabs = 1<CR>:endif<CR>
668 map <silent><C-tab> :if g:toggleTabs == 1<CR>:tabnext<CR>:else<CR>:bn<CR>:endif<CR>
669 map <silent><C-S-tab> :if g:toggleTabs == 1<CR>:tabprevious<CR>:else<CR>:bp<CR>:endif<CR> 
671 map <leader>tt <esc>:tabnew<cr>:let g:toggleTabs=1<cr>
672 map <leader>tx :tabclose<cr>:if tabpagenr("$") == 1<cr>let g:toggleTabs=0<cr>:endif<cr><cr>
673 map <leader>tm :tabmove 
674 map <leader>tn :tabnext <cr>
675 map <leader>tp :tabprevious <cr>
676 "map <C-Tab> :tabn <CR>
677 "map <C-S-Tab> :tabp <CR> 
679 "autocmd TabLeave 
680 autocmd TabEnter * call GuiTabLabelEnter()
684 "for new tab page setting
685 map <leader>ta <esc>:tab sball<cr>
686 if has("gui_running")
687     function! InfoGuiTooltip()
688         "get window count
689         let wincount = tabpagewinnr(tabpagenr(),'$')
690         let bufferlist=''
691         "get name of active buffers in windows
692         for i in tabpagebuflist()
693             let bufferlist .= '['.fnamemodify(bufname(i),':t')."]"
694         endfor
695         return bufname($).'-'.bufferlist
696     endfunction
697     set guitabtooltip=%!InfoGuiTooltip()
700     function! FoldSpellBalloon()
701         let foldStart = foldclosed(v:beval_lnum )
702         let foldEnd = foldclosedend(v:beval_lnum)
703         let lines = []
704         " Detect if we are in a fold
705         if foldStart < 0
706             " Detect if we are on a misspelled word
707             let lines = spellsuggest( spellbadword(v:beval_text)[ 0 ], 5, 0 )
708         else
709             " we are in a fold
710             let numLines = foldEnd - foldStart + 1
711             " if we have too many lines in fold, show only the first 14
712             " and the last 14 lines
713             if ( numLines > 31 )
714                 let lines = getline( foldStart, foldStart + 14 )
715                 let lines += [ '-- Snipped ' . ( numLines - 30 ) . ' lines --' ]
716                 let lines += getline( foldEnd - 14, foldEnd )
717             else
718                 "less than 30 lines, lets show all of them
719                 let lines = getline( foldStart, foldEnd )
720             endif
721         endif
722         " return result
723         return join( lines, has( "balloon_multiline" ) ? "\n" : " " )
724     endfunction
725     set balloonexpr=FoldSpellBalloon()
726     set ballooneval
727     
729 endif
730     
732 "for LaTex Suite
733 "filetype plugin on
734 set grepprg=grep\ -nH\ $*
735 "set shellslash
736 "filetype indent on
737 let g:Tex_CompileRule_dvi="xelatex -src-specials -interaction=nonstopmode $*"
738 "let g:Tex_DefaultTargetFormat="pdf"
739 "let g:Tex_ViewRule_pdf="xpdf"
742 "function RemoteLaTeX()
743     "let g:Tex_ViewRule_dvi="xdvi -editor 'gvim --servername \"".expand("%:p")
744         "\."\" --remote-silent'"
745     "augr remotelatex
746     "au!
747     "augr END
748 "endfunction
750 "for vim im
751 let g:vimim_chinese_punctuation=0
753 "for js lint
754 let jslint_highlight_color = 'yellow'
757 " for cscope
758 if has("unix")
759     set csprg=/usr/bin/mlcscope
760 else
761     set csprg=d:\\cygwin\\bin\\mlcscope.exe
762 endif
764 " for clipbord conflict with NERD
765 nmap <unique> <silent> <Leader>co <Plug>ClipBrdOpen
767 " add my highlight setting
768 highlight CursorLine term=none cterm=none