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

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: