web-dev-qa-db-ja.com

vimのステータスラインでのアイテムの位置の修正

私のステータスラインは次のようになります。

set statusline+=%m
set statusline+=b%n:
" set statusline+=%f
set statusline+=%F
set statusline+=%R
set statusline+=%Y
set statusline+=\ 
set statusline+=[
set statusline+=row\ %l/%L
set statusline+=,\ 
" set statusline+=column\ %c\ (%v)

set statusline+=column\ %v\ (%c)
set statusline+=]

これは、平均して、雲がないときに、次のようなものになります。

[-]b3:options.txt,RO,HELP [row 6291/7778, column 42 (29)]

さて、ウィンドウを分割して別のファイルを開くと、変更されたファイルと変更されていないファイルがあり、ステータスラインの内容が前後に揺れ始め、終わりがないのでイライラします。

Vimのヘルプ(:help'statusline)で、いくつかのアイテムの固定幅を設定できることがわかりました。

上記のアイテムを、1つのアイテムが欠落している場合、またはその幅に関係なく、他のアイテムに影響を与えないように修正するにはどうすればよいですか? (つまり、私は常に既知の位置を見て、そこに何があるかを知ることができます...必要なものを探して目を左右に動かさないでください)。

4
Rook

%=では、左揃えと右揃えを分割できます。

これをステータス行で使用し、現在のgitブランチを左揃えにし、ファイル情報を右揃えにします。利用可能なgit情報がない場合でも、他のすべては完全に右側にとどまります。

edit:他の方法で機能させるのに問題があったため、この方法でアイテムを修正するために%=を使用していると言わなければなりません。 %-10.fを使用して最小幅を設定できます(一部のアイテムfの最小幅は10です)。

編集2:以下のIdigasのコメントに答える。現在のステータス行は次のとおりです(スペース用に再フォーマットされています)。

set statusline=%mb:%n\ %f%R%Y\ [row\ %l/%L,\ column\ %v\ (%c)]

私はそれを次のように変更します:

set statusline=b:%n\ %f%R%Y%=%m[row\ %l/%L,\ column\ %v\ (%c)]

%=で左右の分割を設定し、変更した%mをその後に移動すると、ステータス行の位置が固定されているように見えます。

6
redacted