IdeaVim and russian layout

You can install Fcitx and IdeaVimExtension.

Add the following line to your ~/.ideavimrc:

set keep-english-in-normal-and-restore-in-insert

IDE will switch to English in normal mode and restore the previous input language in insert mode.

Installing and configuring Fcitx on Ubuntu Gnome (Fcitx - ArchWiki):

  1. Install with sudo apt install fcitx
  2. Create ~/.pam_environment file with the following contents:
XMODIFIERS DEFAULT=@im=fcitx
GTK_IM_MODULE DEFAULT=fcitx
QT_IM_MODULE DEFAULT=fcitx
  1. Add a startup application:

fcitx startup program

  1. Install Input Method Panel Gnome extension.

For Vim you may want to install fcitx.vim plugin.


First i tried to use langmap like in this gist but IdeaVim does not support langmap.

Next I tried to use map so I made this solution:

let rumap = 'йцукенгшщзхъфывапролджэёячсмитьбюЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ'
let enmap = 'qwertyuiop[]asdfghjkl;''\zxcvbnm,.QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>' 
let mapLen = strchars(rumap)
let i = 0
while i < mapLen
    let ruChar = matchstr(rumap, ".", byteidx(rumap, i))
    let enChar = enmap[i]
    "echo 'map '.ruChar.' '.enChar
    execute 'map '.ruChar.' '.enChar
    execute 'cmap '.ruChar.' '.enChar
    let i += 1
endwhile

map Ё \|
cmap Ё \|

You can customize it for your keyboard layout.

But I forgot that IdeaVim does not support vimscript and cmap and I added echo 'map '.ruChar.' '.enChar (commented line), appended code from above to .vimrc and opened vim from command line so it printed me all map commands. I added them to .ideavimrc and appended mapping of pipe (|) character:

map й q
map ц w
map у e
map к r
map е t
map н y
map г u
map ш i
map щ o
map з p
map х [
map ъ ]
map ф a
map ы s
map в d
map а f
map п g
map р h
map о j
map л k
map д l
map ж ;
map э '
map ё \
map я z
map ч x
map с c
map м v
map и b
map т n
map ь m
map б ,
map ю .
map Й Q
map Ц W
map У E
map К R
map Е T
map Н Y
map Г U
map Ш I
map Щ O
map З P
map Х {
map Ъ }
map Ф A
map Ы S
map В D
map А F
map П G
map Р H
map О J
map Л K
map Д L
map Ж :
map Э "
map Я Z
map Ч X
map С C
map М V
map И B
map Т N
map Ь M
map Б <
map Ю >
map Ё /|

Now I have IdeaVim working with cyrillic layout in normal, visual+select and operator-pending modes.