vimkeyboard-layout

How to automatically change keyboard layout on switch to vim normal-mode?


Sometimes I use vim to write non-US text, and when I wanna use any command in normal mode, I need to change layout to US. It's possible to do that automatically?

PS. I can do mapping like this, but in this case command looks like :ц instead :w - not pretty and typo-risk.

Update

I don't want to use keymap option, because I prefer switch languages by CapsLock. I've try to write autocmd for InsertLeave event, but failed...

Update 2

Probably anybody know, why the following not work?

function SetUsLayout()
  !setxkbmap us,ru
endfunction

autocmd InsertLeave * call SetUsLayout()

Solution

  • Looks like, that cross-platform solution doesn't exist... So, under KDE I use the following:

    function! SetUsLayout()
      silent !qdbus org.kde.keyboard /Layouts setLayout us > /dev/null
    endfunction
    
    autocmd InsertLeave * call SetUsLayout()