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: