1

私のvimrcは、読み取り専用か変更されたかに基づいて、ステータスラインのバッファ番号を異なる色の背景に設定します。

また、バッファがアクティブ ウィンドウにない場合は別の色を設定したいと思います (分割ウィンドウ モードの場合に便利です)。

&modおよびを使用し&readonlyて、変更または読み取り専用を検出しています。バッファがアクティブなウィンドウにあるかどうかを確認するにはどうすればよいですか? (つまり、ウィンドウが非アクティブな場合はグレーに変更してください)。

読み取り専用で変更したコードを次に示します。

function! StatusLineHeader()
    return '  '.bufnr('%').' '
endfunction

set statusline=
set statusline+=%#UWhiteOnBlue#%{&mod?'':&readonly?'':StatusLineHeader()} "default header
set statusline+=%#UWhiteOnOrange#%{&mod?'':&readonly?StatusLineHeader():''} "readonly header
set statusline+=%#UWhiteOnGreen#%{&mod?StatusLineHeader():''} "modified header
4

1 に答える 1

-3

まず第一に、一般的に、ステータス ラインに多色を使用するのは良くありません。StatusLine / StatusLineNC / %* 自動的に設定される定義済みのものに落としたほうがいいです。

set statusline+=%*%{StatusLineHeader()} "default header

しかし、あなたが本当にそれを望むなら、あなたが必要:h g:actual_curwinです. したがって、次のようになります。

set statusline+=%#StatusLine#%{g:actual_curwin==win_getid()?StatusLineHeader():''}
set statusline+=%#StatusLineNC#%{g:actual_curwin!=win_getid()?StatusLineHeader():''}

注: g:actual_curwinVim 8.1.1372 で追加されました

于 2020-01-13T17:39:31.573 に答える