2012-12-26 2 views
6

모드에 따라 statusline의 색상을 변경하기 위해 만들고있는 플러그인을 완성하려면이 기능이 필요합니다.현재 colorscheme이 특정 물건에 사용하고있는 특정 색상 값을 찾는 방법은 무엇입니까?

그러나 명백한 문제가 발생했습니다. 사용자가 어떤 테마를 사용하고 있는지 어떻게 알 수 있습니까? 그리고 비록 내가 알았더라도 나는 각 주제에 특정한 색깔을 만들 수 없습니다.

그래서 현재 테마가 예를 들어 상태 줄에 사용하는 전경색과 배경색을 아는 법.

편집 1 :

는 경우 나는 특정 물건에 대한 ctermfg/bgguifg/bg을 찾을 수있는 방법을 찾고 있어요, 명확하지 않았다. 지금 상태 표시 줄. :)

편집 2 : 나는 :hi StatusLine을 할 경우

은 분명히 내가 그러나 나는 단지 값을 얻기 위해 그것을 수정해야하고, 모든 그것의, 내가 원하는 것을 얻을. 일부 정규식을 사용하여 값을 찾아야합니다. 누구든지 쉬운 방법을 알고 있다면 그것을 공유하십시오 (또는 이미 정규식으로 알아 낸 경우). 감사!

답변

11

당신은 구문 강조의 (전경색과 배경색 등) 다양한 속성을 조회 할 synIDattr() 기능을 사용할 수있는 guifg, ctermbgctermfg이 있습니다. 강조 그룹의 ID를 확인하려면 hlID()을 사용할 수 있습니다. :help hlID() :

:echo synIDattr(synIDtrans(hlID('StatusLine')), 'fg') 
+0

그게 내가 찾고 있었던 바로 그 것이다! 감사! – greduan

1

당신은, 너무 foreground 설정이 있어야 :help background에 따라

:echo &background 

와 배경을 얻을 수 있지만 나를 위해 작동하지 않습니다.

편집 : 변수 guibg, :hi[glight]

+0

아니요, 어둡거나 밝은 배경을 사용하는 옵션이 아닙니다. 그러나 오히려 주제가 사용하고 있던 색깔을 아는 방법. 예를 들어 테마가 주석에 사용하는 정확한 색상을 아는 방법 – greduan

+0

오, 당신이 지적한 문서를 읽었습니다. 그러나 나는 그럴지도 모르지만, 확실하지 않습니다. – greduan

+0

'& fg'와'& bg'를 사용하는 것이 가능할 수도 있습니다.하지만 몇 가지 테스트를 실행해야합니다. 당신이 확실히 알게되면 그것에 대해 말해줘. :) – greduan