Всегда очень сильно бесила необходимость постоянно переключаться на англ. язык и обратно если я редактировал что-то, что использовало кириллицу, и нужно было делать что-то в normal mode. В первую очередь мешало при создании веб-страниц.

Об этой теме довольно много написано, но у меня проблема была так же в том, что я использую клавиатуру dvorak, и фокус с

set keymap=russian-jcukenwin  
 set iminsert=0  
 set imsearch=0  
 highlight lCursor guifg=NONE guibg=Cyan

Не прокатывал. Кириллические буквы печатались в соответствии с qwerty-раскладкой.

Решил написать собственный файл-раскладку по примеру существующих файлов. Ищем существующие файлы:

whereis vim, cd /usr/share/vim/vim73/keymap/, ls – и внезапно обнаруживаю russian-dvorak.vim, моей радости нету предела, итого:

set keymap=russian-dvorak
set iminsert=0
set imsearch=0
highlight lCursor guifg=NONE guibg=Cyan

в .vimrc.

Переключается через Ctrl+^.

Вообще это очень простой выход, но нетривиальный, и я в Интернете не находил ничего, что мне могло помочь, и я не решил бы проблему, если бы не захотел сам писать кастомный файл. Ибо проблема довольно узкая. (Однако – еще один плюсик vim за то, что этот файл там был, кто-то таки подумал об этом. Приятно.)

И кстати за одно еще парочка интересных моментов из того конфиг-файла. Включаем синтаксис, номеры строк, автоматическое индентирование, подсветку результатов поиска, а так же заменяем ооочень неудобную для нажатия Esc на комбинацию qj, которые редко используются и рядом находятся на клавиатуре. На саму работу не влияет, кроме ничтожной задержки при нажатии q (ибо работает в Insert mode).

syntax on
set number
set autoindent
set dir=/tmp
" Press Shift-Space (may not work on your system).
:imap qj <Esc>
set hlsearch