Vim: Как определить режим, в котором находится пользователь, для строки состояния?

Мне нужен простой (или сложный) способ выяснить, в каком режиме находится пользователь. Мне нужно знать, находится ли пользователь в режиме Обычный, Вставить, Визуальный, Заменить, Изменить и т. Д.

Я знаю оmode() функционировать, как я могуt выяснить, как заставить его выводить полную строку вместо одного символа.

Мой план состоял в том, чтобы создать функцию, которая бы динамически изменяла статусную строку ».s цвета фона и переднего плана в зависимости от того, какая строкаmode() возвращается. В основном это функция с кучей ifs и elseif, которая сделает это для меня. Хотя у этого подхода есть недостаток, я могуНе знаю, какого цвета настройка темы по умолчанию для этого.

В общем, мне нужны некоторые советы / помощь по созданию функции, которая выполняет следующие функции:

Знает, в каком режиме находится пользователь. Остальные функции реагируют по-разному каждый раз, когда это изменяется.Устанавливает некоторые переменные сfg а такжеbg значения, которые отражают то, что для них задана текущая тема.Изменяет статусную строкуs передний план и фон в зависимости от этих значений.

Я пытался сделать это, но это был очень грубый способ сделать это, и это нене работает вообще. Он устанавливал цвета только один раз и после этогореагировать каждый раз, когда это изменилось.

Спасибо за вашу помощь! :)

РЕДАКТИРОВАТЬ:

Уверен, что я пробовал до этогот работа была такая:

function! StatuslineModeColor()
    let s:StatuslineMode=mode()
    if s:StatuslineMode == 'n'
        hi Statusline ctermbg=blue guibg=blue
    elseif s:StatuslineMode == 'i'
        hi Statusline ctermbg=red guibg=red
    endif
endfunc

И в статусной строке я поставил следующее:

let &stl.='%{StatuslineModeColor()}'

РЕДАКТИРОВАТЬ 2: Я

Я понял, что в основном мне нужно найти способ выбрать любой цвет, который использовалась в теме ранее. Тот's если я использую это решение:http://www.reddit.com/r/vim/comments/gexi6/a_smarter_statusline_code_in_comments/c1n2oo5

Однако это решение не идеально в моих стандартах, потому чтоне чистые или не настолько чистые, как могли бы, так как это создает много беспорядка. : /

Ответы на вопрос(1)

Ваш ответ на вопрос