特定のイベントの後、Vim のステータスラインを非常に長く更新することは可能ですか?
もしそうなら、どうやってそれを行うのですか?
他の人がすでに指摘しているように、現在、ステータスラインに時限変更を使用することはできません。ただし、ステータスがデフォルトに戻る適切なイベントを選択できる場合は、運が良かった可能性があります。たとえば、ワークフローが次の場合:
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>
上記の定義では、を押すたびにCtrlmステータスラインが上記に変わります。
これで、自動コマンドを設定することで、挿入モードに入るたびにデフォルトに戻すことができます。
autocmd InsertEnter * set statusline=%!DefaultStatus()