[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Как просмотреть файл в разных русских кодировках?



Привет, Dmitry-T:
Хочется иметь возможноть один и тот же файл быстро просмотреть или даже
поредактировать в разных русских кодировках (локаль UTF-8). Пока самое
лучшее что придумал это написал несколько маленьких скриптов типа:

#!/bin/sh
gvim --cmd "edit ++enc=cp1251" -- $1

и настроил файловый менеджер чтоб нажимая на файле правую кнопку мыши в
меню можно было выбрать через какой скрипт открыть файл, но... например,
когда файл открываю архиватором, то хочется если корючки, то тут же
попереключать кодировки...
В vim можно дать команду :edit ++enc=cp1251 имя_файла, но я не понял как
такую команду загнать в макрос чтоб при этом имя файла было
автоматически равно текущему открытому файлу.
Может есть какая удобная программка или редактор где можно легко в ходе
редактирования переключать кодировки. Emacs так может? Пробовал yudit -
вроде для этого сделан, но жутко своеобразный и почему-то можно выбирать
шрифты но не кодировки...



В аттаче - скрипт для vim, меняющий по F8 кодировку koi8-r -> cp1251 -> utf8 -> cp866
(cliex@opteron)*(22:05)*(~)
-=>> cat .vimrc
set ai nocp digraph ek hid ru sc wmnu noet nosol si
set bs=2 fo=cqrt ls=2 shm=at ww=<,>,h,l ts=4 sw=4
set com=s1:/*,mb:*,ex:*/,://,b:# syn=on filetype=on
set vi=%,'50,\"50,:50 lcs=tab:>-,trail:.,extends:>
set pt=<F5> shm=I tm=750 nomore modelines=5 hls!
set tabstop=4
syn on

ino <Down> <C-O>gj
ino <Up> <C-O>gk
nno <Down> gj
nno <Up> gk

nno <F2> :set hls!<bar>set hls?<CR>
nno <F3> :syn clear <CR>
nno <F4> :set nu!<bar>set nu?<CR>

if has("gui_running")
   colo darkblue
   set gfn=Bitstream\ Vera\ Sans\ Mono\ 8
else
   colo elflord
endif



set encoding=koi8-r
set termencoding=koi8-r

map <F8> :execute RotateEnc()<CR>
map <F7> :let &fileencoding=&encoding<CR>
let b:encindex=0
function! RotateEnc()
       let y = -1
       while y == -1
               let encstring = "#8bit-cp1251#8bit-cp866#utf-8#koi8-r#"
               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 ":set encoding=".str
               endif
       endwhile
endfunction

set statusline=%<%f%h%m%r%=%b\ %{&encoding}\ 0x%B\ \ %l,%c%V\ %P

Reply to: