맞춤형 Vim 강조


12

나는 지금 xml을 편집하고 있으며 돌아올 것들에 대한 의견을 남기고있다. 이렇게

<!-- Question: bla bla -->

지금 vim으로 편집하고 있으며 vim에서 지금 질문을 강조 표시하여 코드를 쉽게 살펴보고 볼 수있는 모든 장소를 찾을 수 있기를 원합니다. vimrc에 무언가를 추가해야한다는 것을 알고 있지만 잘못된 것을 찾고 있다고 생각합니다.

최신 정보

나는 이것을 내 안에 넣으려고했지만 .vimrc효과가 없었다.

syn keyword JakeAnnotation      Question

hi JakeAnnotation gui=bold term=bold cterm=bold

업데이트 2

실제로 이전에 수행 한 작업이 효과가 있었음을 알 수 있습니다.

:hi

그것은 강조하고있는 모든 것을 보여 주며 항목 중 하나는 다음과 같습니다.

JakeAnnotation xxx term=bold cterm=bold ctermbg=6

( 그리고 xxx는 올바른 형식입니다 )

이것은 내가 질문을 올바르게 정의하지 않는다는 것을 믿게합니다. 질문 자체가 한 줄에 있어야합니까?

업데이트 3

좋아, 그래서에 사용자 22,303의 게시 나는이 작업이 :

highlight MyQuestion cterm=bold term=bold ctermbg=blue ctermfg=black
match MyQuestion /Question/

그러나 파일 당 하나의 일치 항목 만 허용된다고 생각합니다. 내가 이것을 할 때 :

highlight MyQuestion cterm=bold term=bold ctermbg=blue ctermfg=black
match MyQuestion /Question/
highlight MyRelook cterm=bold term=bold ctermbg=blue ctermfg=black
match MyRelook /Another look/

첫 번째는 작동을 멈 춥니 다. (그러나 두 번째 것은 효과가 있습니다).

답변:


9

나는 우리가 당신에게 옳지 않은 답변을 먹이고 있다고 생각합니다. 내 컴퓨터에서 테스트 해보아야 할 것이 있습니다.

먼저, 새로운 하이라이트 그룹을 만드십시오 :

:highlight MyQuestions guifg=red guibg=green

이제 패턴이 일치 할 때마다 강조 표시 그룹이 존재하도록 지정하십시오.

:syntax match MyQuestions /Question/

텍스트가있는 각 줄에 '질문'이라는 텍스트가 강조 표시됩니다. 전체 줄을 표시하도록 확장하려면 다음과 같이 검색 텍스트를 변경하여 전체 줄과 일치하는 와일드 카드를 갖습니다.

:syntax match MyQuestions /.*Question.*/


실제로 그 정렬 만 작동 ... 나는 당신이 한 번에 하나의 경기를 할 수 있다고 생각합니다 업데이트 # 3 ...
sixtyfootersdude

1
@sixtyfootersdude : 죄송합니다. 다시 한 번 사소한 오류가 발생했습니다. 모든 일치 명령은 대신 "구문 일치"명령이어야합니다. 따라서 [: match MyQuestions /.*Question.*/] 대신 [: syntax match MyQuestions /.*Question.*/]를 사용하려고합니다. 그것은 당신이 원하는만큼 많은 다른 일치를 가질 수 있습니다. 이들은 실제로 구문 파일에 배치되는 가장 일반적인 유형의 명령 중 하나입니다. 그러나 명령 행, vimrc 또는 기타 스크립트 중 원하는 곳에서 실행할 수 있습니다.
user22303

vimrc 파일에 syntaxinfront를 추가 match...하면 일치가 전혀 영향을 미치지 않습니다. 내가 이것을 해야하는 곳입니까? 열린 파일에 저장해도 효과가 없습니다.
sixtyfootersdude

1
@ sixtyfooters : 당신에게 무슨 일이 일어나고 있는지 확실하지 않지만, 그렇게하는 것이 확실히 방법입니다. 스크립트를 배치하기 전에 명령 행에서 테스트하십시오 (파일에 대해로드 된 다른 스크립트의 어딘가에서 구문 설정이 지워질 수 있습니다). 정의 된 후에는 ": highlight"명령을 실행하여 (또는 gvim의 GUI 메뉴에서 "Syntax", "Highlight test"를 선택하여) 어떤 그룹이 존재하고 어떤 그룹이 강조 표시되는지 확인하십시오. 강조 명령을 사용하여 그룹을 만든 다음 '구문 일치'를 사용하여 일치 패턴을 설정하려는 것을 기억하십시오.
user22303

@sixtyfooters : 터미널에서 vim을 실행한다고 가정하고 있습니다 (즉, gvim이 아님). 속성 용어 만 설정하면 작동합니다. 새 파일이로드되고 관련 구문 파일이 실행 중이고 이전의 모든 구문 명령을 지우면 구문 명령이 지워지는 것처럼 들립니다. 명령 줄을 사용할 때 파일을로드 할 때마다 이러한 명령을 다시 입력합니까? 저장되지 않고 파일 이름이 아직 할당되지 않은 새 버퍼의 텍스트로 테스트 해 볼 수 있다고 생각합니다.
user22303

5

찾고있는 파일은 '구문'파일입니다. 에서 찾고 시도 /usr/local/share/vim/syntax//usr/share/vim/syntax/. 원하는 파일은 xml.vim입니다.

가장 간단한 방법은

syn keyword xmlTodo         contained TODO FIXME XXX

그것을 다음과 같이 변경하십시오 :

syn keyword xmlTodo         contained TODO FIXME XXX Question

텍스트가 포함 된 주석에 'Todo'강조 표시가 추가됩니다 Question.

이것을 (ever)에 사용하려는 경우, xml.vim을 로컬에 복사하여 vim에 대한 ~/.vim/syntax변경 사항이 사용자 정의 구문 파일을 겹쳐 쓰지 않도록하는 것이 가장 좋습니다 .

최신 정보

모든 파일 에서 유사한 (정렬) 기능을 원하면 'goto'명령을 사용합니다. 나는 이것이 hlsearch와 같다는 것을 인정할 것입니다.

편집하는 동안 커서가 단어 위에있을 때 gd파일의 현재 지점에서 gD검색 하거나 처음부터 검색하려면 입력하십시오. 파일에서 현재 단어와 일치하는 모든 단어가 강조 표시됩니다. 입력 n하여 해당 단어의 다음 인스턴스로 이동할 수 있습니다 .

최소한의 입력으로 강조 표시 및 탐색을 수행하기 때문에이 작업을 수행하는 경향이 있습니다. 일반적인 방법으로 하이라이트를 끕니다.:noh[lsearch]


와! 내가하고 싶은 것처럼 들린다. 나는 현재 ~/.vim/ folder. If I created it and create the file 구문을 가지고 있지 않다 .` .vimrc?vim에게 그것을 사용하기 위해 어딘가에서 (어쩌면 ) 참조해야 합니까?
sixtyfootersdude

1
아니. Vim은 자동으로 파일을 찾고 (예 : 플러그인, 색상, 컴파일러) 다른 구문 파일이 홈 영역에 있으면 시스템 기본값보다 우선합니다.
DaveParillo

1
또한 명확하게하기 위해, 디렉토리 를 생성하고 syntax이름이 다음과 같은 파일에 넣기를 xml.vim
원합니다.

.vimrc를 .vim 디렉토리에 넣어야합니까?
sixtyfootersdude

1
구문 파일은 .vim 디렉토리에 있습니다. 구문 강조는 언어에 따라 다릅니다. 모든 파일 에서 유사한 (정렬) 기능을 원하면 'goto'명령을 사용합니다. 내 답변에 추가하겠습니다.
DaveParillo

2

당신은 단순히 할 수 있습니다

:set hlsearch

그런 다음 질문을 검색하십시오.


그것이 내가하고있는 일이지만 hlsearch는 나를 귀찮게합니다. +1, 제안 해 주셔서 감사합니다.
sixtyfootersdude

2

몇 가지 옵션이 있습니다.
-하나, Dominik이 언급했듯이 ... 실제로 하나씩 검색 할 수 있습니다
-두 번째로 ": g / <-Question"을 수행하여 "목록"을 얻을 수 있습니다 (약간 나아짐) , 전체 그림을 제공합니다)
-셋째, XML 파일에서 이러한 종류의 주석 만 사용하는 경우 강조 그룹을 설정할 수 있습니다 (xml이 어떻게 생겼는지 전혀 모르겠으므로 일부가 있는지 모르겠습니다. 다른 종류의 의견도 있습니다). vimrc에서 최신 버전으로 vim을 새로 고치면 xlm.vim 파일이 없어 지므로 vimrc에서 설정하면 좋습니다.


+1 :g/제안을 좋아 하지만 '질문'이 댓글 태그를 바로 따르지 않으면 적용하기가 어려울 수 있습니다.
DaveParillo

@DaveParillo-아, 예. 글쎄, 내가 말했듯이, 나는 XML에 대해 아무것도 모른다. 그래서 나는 그것이 항상 그렇게 있다고 가정했다.
Rook

강조 그룹을 설정하려면 어떻게해야합니까?
sixtyfootersdude

1
@sixtyfootersdude- ": help e410"을 참조하십시오.
Rook

@Idigas : 참조 주셔서 감사합니다. 모양이 있었지만 여전히 내 문제를 해결할 수 없습니다. 질문에 업데이트를 추가했습니다. 감사.
sixtyfootersdude

1

반드시 vimrc에 명령을 넣을 필요는 없습니다. 항상 명령 행에 입력 한 다음 더 이상 강조 표시를 원하지 않을 때 지울 수 있습니다. 명령은 다음과 같습니다.

: hi 질문 guifg = 빨간 guibg = 파란 gui = bold

gvim (즉, gui가있는 vim)에서 전경 (guifg), 배경 및 일반 문자 설정을 설정합니다.

그 higlighting을 제거하려면 다음을 수행하십시오.

: 안녕 질문 분명

터미널 내부에서 vim을 사용하여이 명령을 사용하도록 수정할 수 있습니다.

: hi 질문 ctermfg = 빨간색 ctermbg = 파란색 용어 = 굵게

물론 vimrc에 그것들을 넣을 수도 있고, gui와 term 플래그를 단일 hi 명령으로 결합 할 수도 있습니다.


[다른 포스터의 답변을 읽은 후 추가됨]

죄송합니다, 귀하의 질문에 대한 구문이 Vim의 내장 'Question'하이라이트 태그에 대한 구문 파일의 설정과 이미 일치한다고 가정합니다. vim에 대한 xml 구문 파일을 언급하는 다른 답변을 보면 Question 대신 ToDo highlight 그룹을 사용하여 위의 명령을 실행할 수 있습니다.


시도 : hi 질문 ctermfg = 빨간색 ctermbg = 파란색 항 = 굵은이지만 효과가 없습니다.
sixtyfootersdude

죄송합니다 : : hi 명령은 질문 그룹이 강조되는 방식을 설정했습니다. 이제 질문 그룹에 속하는 문서 영역을 지정해야합니다. 일치 명령을 사용하여이 작업을 수행 할 수 있습니다 : : match Question / [search pattern] / 또는 경우 : : match Question / Question /
user22303

0

나는 파티에 늦었 어하지만 난 사용 TODO하고 FIXME정확하게이 상황에.

전부는 아니지만 대부분의 TODO색상 표는 다음 예제에서 배경색, 밑줄 및 기울임 꼴을 조합하여 강조 표시합니다.

<tree>
  <!--TODO : do I have to add a trunk tag ?-->
  <branch>
    <leaf>caterpillar</leaf>
    <leaf>caterpillar</leaf>
  </branch>
</tree>

실제로 의미 적으로 맞지는 않지만 순수한 기능적 관점에서 잘 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.