version 5.3 " General Settings " ---------------- set columns=80 set lines=65 "set guifont=courier_new:h8:w5 set guifont=7x14 "set guifont=7x10,font\\,with\\,commas,\ Screen15 set iskeyword=!-~,^*,^|,^\" " Syntax highlighting " ------------------- set showmatch set showmode set background=dark highlight Normal guibg=Black guifg=White syntax on " Buffer List " ----------- " Buffers menu "-------------------------------------------------------------------------- " Function FAV_InitBufList " Purpose : Create a menu Buffer with saved buffer list entries in _viminfo. " " For each entry in the Saved Buffer list, add an entry to the "Buffer" " Menu. Also, create entry in the Buffer.Delete menu so that buffers to be " deleted can be selected from the menu. " " Prequisites : " 1. The option viminfo contains % to save and restore buffer list " 2. Vim is started without a command line argument. (:help viminfo) " " Globals " _g_BufList is a string containing the buffer nos bounded by "|" " e.g. "|2||3||4||7|" to indicate which all buffers are already on the " Buffer menu function FAV_InitBufList() amenu &Buffer.&Refresh:call\ FAV_Ref() :call FAV_Ref() amenu &Buffer.&Open:bro\ e :bro e amenu &Buffer.&List:ls :ls amenu &Buffer.&Unload.All:1,255bunload :1,255bun amenu &Buffer.&Unload.Current:bunload :bunload amenu &Buffer.&Delete.All:1,255bdelete :1,255bdel amenu &Buffer.&Delete.Current:bdelete :bdel let g:_g_BufList="" let _ix=0 let _LastBuf = bufnr("$") let _FileName="" while _ix <= _LastBuf let _ix=_ix+1 let _BufName=bufname(_ix) if strlen(_BufName) let _FileName = substitute ((substitute(expand(_BufName), '\\', '\\\\',"g")), '\.', '\\\.', "g") if !strlen(_FileName) let _FileName=_BufName endif exe 'amenu Buffer.'._FileName.':b\ '._ix ':buffer'._ix.'' exe 'amenu Buffer.Unload.'._FileName.':bunload\ '._ix ':bun'._ix.'' exe 'amenu Buffer.Delete.'._FileName.':bdelete\ '._ix ':bdel'._ix.'' let g:_g_BufList = g:_g_BufList."|"._ix."|" endif endwhile unlet _ix unlet _BufName unlet _LastBuf unlet _FileName endfunction "-------------------------------------------------------------------------- " Function FAV_Ref " Purpose : Remove the buffer menu and restart it " Buffer function FAV_Ref() aunmenu Buffer call FAV_InitBufList() endfunction "-------------------------------------------------------------------------- " Function FAV_AddBufList " Purpose : On BufRead or BufNewFile, add an entry to the Buffer and " Buffer.Delete menu function FAV_AddBufList() let _FileName = substitute ((substitute(expand(''), '\\', '\\\\',"g")), '\.', '\\\.', "g") let _BufNum = bufnr(expand('')) let _BufNumStr="|"._BufNum."|" if match(g:_g_BufList, _BufNumStr) == -1 exe 'amenu Buffer.'._FileName.':b\ '._BufNum ':buffer'._BufNum.'' exe 'amenu Buffer.Unload.'._FileName.':bunload\ '._BufNum ':bun'._BufNum.'' exe 'amenu Buffer.Delete.'._FileName.':bdelete\ '._BufNum ':bdel'._BufNum.'' let g:_g_BufList = g:_g_BufList."|"._BufNum."|" endif unlet _FileName unlet _BufNum unlet _BufNumStr endfunction "-------------------------------------------------------------------------- " Function FAV_DelBufList " Purpose : On BufDelete, remove an entry from the Buffer and " Buffer.Delete menu function FAV_DelBufList() let _BufNumStr="" let _Part1="" let _Part2="" let _MatchBeg=0 let _MatchEnd_P1=0 let _FileName = substitute ((substitute(expand(''), '\\', '\\\\',"g")), '\.', '\\\.', "g") let _BufNum=expand('') if strlen(_FileName) exe 'aunmenu Buffer.'._FileName exe 'aunmenu Buffer.Unload.'._FileName exe 'aunmenu Buffer.Delete.'._FileName let _BufNumStr="|"._BufNum."|" let _MatchBeg = match(g:_g_BufList, _BufNumStr) let _MatchEnd_P1 = matchend(g:_g_BufList, _BufNumStr) let _Part1=strpart(g:_g_BufList, 0, _MatchBeg) let _Part2=strpart(g:_g_BufList, _MatchEnd_P1, strlen(g:_g_BufList)) let g:_g_BufList = _Part1._Part2 endif unlet _BufNum unlet _BufNumStr unlet _FileName unlet _Part1 unlet _Part2 unlet _MatchBeg unlet _MatchEnd_P1 endfunction "-------------------------------------------------------------------------- autocmd VimEnter * call FAV_InitBufList() autocmd BufReadPre,BufNewFile * call FAV_AddBufList() autocmd BufDelete * call FAV_DelBufList() let g:_g_BufList="" "------------------------------------ " au BufReadPre,BufNewFile * let b:file = substitute(expand("%"), "[\\. \t:]", "\\\\\&", "g") " au BufReadPre,BufNewFile * execute ":amenu Buffers.".b:file." :b ".expand("%:p")."" " au BufDelete * let b:file = substitute(expand("%"), "[\\. \t:]", "\\\\\&", "g") " au BufDelete * execute ":unmenu Buffers.".b:file