맞춤 강조 표시 규칙은 어디에 있습니까?


11

때때로 나는 자신의 환경 설정으로 색상과 스타일을 강조하는 기본 구문을 재정의하려고합니다.

이 작업을 수행하는 가장 적절한 방법은 내 자신의 색 구성표를 만드는 것입니다. 그러나 몇 가지 질문이 있습니다.

  1. 특정 언어로 특정 구문 그룹에 대한 강조 표시를 설정하려면 이것이 내 색 구성표에 속합니까, 아니면 배치하는 것이 좋습니다 after/syntax/[filetype].vim?

    highlight jsAssignExpIdent cterm=bold gui=bold
    

    내가 사용하는 언어가 무엇이든로드되므로 색 구성표에 모호한 언어 별 규칙을 배치하는 것은 조금 이상하게 보이지만 구문 파일에 강조 표시 규칙을 배치하는 것이 더 나빠 보입니다.

  2. 때로는에서 특정 언어에 대한 새 구문 규칙을 만듭니다 after/syntax/[filetype].vim. 다른 사용자가 이러한 확장을 사용하려는 경우 일반적인 기본 강조 그룹으로 연결되는 기본 강조 규칙을 제공하는 것이 적절합니까? 다른 사용자가 해당 강조 색상을 재정의하려면 어떻게해야합니까?

    ::::: after/syntax/asm.vim :::::
    
    syn match asmHexNumber /\(0x\|\$\)[0-9A-Fa-f]\+/
    highlight default link asmHexNumber Number
    

답변:


9

첫 번째 질문

하이라이트 정의는 귀하의 색 구성표에 속합니다. 언어에 상관없이 모든 버퍼에로드된다는 사실은 전혀 문제가되지 않습니다.

색상 표를 편집하지 않으려면 해당 강조 표시 정의를 plugin/myhighlights.vim다음 위치에 넣을 수 있습니다 .

function! MyHighlights()
    highlight ...
    highlight ...
endfunction

augroup MyHighlights
    autocmd!
    autocmd ColorScheme * call MyHighlights()
augroup END

두번째 질문

샘플은 정확히 어떻게해야하며 모든 구문 스크립트가 수행하는 방식입니다. 이 방법을 사용하면 플러그인 개발자가 특정 색상을 사용자의 목 아래로 강요하지 않고 정상적인 기본값을 정의 할 수 있습니다.


확인 감사합니다. 그러나 highlight link ...구문 파일 에 명령을 넣으면 해당 파일 형식의 파일이로드 될 때마다 색상 구성표의 설정을 덮어 쓰게됩니다. 해당 이름에 대한 강조 규칙이 없는지 확인한 후에 수행 해야합니까 highlight link ...?
joeytwiddle

아, 걱정할 필요 없어 Vim docs say : {from-group}에 대한 하이라이트 설정이 이미 있다면 '!'가 아니면 링크가 만들어지지 않습니다. 주어진다. 소스 파일에서 ": highlight link"명령의 경우 오류 메시지가 표시되지 않습니다. 이미 설정이있는 그룹의 링크를 건너 뛰는 데 사용할 수 있습니다.
joeytwiddle

그러나 색 구성표를 조정하는 사람들 highlight link은 나중에 색 구성표를 highlight link구문 파일에서 덮어 쓸 수 있습니다 . 이를 피하기 위해 링크 대신 실제 인수 (ctermbg, guifg, ...)를 사용할 수 있습니다.
joeytwiddle

사용자는 주어진 하이라이트 그룹에 어떤 색상이 사용되는지에 대한 마지막 단어를 가져야합니다. 이를 위해 색상 표에서 언어 별 하이라이트 정의를 보는 것은 드문 일이 아닙니다. highlight link ...구문 스크립트 에서만 사용해야 하며 사용자가 원하는 경우이를 무시하도록해야합니다.
romainl

내 관심사는 사용자 highlight link ...가 자신의 colorscheme에 사용 하면 구문 파일이 나중에 자체로 재설정 할 수 있다는 것 highlight link ...입니다. 좋은 구문 파일은을 사용하여 이것을 피할 수 highlight default link ...있습니다. 아마도 asmHexNumber내 질문 의 규칙을 수정해야 할 것입니다 .
joeytwiddle
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.