vimのアクティブウィンドウをより明確にする


22

私のワークスペースは通常、vimを備えた6つ以上のバッファーに分割された1つの非常に大きなxtermです。どちらがアクティブなバッファであるかがより明確である場合、それは本当に役立ちます。現在、私はこのために行番号の存在を使用しています:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set number
    autocmd WinLeave * set nonumber
augroup END

しかしこれは、バッファを変更するとコードが左または右にジャンプすることを意味し、これは迷惑です。さらに、非アクティブなバッファーでも94行目を確認できるようにしたいと思います。アクティブなバッファの行番号の色を変更する方法はありますか?

回答:


26

テンプレートに従って、colorcolumnなどのさまざまなプロパティを変更できます。

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set colorcolumn=80
    autocmd WinLeave * set colorcolumn=0
augroup END

これにより、現在のウィンドウの列80が色付けされ、他のウィンドウでは無効になります。行番号を設定/設定解除するよりも少し耳障りです。

現在の行を強調表示するのに慣れている場合(culを設定)、さらに邪魔にならないオプションは、次のようにすることです。

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set cul
    autocmd WinLeave * set nocul
augroup END

それはすべてあなたの使用法とあなたが我慢しようとするものに帰着します。


11

ステータスラインの色は、どのウィンドウがアクティブであるかを知る最も一般的な方法です。カラースキームで次の2行で定義されます。

hi StatusLine   ctermfg=15  guifg=#ffffff ctermbg=239 guibg=#4e4e4e cterm=bold gui=bold
hi StatusLineNC ctermfg=249 guifg=#b2b2b2 ctermbg=237 guibg=#3a3a3a cterm=none gui=none

1つ目は現在のウィンドウ用、2つ目は「非現在の」ウィンドウ用です。

これはxoria256からの抜粋で、色をカラースキームに適合させる必要があります。

しかし、あなたはそのようなものを試すことができます(2行目の色は完全にランダムであることに注意してください):

augroup NrHighlight
  autocmd!
  autocmd WinEnter * hi LineNr ctermfg=247 guifg=#9e9e9e ctermbg=233 guibg=#121212
  autocmd WinLeave * hi LineNr ctermfg=274 guifg=#e9e9e9 ctermbg=133 guibg=#212121
augroup END

私はすでにWinEnter / WinLeaveでLineNrの強調表示を変更しようとしましたが、LineNrの色付けはグローバルなようです。
-DrHyde

はい、それを思い出すためにあなたのコメントを待たなければなりませんでした。したがって、いいえ、LineNrがグローバルである場合、特定のウィンドウでそれを変更する方法は明らかにありません。ステータスラインは十分だと思いませんか?
ロメイン

LineNrの他のウィンドウごとのバージョンがあるのではないかと思いました。いいえ、ステータス行だけでは不十分だと思います。それは役立ちますが、もっと欲しいです。ステータスラインを使用する際の問題の1つは、ウィンドウの下部にアクティブウィンドウインジケーターを配置することは、他のほぼすべての場所(ウィンドウの上部にある色を変更するタイトルバー)とは正反対であることです。 「ああ、そうです、vimはこれと逆のことをします」行番号は常にすべてのアプリケーションで同じ場所にあります。
DrHyde

ウィンドウの背景色を変更できれば本当に気に入っていますが、上からは不可能なようです。
ジョナサンハートリー

使用hi StatusLine...hi StatusLineNC...て、魅力のように動作します!
リュックM


2

これが私がすることです:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set relativenumber
    autocmd WinLeave * set norelativenumber
augroup END

相対番号は、コマンドの繰り返し量を計算するための単なる補助であり、編集していないウィンドウでは使用できません。



1

これをに追加~/.vimrcすると、アクティブでないウィンドウのステータスバーの背景が暗い灰色になり、アクティブなウィンドウの白いステータスバーと区別されます。

highlight StatusLineNC cterm=bold ctermfg=white ctermbg=darkgray

このスクリーンショットの例を参照してください。中央のウィンドウがアクティブです(白いステータスバー)。左右のウィンドウは非アクティブです(ダークグレーのステータスバー)。

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.