: set background = dark는 무엇을합니까?


35

나는 color xxx내 넣지 않았다 .vimrc. 처음 열 때이 내용이 표시됩니다 .vimrc.

:color나를 default여기에 제공 합니다. 무엇보다

그런 다음을 입력 :color darcula합니다. 그리고 이것으로 바뀝니다.

:color저를 준다 darcula여기에 (자연스럽게). 색 변경

그런 다음을 입력 :set background=dark합니다. 그리고 이것으로 바뀝니다.

:color저를 준다 default여기 (놀랍게도). 배경을 바꾸다

제 질문은 정확히 무엇을하는 :set background=dark것입니까?

나는 :h background도움이되는 것을 찾지 못했습니다. 이 명령은 실제로 배경을 변경하지 않으며 vim 만 색상을 변경한다는 것을 이해합니다. 그러나 나는 여전히이 질문을하고 싶습니다. 나는 색상 정말 행복 해요 때문에 후 :color darcula:set background=dark내가 넣어하지 않고 내 자신의 색 구성표를 작성하는 방법을 궁금해 있도록 set background=dark내에서 .vimrc.

@statox에서 조언을 받아 set background=dark내 마지막 줄에 넣었 습니다 darcula.vim. 그런 다음 color darcula세 번째 스크린 샷을 제공합니다. 그러나 첫 줄에 넣으면 color darcula두 번째 스크린 샷이 표시됩니다. 또한 set bg=dark세 번째 스크린 샷으로 변경합니다.

나는 첫 번째 줄에 그것을 넣어 가정했는데, 나는 vim 에게이 색 구성표가 어두운 배경을 위해 설계되었다고 말하고 있습니다. 마지막 줄에, 대조적으로, 나는 vim이이 색 구성표가 밝은 배경을 위해 디자인되었다고 가정하고 vim이 그 자체로 (마지막 줄을 처리 할 때) 그 자체로 변경하도록합니다.

내가 일어난 일이 사실이라면 내 질문에 여전히 답이 없습니다. Vim set bg=dark에 밝은 색 구성표를로드 한 후 정확히 무엇을 vim이 변경 되었습니까?

내 전체 vim 구성은 https://github.com/MichaelMa2014/.vim 에서 제공됩니다.



@muru 인사말! 나는 내 질문을하기 전에이 질문을 읽었다. 그것은 그 해당 게시물에서 언급 :set bg=light하고 :set bg=dark반대 아니지만, 정확히 그들이하는 것은 설명되지 않는다. 또한 그 게시물은 :set background=dark내 에서 피하고 싶은 이유 .vimrc입니다.
Michael Ma

답변:


32

당신은 어떻게됩니까 :set background

:set background작품 의 기본 메커니즘 은 실제로 매우 간단하며 (특히 명확하지는 않지만)에 문서화되어 :help '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 darcula, Vim은 고려하지 않는 색상은 현재로드 할 수 있습니다.

따라서 :set background=darkVim 을 호출 하면 위의 "현재 색 구성표가로드되지 않은 경우"섹션의 단계를 수행하고 어두운 배경의 기본 색을 설정합니다. 이것은 왜 :color보고 하는지 설명 합니다 default.

(그러나 기본 색상을 설정해 도 이전에 설정 한 모든 색상이 제거 되지않으므로 사용자가 표시 할 때 표시되는 색상이 아니라 결과가 나타납니다. Vim을 먼저 시작하십시오. 이 문제에 대한 토론이 여기 있습니다.

요컨대, 색 구성표가 잘못 구성되어 있습니다. 이에 :edit $VIMRUNTIME/colors/README.txt대한 자세한 내용 'background'과 색 구성표 간의 상호 작용에 대한 자세한 내용 은 (특히 아래쪽 섹션 참조 ) .


정말 고맙습니다! "이전에는 설정했던 모든 색상을 제거하지는 않습니다"라고 말할 때 완전히 이해합니다. 나는 분명히 토론을 읽을 것입니다!
Michael Ma

4

의 문서 :h 'background' 는 필요한 모든 정보를 제공해야합니다.

"어둡게"로 설정하면 Vim은 어두운 배경에서 잘 보이는 색상을 사용하려고합니다. "빛"으로 설정하면 Vim은 밝은 배경에서 잘 보이는 색상을 사용하려고합니다. 다른 가치는 불법입니다.

색상 체계는 밝은 배경에 사용되는 것과 어두운 배경에 사용되는 두 가지 색상 그룹을 정의합니다. 이 background옵션은 vim에 당신의 colorscheme에 의해 정의 된 색상 그룹을 사용해야합니다.

이 옵션을 설정해도 배경색은 바뀌지 않으며 Vim에 배경색이 어떻게 보이는지 알려줍니다. 배경색을 변경하려면을 참조하십시오 :h :hi-normal.

'배경'이 설정되면 Vim은 새 값에 대한 기본 색상 그룹을 조정합니다. 그러나 구문 강조에 사용되는 색상은 변경되지 않습니다.

이전 단락의 후속 작업입니다. 색상 그룹을 정의 background하고이 그룹 중 하나를 선택 하는 색상 구성표입니다 .

마지막으로 set background=darkvimrc 에 넣지 않고 자신 만의 색 구성표를 작성하려면 colorscheme은 vimscript의 프로그램에 지나지 않는다는 것을 기억하십시오. 따라서 예를 들어 jellybeans 또는 도제


1
고맙습니다! 내가 넣어 set background=dark에서 darcula.vim나는에 넣을 때와 같은 효과를 생산 .vimrc. 하지만 여전히 궁금합니다. Vim은 "어두운 배경에 잘 어울리는 색상을 어떻게 사용하려고합니까?" 어딘가에 정의 된 매핑이나 비슷한 것이 있습니까?
Michael Ma
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.