Я пытаюсь разобраться с переключением раскладок в vim. Написал небольшой скрипт, который переключает раскладку перед InsertEnter и возвращает её обратно перед InsertLeave.
Однако возникла проблема: команда r (Normal mode) работает почти как insert. Перед её выполнением и после него тоже неплохо бы менять раскладку.
Не понимаю, как это можно сделать.
Пробовал что-то вроде:
:noremap r :call LoadLayout()r:call SaveLayout()
Но, разумеется, просто происходит замена символа на ":".
Как я понимаю, есть два варианта: можно научиться вызывать "r" между двумя командами (не понимаю как, :normal не подходит, т.к. блокирует всё, что идёт после текста команд), а можно повторить работу r, но это тоже не просто, потому что getchar() и :startinsert ведут себя несколько иначе, чем r.