ユーザーがどのモードにいるかを把握するための簡単な (または複雑な) 方法が必要です。ユーザーが通常、挿入、ビジュアル、置換、変更などの状態にあるかどうかを知る必要があります。
私はmode()
関数を認識していますが、1文字ではなく完全な文字列を出力する方法がわかりません。
私の計画は、返される文字列に応じてステータスラインの背景色と前景色を動的に変更する関数を作成することでしたmode()
。基本的に、私のためにそれを行う一連のifと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
ただし、このソリューションは私の基準では理想的ではありません。これは、クリーンではないか、多くの混乱を引き起こしているため、可能な限りクリーンではないためです。:/