Как уже отмечали другие, использование временных изменений в статусной строке в настоящее время невозможно. Однако, если вы можете выбрать подходящее событие, при котором статус возвращается к значению по умолчанию, тогда вам может повезти. Например, если ваш рабочий процесс:
Esc
, чтобы перейти в обычный режим и вызвать ваш ярлык
- Посмотрите результат в строке состояния и вернитесь в режим вставки, чтобы продолжить работу
тогда вы можете использовать событие InsertEnter
в автокоманде, чтобы изменить статус на статус по умолчанию, когда вы нажмете i в обычном режиме.
Вот небольшой забавный пример, который вы, вероятно, можете изменить в соответствии со своими потребностями.
Нормальная строка состояния:
"statusline
hi green term=bold cterm=bold ctermfg=107
hi red term=bold cterm=bold ctermfg=167
hi gray term=bold cterm=bold ctermfg=0
hi lblue term=bold cterm=bold ctermfg=12
function! Palpatine()
let str='At last, the Jedi are no more'
return str
endfunction
function! Force()
let str=',~`,~`,~`,~`,~`,~`,~`,~'
return str
endfunction
function! DefaultStatus()
let statusStr='%#red#Palpatine: %#gray#%{Palpatine()} %#lblue#%{Force()} %=%#green#Yoda'
return statusStr
endfunction
set laststatus=2
set statusline=%!DefaultStatus()
Изменение статуса при вызове функции:
function! Yoda()
let str='Not if anything to say about it, I have'
return str
endfunction
function! MyStatus()
let statusStr='%#red#Palpatine %=%#lblue#%{Force()} %#gray#%{Yoda()} %#green#:Yoda'
return statusStr
endfunction
function! MyFunc()
set statusline=%!MyStatus()
endfunction
noremap <C-m> :call MyFunc()<CR>
С приведенными выше определениями, каждый раз, когда я нажимаю Ctrl m , строка состояния меняется на приведенную выше.
Теперь, установив автокоманду, мы можем вернуть ее к значениям по умолчанию при каждом входе в режим вставки.
autocmd InsertEnter * set statusline=%!DefaultStatus()
Вернуться к вставке: