LINUX.ORG.RU

Я поступаю так:

В ~/.vimrc помещаю строки:

8<-----------------------

set fileencodings=utf-8,cp1251,koi8-r,cp866
set encoding=utf-8

.............

set ruler
set statusline=%<%f%h%m%r%=format=%{&fileformat}\ file=%&fileencoding}\ enc=%{&encoding}\ %b\ 0x%B\ %l,%c%V\ %P

...............


map <F8> :execute RotateEnc()<CR>

vmap <F8> <C-C><F8>
imap <F8> <C-O><F8>
let b:encindex=0
function! RotateEnc()
let y = -1
while y == -1
" let encstring = "#koi8-r#cp1251#8bit-cp866#utf-8#ucs-2le#"
let encstring = "#cp1251#8bit-cp866#koi8-r#utf-8#"
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
endwhile
endfunction
" <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=0
function! RotateFEnc()
let y = -1
while y == -1
let encstring = "#koi8-r#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
endwhile
endfunction

8<-----------------------

В результате vim автоматически определяет кодироку файла и переходит на нее. Но делает он это не чень надежно. Поэтому сделано так, что по клавише F8 он эту кодировку поменяет. Кодировку файла он показывает в статусной строке.

kraw ★★★★
()

light version:

set wildmenu
set wcm=<Tab>
menu Encoding.koi8-r :e ++enc=koi8-r<CR>
menu Encoding.windows-1251 :e ++enc=cp1251<CR>
menu Encoding.ibm-866 :e ++enc=ibm866<CR>
menu Encoding.utf-8 :e ++enc=utf-8 <CR>
map <F8> :emenu Encoding.<TAB>

gh0stwizard ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.