<F7> меняет по очереди формат концов строк (dos - <CR> <NL>, unix - <NL>, mac - <CR>)<F8> переоткрывает файл в разных кодировках через :e ++enc=кодировка<Shift+F8> тоже что и <F8>, но предварительно меняет внутреннююкодировку vim на равную кодировке файла. Это нужно когда vim умничает икоманда :e ++enc=кодировка для него не указ. Минус этого метода в томчто когда внутренняя кодировка равна 8bit-cp866, то vim некоторыерусские буквы неверно показывает, но именно показывает поскольку есликонвертировать то ничего не портится (сравнить можно с результатомработы <F8>).<Ctrl+F8> меняет кодировку файла, то есть после его сохранения он будетконвертированСтатусная строка позволяет контролировать происходящее. Показывает иформат файла и кодировки, заодно в нормальном режиме показывает кодтекущего символа в дес. и шестнадцатиричном виде.Кодировки: koi8-r cp1251 8bit-cp866 utf-8 ucs-2le.где ucs-2le - MS Windows unicode encoding (можно посмотреть содержимое вордовского файла, правда мотать неудобно из-за длинных строк)Опробация проводилась в ru_RU.UTF-8
" <F7> File fileformat (dos - <CR> <NL>, unix - <NL>, mac - <CR>)map <F7> :execute RotateFileFormat()<CR>vmap <F7> <C-C><F7>imap <F7> <C-O><F7>let b:fformatindex=0function! RotateFileFormat() let y = -1 while y == -1 let encstring = "#unix#dos#mac#" let x = match(encstring,"#",b:fformatindex) let y = match(encstring,"#",x+1) let b:fformatindex = x+1 if y == -1 let b:fformatindex = 0 else let str = strpart(encstring,x+1,y-x-1) return ":set fileformat=".str endif endwhileendfunction" <F8> File encoding for open" ucs-2le - MS Windows unicode encodingmap <F8> :execute RotateEnc()<CR>vmap <F8> <C-C><F8>imap <F8> <C-O><F8>let b:encindex=0function! RotateEnc() let y = -1 while y == -1 let encstring = "#koi8-u#cp1251#8bit-cp866#utf-8#ucs-2le#" let x = match(encstring,"#",b:encindex) let y = match(encstring,"#",x+1) let b:encindex = x+1 if y == -1 let b:encindex = 0 else let str = strpart(encstring,x+1,y-x-1) return ":e ++enc=".str endif endwhileendfunction" <Shift+F8> Force file encoding for open (encoding = fileencoding)map <S-F8> :execute ForceRotateEnc()<CR>vmap <S-F8> <C-C><S-F8>imap <S-F8> <C-O><S-F8>let b:encindex=0function! ForceRotateEnc() let y = -1 while y == -1 let encstring = "#koi8-u#cp1251#8bit-cp866#utf-8#ucs-2le#" let x = match(encstring,"#",b:encindex) let y = match(encstring,"#",x+1) let b:encindex = x+1 if y == -1 let b:encindex = 0 else let str = strpart(encstring,x+1,y-x-1) :execute "set encoding=".str return ":e ++enc=".str endif endwhileendfunction" <Ctrl+F8> File encoding for save (convert)map <C-F8> :execute RotateFEnc()<CR>vmap <C-F8> <C-C><C-F8>imap <C-F8> <C-O><C-F8>let b:fencindex=0function! RotateFEnc() let y = -1 while y == -1 let encstring = "#koi8-u#cp1251#8bit-cp866#utf-8#ucs-2le#" let x = match(encstring,"#",b:fencindex) let y = match(encstring,"#",x+1) let b:fencindex = x+1 if y == -1 let b:fencindex = 0 else let str = strpart(encstring,x+1,y-x-1) return ":set fenc=".str endif endwhileendfunctionset fileencodings=utf-8,cp1251,cp866,koi8-uset encoding=utf-8set termencoding=utf-8set statusline=%<%f%h%m%r%=format=%{&fileformat}\ file=%{&fileencoding}\ enc=%{&encoding}\ %b\ 0x%B\ %l,%c%V\ %Pset laststatus=2