" Summary: Plugin: " * Разные настройки " * Помощь: man/perldoc manpageview " * Сохранение " * Менеджер открытых окон selectbuf " * Вкл/Выкл вставку as-is " * Перекодирование между KOI<->WIN<->DOS " * Выход (если все файлы записаны) " * Проверка на ошибки perl-скрипта при записи, " * Дописывание слов (INSERT) , " * Переключение между файлами (NORMAL) , " * Выделение текста +Arrows " +, " * Запоминание выделенного текста + " * Прокрутка текста без смещения курсора +Arrows " * Переход по tag-ссылкам +Arrows " * За|Рас-комментирование #, +#, commentify " +C " * Полноэкранный режим " * Проверка правописания " * Transparent editing of gpg encrypted files " * Полное восстановление позиции курсора " * Ускоренное открытие больших файлов " * Подсветка синтаксиса " * Разная мелочь для удобства " TODO При просмотре info перехватывается и размножаются окна. """ Разные настройки """ (все переменные комментировать лень, так что - :help) "scriptencoding koi8-r set fileencodings=koi8-r set nobackup set textwidth=74 set shiftwidth=4 set tabstop=8 set softtabstop=4 set nohlsearch set incsearch set nowrap set lcs=eol:$,extends:~ set sidescroll=1 set sidescrolloff=1 set wildmenu set langmap=йцукенгшщзхъфывапролджэячсмитьбюЙЦУКЕНГШЩЗХ ФЫВАПРОЛДЖЭЯЧСМИТЬБЮ;qwertyuiop[]asdfghjkl\;'zxcvbnm,.QWERTYUIOP{}ASDFGHJKL:\"ZXCVBNM<> set showcmd set formatoptions+=tcroql set comments-=:% " Есть два варианта indent-а: 'filetype' и 'smart', включать можно один из них " filetype indent on set smartindent " Во избежание потенциальных проблем с безопасностью set modelines=0 """ Просмотр документации man/info/perldoc. """ Plugin: manpageview + мой патч """ вызывает man для текущего слова (в perl-скриптах вызывает perldoc) """ :Man manpage """ :Man infopage.i """ :Man perlpage.pl """ :help manpageview """ Окна с документацией можно быстро закрыть: q . """ Для использования из командной строки добавить в ~/.bashrc: """ function man() { vim -c "Man $1 $2"; } """ function info() { vim -c "Man $1.i"; } let g:manpageview_pgm="LANG= man" " I hate russian man pages!!! :-E~ imap :exe "Man ".expand("") nmap :exe "Man ".expand("") autocmd FileType vim :nmap :exe "help ".expand("") autocmd FileType vim :imap :exe "help ".expand("") autocmd FileType perl :nmap :exe "Man ".expand("").".pl" autocmd FileType perl :imap :exe "Man ".expand("").".pl" autocmd FileType perl :setlocal iskeyword=@,48-57,_,192-255,: autocmd FileType man :nmap q :call QuitHelp() autocmd FileType info :nmap q :call QuitHelp() autocmd FileType help :nmap q :call QuitHelp() function QuitHelp() bd if bufname("%")=="" q endif endfunction """ Сохранение: nmap :w vmap :w imap :w cmap :w """ Менеджер окон: """ Plugin: selectbuf """ :help selectbuf """ Вкл/Выкл вставку as-is: """ в NORMAL: i и всегда входят в INSERT с nopaste """ в NORMAL: входит в INSERT с paste """ в INSERT: переключает paste/nopaste nnoremap :set pastei nnoremap i :set nopastei nnoremap :set nopaste imap :set paste set pastetoggle= """ Перекодирование файла между русскими кодировками: """ (кодировки выбираются через меню) set wcm= menu Encoding.Win->Koi :silent %!iconv -f cp1251 -t koi8-r menu Encoding.Koi->Win :silent %!iconv -f koi8-r -t cp1251 menu Encoding.Dos->Koi :silent %!iconv -f cp866 -t koi8-r menu Encoding.Koi->Dos :silent %!iconv -f koi8-r -t cp866 menu Encoding.Win->Dos :silent %!iconv -f cp1251 -t cp866 menu Encoding.Dos->Win :silent %!iconv -f cp866 -t cp1251 map :emenu Encoding. """ Выход (если файл записан) nmap :qa vmap :qa imap :qa cmap :qa """ Проверка на ошибки perl-скрипта при записи на диск """ Переход к следующей/предыдущей ошибке / set makeprg=$VIMRUNTIME/tools/efm_perl.pl\ -c\ %\ $* set errorformat=%f:%l:%m nmap :cprevious nmap :cnext imap :cprevious imap :cnext autocmd BufWritePost * call Make() function Make() if &ft == "perl" silent! make cwindow 4 " при открытии/обновлении quickfix window глючит подсветка perl if bufwinnr("$") > 1 redraw! endif endif endfunction """ Дописывание текущего слова: , + map [Z imap =InsertTabWrapper("backward") imap =InsertTabWrapper("forward") function! InsertTabWrapper(direction) let col = col('.') - 1 if !col || getline('.')[col - 1] !~ '\k' return "\" elseif "backward" == a:direction return "\" else return "\" endif endfunction """ Переключение между открытыми файлами: , + nmap :cclose:bnext nmap :cclose:bprevious set hidden """ Выделение текста: +Arrows,Home,End nmap [1;2A vk nmap [1;2B vj nmap [1;2C vl nmap [1;2D vh nmap [1;2H v^ nmap [1;2F v$ vmap [1;2A k vmap [1;2B j vmap [1;2C l vmap [1;2D h vmap [1;2H ^ vmap [1;2F $ imap [1;2A vk imap [1;2B vj imap [1;2C vl imap [1;2D vh imap [1;2H v^ imap [1;2F v$ " а это для ситуации когда +... нажимается в INSERT+paste " ( съедается paste, да ещё и курсор сдвигается влево, если может) nmap [1;2A :if wincol()!=1 \| exe "norm l" \| endif \| norm vk nmap [1;2B :if wincol()!=1 \| exe "norm l" \| endif \| norm vj nmap [1;2C :if wincol()!=1 \| exe "norm l" \| endif \| norm vl nmap [1;2D lvh nmap [1;2H lv^ nmap [1;2F lv$ """ Запоминание выделенного текста (в буфер VIM и в X Clipboad): Ctrl-Insert """ Вырезание выделенного текста (в буфер VIM и в X Clipboad): Shift-Del " странно... через xcb русский одно время не копировался - поставил xclip, " и русский заработал... и через xclip и через xcb!? "vmap [2;5~ y:call system("echo -n \"".escape(getreg(""),"\\\"$`")."\" \| xcb -d :0 -s 0")gvv "vmap [3;2~ d:call system("echo -n \"".escape(getreg(""),"\\\"$`")."\" \| xcb -d :0 -s 0") vmap [2;5~ y:call system("echo -n \"".escape(getreg(""),"\\\"$`")."\" \| xclip")gvv vmap [3;2~ d:call system("echo -n \"".escape(getreg(""),"\\\"$`")."\" \| xclip") """ Скроллирование текста без смещения курсора: +Arrows nmap [1;5A nmap [1;5B nmap [1;5C z nmap [1;5D z vmap [1;5A vmap [1;5B vmap [1;5C z vmap [1;5D z imap [1;5A imap [1;5B imap [1;5C z imap [1;5D z """ Переход по tag-ссылкам: +Arrows autocmd FileType man let b:tag_regex="\\S\\+(.)" autocmd FileType help let b:tag_regex="|\\S\\+|\\|'\\S\\+'\\|{\\S\\+}" autocmd FileType perl let b:tag_regex="\\<\\w\\+\\(::\\|(\\)" nmap [1;3A :call search(b:tag_regex,"bW") nmap [1;3B :call search(b:tag_regex,"W") nmap [1;3C nmap [1;3D """ За|Рас-комментирование: #, +#, +C """ Plugin: feraltogglecommentify nmap # FtcTc vmap # FtcTc nmap 3 :CCj vmap 3 :CCj imap 3 :CCji imap FtcDLAC i """ Полноэкранный режим """ (автоматически распахивать все новые окна :help, :split, etc.) let g:winenter_hide="" autocmd WinEnter * call Hide() function Hide() " vimdiff распахивать, пожалуй, не будем ошшипкаа :) if &diff == "" if exists("g:winenter_hide") silent! hide else let g:winenter_hide="" endif endif endfunction " при не-vsplit глючит в моём "полноэкранном стиле" :( let g:manpageview_winopen="vsplit" """ При уходе из полноэкранного help по не удалять этот буфер: autocmd BufWinLeave * if &ft == "help" | set buflisted | endif " окно selectbuf не распахивать на весь экран nmap :unlet g:winenter_hideSelectBuf """ Проверка правописания """ Plugin: vimspell + мой патч + мой wrapper для одновременного aspell en+ru """ :help vimspell let spell_executable = "aspell" let spell_language_list = "english" let spell_auto_type = "mail,text,note,html,none,changelog" let spell_english_iskeyword = "@,48-57,_,163,179,192-255" let spell_english_perl_iskeyword = "@,48-57,_,163,179,192-255,:" let spell_markup_ft = ",html,php,xhtml,dtml,tex,mail,help,text,,changelog,note," autocmd FileType perl let b:spell_filter=" grep '^#' " autocmd FileType vim let b:spell_filter=" grep '^\"' " " Transparent editing of gpg encrypted files. " By Wouter Hanegraaff " Folding permanence added by me. augroup encrypted au! " First make sure nothing is written to ~/.viminfo while editing " an encrypted file. autocmd BufReadPre,FileReadPre *.gpg set viminfo= " We don't want a swap file, as it writes unencrypted data to disk autocmd BufReadPre,FileReadPre *.gpg set noswapfile " Switch to binary mode to read the encrypted file autocmd BufReadPre,FileReadPre *.gpg set bin autocmd BufReadPre,FileReadPre *.gpg let ch_save = &ch|set ch=2 autocmd BufReadPost,FileReadPost *.gpg '[,']!gpg --decrypt 2> /dev/null " Switch to normal mode for editing autocmd BufReadPost,FileReadPost *.gpg set nobin autocmd BufReadPost,FileReadPost *.gpg let &ch = ch_save|unlet ch_save autocmd BufReadPost,FileReadPost *.gpg execute ":doautocmd BufReadPost " . expand("%:r") " Save&Restore folding autocmd BufReadPost,FileReadPost *.gpg loadview autocmd BufWritePre,FileWritePre *.gpg mkview " Convert all text to encrypted text before writing autocmd BufWritePre,FileWritePre *.gpg '[,']!gpg --default-recipient-self -ae 2>/dev/null " Undo the encryption so we are back in the normal text, directly " after the file has been written. autocmd BufWritePost,FileWritePost *.gpg u autocmd BufWritePost,FileWritePost *.gpg loadview augroup END """ Полное восстановление позиции курсора """ (ВКЛЮЧАЯ колонку и скроллинг окна) autocmd BufEnter * call CurPos("restore") autocmd BufLeave * call CurPos("save") function CurPos(action) if a:action == "save" let b:saveve = &virtualedit let b:savesiso = &sidescrolloff set virtualedit=all set sidescrolloff=0 let b:curline = line(".") let b:curvcol = virtcol(".") let b:curwcol = wincol() normal! g0 let b:algvcol = virtcol(".") - 1 normal! M let b:midline = line(".") execute "normal! ".b:curline."G".b:curvcol."|" let &virtualedit = b:saveve let &sidescrolloff = b:savesiso elseif a:action == "restore" && exists("b:curline") let b:saveve = &virtualedit let b:savesiso = &sidescrolloff set virtualedit=all set sidescrolloff=0 execute "normal! ".b:midline."Gzz".b:curline."G0" let nw = wincol() - 1 if b:curvcol != b:curwcol - nw execute "normal! ".b:algvcol."|zs" let s = wincol() - nw - 1 if s != 0 execute "normal! ".s."zl" endif endif execute "normal! ".b:curvcol."|" let &virtualedit = b:saveve let &sidescrolloff = b:savesiso " unlet b:saveve b:savesiso b:curline b:curvcol b:curwcol b:algvcol b:midline endif return "" endfunction """ Ускоренное открытие больших файлов """ (можно ограничиться простым syntax off, но так вроде правильнее) let g:LargeFile = "3000000" autocmd BufReadPre * call FasterLargeFiles() function FasterLargeFiles() let f=expand("") if exists("g:LargeFile") && getfsize(f) > g:LargeFile set ei=FileType setlocal noswf bh=unload bt=nowrite ro let f=escape(substitute(f,'\','/','g'),' ') augroup LargeFile au! exe "au LargeFile BufEnter ". f ." set ul=-1 ei=FileType" exe "au LargeFile BufLeave ". f ." set ul=1000 ei=" exe "au LargeFile BufUnload ". f ." au! LargeFile * ". f augroup END endif endfunction """ Подсветка синтаксиса hi Normal ctermbg=4 cterm=NONE ctermfg=7 " hi Comment ctermbg=NONE cterm=NONE ctermfg=6 hi Comment ctermbg=0 cterm=NONE ctermfg=6 hi Constant ctermbg=NONE cterm=bold ctermfg=3 hi Special ctermbg=NONE cterm=bold ctermfg=5 hi Identifier ctermbg=NONE cterm=bold ctermfg=2 hi Statement ctermbg=NONE cterm=bold ctermfg=7 hi PreProc ctermbg=0 cterm=bold ctermfg=5 " hi Type " hi Ignore " hi Error " hi Todo hi NonText ctermbg=NONE cterm=NONE ctermfg=6 hi Underlined cterm=NONE ctermfg=7 " поиск (:set hls), quickfix window (текущая ошибка) hi Search cterm=NONE ctermfg=0 ctermbg=6 """ Подсветка синтаксиса: perl " кавычки подсвечивать не как строку, а как if, while, ... let perl_string_as_statement=1 " подсвечивать имя пакета let perl_want_scope_in_variables=1 " @{ $qwe{asd}[123] } let perl_extended_vars=1 " метод подсвечивать как обычную функцию, а не как продолжение переменной hi perlMethod ctermfg=gray " ключи хешей подсвечивать как переменные, а не как строки hi! def link perlVarSimpleMemberName perlIdentifier " имена пакетов более блеклые hi perlType ctermfg=darkgreen " логические отрицания ! более заметные hi perlNOT cterm=BOLD ctermfg=6 """ Подсветка синтаксиса: iCGI " let icgiperl_want_scope_in_variables=1 let icgiperl_extended_vars=1 let icgiperl_string_as_statement=1 hi ICGIDelimiter ctermfg=blue ctermbg=black hi ICGIPerlBlock ctermfg=gray ctermbg=black hi icgiperlComment ctermfg=cyan ctermbg=black hi icgiperlSpecial ctermfg=magenta ctermbg=black hi icgiperlTodo ctermfg=black ctermbg=brown hi icgiperlType ctermfg=lightgreen ctermbg=black hi ONLYicgiperlIdentifier ctermfg=darkgreen ctermbg=black hi icgiperlFunctionName ctermfg=gray ctermbg=black hi icgiperlMethod ctermfg=gray ctermbg=black hi! def link icgiperlVarSimpleMemberName icgiperlIdentifier hi ONLYicgiperlStatement ctermfg=white ctermbg=black hi ONLYicgiperlConstant ctermfg=darkcyan ctermbg=black hi ONLYicgiperlPreProc ctermfg=black ctermbg=cyan hi ONLYicgiperlError cterm=bold ctermfg=7 ctermbg=1 """ Подсветка синтаксиса: vimspell hi SpellErrors cterm=NONE ctermfg=3 ctermbg=NONE autocmd BufEnter * if &ft == "perl" | hi SpellErrors ctermbg=0 | endif autocmd BufLeave * hi SpellErrors ctermbg=NONE """ Подсветка синтаксиса: vim hi vimBracket cterm=bold ctermfg=2 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """ " """ Разная мелочь для удобства " """ " """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """ Выбор типа для 'странных' файлов autocmd BufNewFile,BufRead *.note set ft=note autocmd BufNewFile,BufRead *.txt set ft=note autocmd BufNewFile,BufRead *TODO* set ft=note autocmd BufNewFile,BufRead *TechSpec* set ft=note autocmd BufNewFile,BufRead *BUG* set ft=note autocmd BufNewFile,BufRead *vim*/doc/*.txt set ft=help autocmd BufNewFile,BufRead *.opera/cache* set ft=html autocmd BufNewFile,BufRead *.htmlt set ft=html autocmd BufNewFile,BufRead *.html-* set ft=html autocmd BufNewFile,BufRead *.cgi-* set ft=perl autocmd BufNewFile,BufRead *.pl-* set ft=perl autocmd BufNewFile,BufRead *.pm-* set ft=perl autocmd BufNewFile,BufRead *.t set ft=perl """ Programming autocmd FileType perl,sh setlocal formatoptions-=t """ Tags " Поиск tags везде где дотянусь в пределах типового веб-проекта set tags+=./.lib/.tmp/tags,./../.lib/.tmp/tags,./../../.lib/.tmp/tags,./../../../.lib/.tmp/tags,./../../../../.lib/.tmp/tags """ Make " Использование вспомогательных скриптов при проверке синтаксиса некоторых " perl-скриптов для подгрузки всех нужных (для проверяемого) модулей и " файлов, плюс дополнительная фильтрация неактуальных warning-ов autocmd BufRead /var/www/*/html/* setlocal makeprg=check_project\ %\ $* autocmd BufRead */Feed/SportBet/* setlocal makeprg=check_parsers\ %\ $* autocmd BufRead */.gaim/* setlocal makeprg=true """ Патчи autocmd BufRead *.patch exe "FoldNonMatching ^diff -1" | normal 1G """ Почта """ (при вводе письма перейти сразу на вторую пустую строку и в режим вставки) autocmd BufRead /tmp/mutt* /^$/|/^$/|set fo=tcrq|startinsert """ Abbr " Вставлять дату/время. iabbr DATE =strftime("%d/%m/%y %H:%M:%S") iabbr DATEen :let lc_time_=v:lc_time:language time Ci=strftime("%a %b %d %X %Z %Y"):execute "language time " . lc_time_:unlet lc_time_a " Кракозябры для iCGI func Eatchar(pat) let c = nr2char(getchar()) return (c =~ a:pat) ? '' : c endfunc autocmd BufNewFile,BufRead *.html call HTML_Abbr() fun! HTML_Abbr() iabbr __if =Eatchar('\s') iabbr __for =Eatchar('\s') iabbr @~ @~~@=Eatchar('\s') iabbr ^~ ^~~^=Eatchar('\s') iabbr #~ #~~#=Eatchar('\s') iabbr =Eatchar('\s') endfun """ Если нажат - наверное это не зря? Наверное что-то добавить хотца... nmap A """ Фильтр для удаления из html всех тегов кроме тегов форм: :ShowForm function! s:ShowForm() %!perl -p0e 'use Regexp::Common "RealHTML"; $_=join"\n",map{s/\s*$//;$_}/<\/?(?:form|input|select|option|textarea|button)${RE{">"}}[^<]*/ig' endfunction command! ShowForm :call ShowForm() """ Определение текущей группы подсветки: \hi и \hlt map \hi :echo "hi<" . synIDattr(synID(line("."),col("."),1),"name") . '> trans<' . synIDattr(synID(line("."),col("."),0),"name") . "> lo<" . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name") . ">" """ Шаблоны для новых файлов "au BufNewFile *.pl 0r~/.skel.pl | exe "normal G" | startinsert """ Копирование между разными VIM-процессами """ (не нужно - + и + гораздо удобнее!) "nmap \x :r ${HOME}/.vimxfer "vmap \x :w! ${HOME}/.vimxfer """ Автоматически сворачивать perl-процедуры (подглюкивает на моих клозурах) " let perl_fold=1 """ Поиск в текущем окне по perl-овскому регулярному выражению. """ Выражение вводится в виде /regexhere/si или !regexhere! и т.п. """ В выражении можно использовать $t как сокращение для [^>]*>\s* """ Для того, чтобы помимо установки курсора на начало совпадения текст """ совпадения был выделен цветом нужно раскомментировать VIM::DoCommand() """ и настроить цвет в строке 'hi perlre ...' """ Для поиска от курсора нажать . Для повторного поиска . """ Передвижение курсора между началом совпадения perl-овского регулярного """ выражения и концом совпадения (Shift+F7). "nmap :call PerlSearch() "nmap :call PerlSearchSE() "hi perlre ctermbg=white ctermfg=blue "function! PerlSearch() "perl <Get(1..$curbuf->Count())); " my($y,$x)=$curwin->Cursor(); " $y--; $x++; " $buf=~/(?:.*\n){$y}.{$x}/g; " return unless $buf=~/($_[0])/g; " my ($s,$e)=($-[0],$+[0]-1); " $e-- if substr($buf,$e,1) eq "\n"; " getxy($buf,$s), getxy($buf,$e) " } " $PerlSearch::regex = VIM::Eval('input("=~ ","'."\Q$PerlSearch::regex\E".'")'); " my $t = qr/[^>]*>\s*/; " return VIM::Msg("No matches found","Error") " unless my @c = re_start_end(eval 'qr'.$PerlSearch::regex); " #VIM::DoCommand('match perlre /\%'.$c[0].'l\%'.($c[1]+1).'c\_.*'. " # '\%'.$c[2].'l\%'.($c[3]+2).'c/'); " @PerlSearch::c = @c; " $curwin->Cursor($c[0],$c[1]); "EOF "endfunction "function! PerlSearchSE() "perl <Cursor($PerlSearch::c[0],$PerlSearch::c[1]); "EOF "endfunction """ Пример использования perl: " First, a customizable word count " :perl $count = 0 " :perldo $count += split /[;_<> ]/, $_ " :perl VIM::Msg($count) " Then, a special sorting routine, getting text from the editor's current " buffer and writing back to it: " :perl @lines = sort {$a <=> $b} $curbuf->Get(1 .. 15) " :perl $curbuf->Set(1, @lines) " Or, in short, " :perl $curbuf->Set(1, sort {$a <=> $b} $curbuf->Get(1 .. 15)) """ Отладка событий "autocmd BufNewFile * echo "BufNewFile"." at ".expand("") "autocmd BufReadPre * echo "BufReadPre"." at ".expand("") "autocmd BufRead * echo "BufRead"." at ".expand("") "autocmd BufReadPost * echo "BufReadPost"." at ".expand("") ""autocmd BufReadCmd * echo "BufReadCmd"." at ".expand("") "autocmd BufFilePre * echo "BufFilePre"." at ".expand("") "autocmd BufFilePost * echo "BufFilePost"." at ".expand("") "autocmd FileReadPre * echo "FileReadPre"." at ".expand("") "autocmd FileReadPost * echo "FileReadPost"." at ".expand("") ""autocmd FileReadCmd * echo "FileReadCmd"." at ".expand("") "autocmd FilterReadPre * echo "FilterReadPre"." at ".expand("") "autocmd FilterReadPost * echo "FilterReadPost"." at ".expand("") "autocmd FileType * echo "FileType"." at ".expand("") "autocmd Syntax * echo "Syntax"." at ".expand("") "autocmd StdinReadPre * echo "StdinReadPre"." at ".expand("") "autocmd StdinReadPost * echo "StdinReadPost"." at ".expand("") "autocmd BufWrite * echo "BufWrite"." at ".expand("") "autocmd BufWritePre * echo "BufWritePre"." at ".expand("") "autocmd BufWritePost * echo "BufWritePost"." at ".expand("") ""autocmd BufWriteCmd * echo "BufWriteCmd"." at ".expand("") "autocmd FileWritePre * echo "FileWritePre"." at ".expand("") "autocmd FileWritePost * echo "FileWritePost"." at ".expand("") ""autocmd FileWriteCmd * echo "FileWriteCmd"." at ".expand("") "autocmd FileAppendPre * echo "FileAppendPre"." at ".expand("") "autocmd FileAppendPost * echo "FileAppendPost"." at ".expand("") ""autocmd FileAppendCmd * echo "FileAppendCmd"." at ".expand("") "autocmd FilterWritePre * echo "FilterWritePre"." at ".expand("") "autocmd FilterWritePost * echo "FilterWritePost"." at ".expand("") "autocmd FileChangedShell * echo "FileChangedShell"." at ".expand("") "autocmd FileChangedRO * echo "FileChangedRO"." at ".expand("") "autocmd FocusGained * echo "FocusGained"." at ".expand("") "autocmd FocusLost * echo "FocusLost"." at ".expand("") ""autocmd FuncUndefined * echo "FuncUndefined"." at ".expand("") ""autocmd CursorHold * echo "CursorHold"." at ".expand("") "autocmd BufEnter * echo "BufEnter"." at ".expand("") "autocmd BufLeave * echo "BufLeave"." at ".expand("") "autocmd BufWinEnter * echo "BufWinEnter"." at ".expand("") "autocmd BufWinLeave * echo "BufWinLeave"." at ".expand("") "autocmd BufUnload * echo "BufUnload"." at ".expand("") "autocmd BufHidden * echo "BufHidden"." at ".expand("") "autocmd BufNew * echo "BufNew"." at ".expand("") "autocmd BufAdd * echo "BufAdd"." at ".expand("") "autocmd BufCreate * echo "BufCreate"." at ".expand("") "autocmd BufDelete * echo "BufDelete"." at ".expand("") "autocmd BufWipeout * echo "BufWipeout"." at ".expand("") "autocmd WinEnter * echo "WinEnter"." at ".expand("") "autocmd WinLeave * echo "WinLeave"." at ".expand("") "autocmd CmdwinEnter * echo "CmdwinEnter"." at ".expand("") "autocmd CmdwinLeave * echo "CmdwinLeave"." at ".expand("") ""autocmd GUIEnter * echo "GUIEnter"." at ".expand("") ""autocmd VimEnter * echo "VimEnter"." at ".expand("") ""autocmd VimLeavePre * echo "VimLeavePre"." at ".expand("") ""autocmd VimLeave * echo "VimLeave"." at ".expand("") ""autocmd EncodingChanged * echo "EncodingChanged"." at ".expand("") ""autocmd FileEncoding * echo "FileEncoding"." at ".expand("") ""autocmd RemoteReply * echo "RemoteReply"." at ".expand("") ""autocmd TermChanged * echo "TermChanged"." at ".expand("") ""autocmd TermResponse * echo "TermResponse"." at ".expand("") ""autocmd User * echo "User"." at ".expand("")