:set background = darkは何をしますか?


35

私は入れていないcolor xxx私に.vimrc。私はこれを見て私が最初に私を開いたとき.vimrc

:colordefaultここで私に与えます。 何よりも前に

次にを入力し:color darculaます。そして、これに変わります。

:colordarculaここで(自然に)私に与えます。 カラースキームを変更する

次にを入力し:set background=darkます。そして、これに変わります。

:colordefaultここに(驚くほど)私を与えます。 背景を変更する

だから私の質問は、正確に何を:set background=darkするのですか?

試したが:h background、何も役に立たなかった。このコマンドは実際には背景を変更せず、vimのみがそれに応じて色を変更することを理解しています。しかし、私はまだこの質問をしたいです。後、私は色で本当に幸せだから:color darcula:set background=dark私は置くことなく、私自身のカラースキームを作成する方法を疑問に思うのでset background=dark、私の中で.vimrc

@statoxからアドバイスを受けてset background=dark、私の最後の行に書きましたdarcula.vim。次にcolor darcula、3番目のスクリーンショットを提供します。ただし、最初の行に配置するとcolor darcula、2番目のスクリーンショットが表示されます。またset bg=dark、3番目のスクリーンショットに変更します。

私は最初の行にそれを置くことで、私はこのカラースキームが暗い背景用に設計されていることをvimに伝えています。対照的に、最後の行に配置することで、vimにこのカラースキームが明るい背景用に設計されていると仮定し、vimにそれ自体を変更させます(最後の行を処理するとき)。

私が起こったと思われることが真実である場合、私の質問は未回答です。set bg=dark明るいカラースキームを読み込んだ後、vimを使用すると、vimは正確に何が変わりましたか?

私のvim設定全体はhttps://github.com/MichaelMa2014/.vimで利用可能です



@muruご挨拶!私は私の質問をする前にこの質問を読んでいた。その投稿では反対である:set bg=lightと述べられています:set bg=darkが、正確に何であるかは説明されていません。私は避けたい理由もその記事がある:set background=dark私に.vimrc
マイケルMa

回答:


32

あなたはどうなりますか :set background

動作する基本的なメカニズム:set backgroundは実際には非常に単純であり、(特に明確ではありませんが)に文書化されてい:help 'background'ます。

'background'が設定されると、Vimは新しい値に合わせてデフォルトのカラーグループを調整します。ただし、構文の強調表示に使用される色は変わりません。 g:colors_name
カラースキームが読み込まれると( "g:colors_name"変数が設定されます)、 'background'を設定すると、カラースキームが再読み込みされます。カラースキームが「背景」の値に調整される場合、これは機能します。ただし、配色が「背景」自体を設定している場合、効果は元に戻されます。

したがって、'background'オプションが変更されたときに実際に起こるのはこれです:

カラースキームが現在ロードされていない場合

Vimは、次の新しい設定に適していると考えられる前景色を使用して、デフォルトの色を再読み込みします 'background'

カラースキームが現在ロードされている場合

Vimは配色をリロードします。カラースキームが読み込まれると、カラースキームはの新しい設定に適切な'background'色を設定 'background'するか、カラースキームが古い値にリセットされます。

すでに説明したように、この'background'オプションは 背景を設定するためのものではなく、背景が暗いか明るいか Vim に通知するためのものです。

そのため、配色がリセットされた場合'background'、Vimはこれを、配色がの新しい設定を単にサポートしないことを意味し'background'ます。ユーザーがそのような背景を使用していることを示しているため、これは現在の配色が適切ではないことを意味し、Vim g:colors_nameは設定を解除して からデフォルトの色を再ロードします。

'background'が設定されているときに実行される実際のコードを調べたい場合は、ここから開始できます

インストールで何が起こっているのか

(質問の最初のバージョンで)あなたが説明する奇妙な振る舞いは、上に引用したドキュメントのこの行で説明できます。

配色が読み込まれたとき( "g:colors_name"変数が設定されます)

問題は、colors/darcula.vimファイルがこの値を設定しないため、呼び出したときに色が変わったとしても:color darculaVimは現在読み込まれている配色を考慮しないことです。

したがって、:set background=darkVimを呼び出すと、上記の「現在カラースキームがロードされていない場合」セクションの手順が実行され、暗い背景のデフォルトの色が設定されます。これはなぜ:color報告するのかを説明しています default

(ただし、デフォルトの色を設定して、予想どおり、以前に設定されていたすべての色が削除されるわけではないことに注意してください。最初にVimを起動します。この問題については、ここで説明します

手短に言えば、配色が正しく構成さ:edit $VIMRUNTIME/colors/README.txtれていません。これ、'background'および配色間の相互作用の詳細については、特に下部のセクションを参照してください。


どうもありがとうございます!「ご想像のとおり、以前に設定されていたすべての色を削除しない」と言うとき、私は完全に理解したと感じます。議論を必ず読んでみよう!
マイケルMa

4

のドキュメントに:h 'background' は、必要なすべての情報が記載されています。

「暗い」に設定すると、Vimは暗い背景でよく見える色を使用しようとします。「明るい」に設定すると、Vimは明るい背景でよく見える色を使用しようとします。その他の値は違法です。

カラースキームは、明るい背景で使用される色と暗い背景で使用される色の2つのグループを定義します。このbackgroundオプションは、vimに、カラースキームで定義されている色のグループを使用する必要があることを伝えます。

このオプションを設定しても背景色は変わりません。Vimに背景色がどのように見えるかを伝えます。背景色の変更については、を参照してください:h :hi-normal

'background'が設定されると、Vimは新しい値に合わせてデフォルトのカラーグループを調整します。ただし、構文の強調表示に使用される色は変わりません。

これが前の段落のフォローアップですbackground。色のグループを定義し、これらのグループの1つを選択するのはカラースキームです。

最後に、あなたが置くことなく、独自のカラースキームを書きたい場合はset background=darkカラースキームはvimscriptで複数のプログラムよりも何もないので、何も例えばのようなあなたのカラースキームのコードに直接コマンドを使用してからあなたを停止しないことを覚えておいてください、あなたのvimrcでジェリービーンズ見習い


1
ありがとうございました!入れset background=darkdarcula.vimときと同じ効果を出しました.vimrc。しかし、私はまだ興味があります。Vimは「暗い背景でよく見える色をどのように使用しようとするのですか」。どこかに定義されたマッピングまたはそのような何かがありますか?
マイケルMa
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.