Преамбула: в gvim при смене языка посредством C-^ можно менять цвет курсора. Это архиудобно: когда печатаешь на английском, то цвет курсора скажем желтый, а когда переключился на русский - скажем синий. Визуально очень удобно определять в какой раскладке сейчас пишешь текст. В консольном vim такой базовой возможности нет. Прийдется её написать самим.
В общем что необходимо: 1. При выходе из insert mode язык меняется на английский. Ранее это решалось:
inoremap <silent> <ESC> <Esc>`^:set iminsert=0<CR>
inoremap <silent> <C-c> <Esc>`^:set iminsert=0<CR>
2. В normal mode cursorline имеет свой цвет, отличный от цвета ru/en в insert mode Ранее это решалось:
autocmd InsertEnter * highlight CursorLine ctermbg=233 guibg=#121212
autocmd InsertLeave * highlight CursorLine ctermbg=234 guibg=#1c1c1c
3. Сабж: при переключении раскладки с помощью C-^ цвет меняется, скажем при английском языке(layout'e)
highlight CursorLine ctermbg=red
highlight CursorLine ctermbg=green
В общем, нам надо впоймать три события:
1. Выход из insert mode
2. вход в insert mode(C-c, ESC, C-])
3. Событие смены layout(C-^)
Итак, в normal mode цвет курсорлайн = yellow, в insert mode ru - cursorline = red, в insert mode en = green
highlight CursorLine ctermbg=red
highlight CursorLine ctermbg=green
highlight CursorLine ctermbg=yellow
set iminsert = 1/0 - смена языка
autocmd InsertEnter * call ChkIminsert(1)
inoremap <silent> <C-c> <Esc>:call ChkIminsert(1)<CR>
imap <silent> <C-^> <C-\><C-o>:call ChkIminsert(2)<CR>
fun! ChkIminsert(...)
if a:0 == 1
" если входим в insert mode
echom 'a1'
" если меняем язык
elseif a:0 == 2
echom 'a2'
else
" если выходим из insert mode
echom 'a3'
endif
endf
Кто возьмется помочь/допилить ?