Re: key mapping in vim, locale ru_RU.UTF-8
On Птн, 30 Июл 2004, Gossen Alexey wrote:
> Добрый день господа
>
> Не поделится ли кто частью конфига в виме, где подвязываются клавиши из
> русского режима клавиатуры. Чтобы не переключая раскладку дать команду
> i, a, o, dd, и так далее. Нужны самые примитивные функции, выполняемые в
> нормальном модусе (normal mode).
>
> Ах да, локаль ru_RU.UTF-8
>
> Спасибо за внимание
>
> --
> Guten Tag, Alexey
>
>
> --
> To UNSUBSCRIBE, email to debian-russian-REQUEST@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
>
следующий конфиг реализует необходимую функциональность при
LANG=ru_RU.UTF-8,ru_RU.CP1251,ru_RU.KOI8-R,
и переключает кодировки utf-8,cp1251,koi8-r,cp866(частично) по
комбинациям F9u,w,k,d
PS:
отмаплены не все комбинации, кому что необходимо может добавить
--
Thanks, Kostyukov Alexander (kab@interpipe.dp.ua)
--------------------------------------------
" Config for vim
" Author: Kostyukov Alexander
" Sets
set ignorecase
set smartcase
set shiftwidth=4
set nowrap
set vb
" Functions
let g:FlagMap = 0
function Map(cmd,in,out)
if a:cmd == 'map'
execute a:cmd.' '.iconv(a:in,"8bit-koi8-r",&enc).' '.a:out
elseif g:FlagMap == 1
execute a:cmd.' '.iconv(a:in,"8bit-koi8-r",&enc)
endif
endfunction
function Mapper(cmd)
call Map(a:cmd, 'ш', 'i')
call Map(a:cmd, 'г', 'u')
call Map(a:cmd, 'з', 'p')
call Map(a:cmd, 'З', 'P')
call Map(a:cmd, 'К', 'R')
call Map(a:cmd, 'щ', 'o')
call Map(a:cmd, 'Щ', 'O')
call Map(a:cmd, 'ф', 'a')
call Map(a:cmd, 'Ф', 'A')
call Map(a:cmd, 'н', 'y')
call Map(a:cmd, 'в', 'd')
call Map(a:cmd, 'О', 'J')
call Map(a:cmd, 'Жцй', ':wq')
call Map(a:cmd, 'Жц', ':w')
call Map(a:cmd, 'Жй', ':q')
call Map(a:cmd, 'Ж', ':')
call Map(a:cmd, '<F9>г',"<Esc>:call SetEnc('utf-8')<CR>")
call Map(a:cmd, '<F9>л',"<Esc>:call SetEnc('8bit-koi8-r')<CR>")
call Map(a:cmd, '<F9>ц',"<Esc>:call SetEnc('8bit-cp1251')<CR>")
call Map(a:cmd, '<F9>в',"'<Esc>:call SetEnc('8bit-cp866')<CR>")
let g:FlagMap = 1
endfunction
function SetEnc(Enc)
call Mapper('unmap')
let &encoding = a:Enc
let &fileencoding = a:Enc
call Mapper('map')
map <F9>k <Esc>:call SetEnc('8bit-koi8-r')<CR>
map <F9>w <Esc>:call SetEnc('8bit-cp1251')<CR>
map <F9>d <Esc>:call SetEnc('8bit-cp866')<CR>
map <F9>u <Esc>:call SetEnc('utf-8')<CR>
endfunction
" Main section
if v:lang == 'ru_RU.UTF-8'
set termencoding=utf-8
elseif v:lang == 'ru_RU.CP1251'
set termencoding=8bit-cp1251
else
set termencoding=8bit-koi8-r
endif
call SetEnc(&termencoding)
Reply to: