Vim: Как определить режим, в котором находится пользователь, для строки состояния?
Мне нужен простой (или сложный) способ выяснить, в каком режиме находится пользователь. Мне нужно знать, находится ли пользователь в режиме Обычный, Вставить, Визуальный, Заменить, Изменить и т. Д.
Я знаю оmode()
функция, однако я не могу понять, как заставить его выводить полную строку вместо одного символа.
Мой план состоял в том, чтобы сделать функцию, которая бы динамически изменяла фон строки состояния и цвета переднего плана в зависимости от того, какая строкаmode()
возвращается. В основном это функция с кучей ifs и elseif, которая сделает это для меня. Однако у этого подхода есть недостаток: я не могу знать, какой цвет для этой темы настроен по умолчанию.
В общем, мне нужны некоторые советы / помощь по созданию функции, которая выполняет следующие функции:
Знает, в каком режиме находится пользователь. Остальные функции реагируют по-разному каждый раз, когда это изменяется.Устанавливает некоторые переменные сfg
а такжеbg
значения, которые отражают то, что для них задана текущая тема.Изменяет передний план и фон строки состояния в зависимости от этих значений.Я пытался сделать это, но это был очень грубый способ сделать это, и это не сработало вообще. Он устанавливал цвета только один раз и после этого не реагировал каждый раз, когда менялся.
Спасибо за вашу помощь! :)
РЕДАКТИРОВАТЬ:
Я уверен, что то, что я пробовал до этого, не сработало:
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:
Я понял, что в основном мне нужно найти способ выбрать любой цвет, который использовалась в теме ранее. Вот если я использую это решение:http://www.reddit.com/r/vim/comments/gexi6/a_smarter_statusline_code_in_comments/c1n2oo5
Однако это решение не является идеальным в моих стандартах, потому что оно не чистое или не настолько чистое, как могло бы быть, так как оно создает много беспорядка. : /