On Птн, 30 Июл 2004, Gossen Alexey wrote:

> Добрый день господа
> 
> Не поделится ли кто частью конфига в виме, где подвязываются клавиши из
> русского режима клавиатуры. Чтобы не переключая раскладку дать команду
> i, a, o, dd, и так далее. Нужны самые примитивные функции, выполняемые в
> нормальном модусе (normal mode).
> 
> Ах да, локаль ru_RU.UTF-8
> 
> Спасибо за внимание
> 
> -- 
> Guten Tag, Alexey
> 
> 
> -- 
> To UNSUBSCRIBE, email to [EMAIL PROTECTED]
> with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
> 


следующий конфиг реализует необходимую функциональность при
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 ([EMAIL PROTECTED])
--------------------------------------------
" 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)

Ответить