LINUX.ORG.RU

vim разный цвет cursorline на разных языках

 


1

4

Преамбула: в 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
при русском языке(layout'e)
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

Кто возьмется помочь/допилить ?

★★★★

1. Выход из insert mode

autocmd InsertLeave * call ololo()
Для входа тоже что-то такое есть.

Medar ★★★★★ ()
Последнее исправление: Medar (всего исправлений: 1)

Все эти варианты мне не подходят, ибо терминал - st

bryak ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.