vim에서 강조 표시: 주석 구분 기호와 특수 문자열을 사용하여 줄을 구분합니다.
#$
HPC 클러스터용 스크립트와 같은 경우 SGE, TORQUE 또는 Slurm을 사용할 때 주석 줄은 #으로 표시되지만 그리드 명령은 또는 #PBS
또는 로 표시되는 쉘 스크립트(예: bash)를 사용할 수 있습니다 #SBATCH
.
#SomeString
Bash에서 사용된 것과 동일한 강조 표시를 유지하면서 주석으로 처리되지 않는 쉬운 방법이 있습니까 ?
답변1
먼저 쉘 구문 스크립트에서 주석 정의를 확인하십시오.
:syn list shComment
--- Syntax items ---
shComment xxx match /^\s*\zs#.*$/ contains=@shCommentGroup
match /\s\zs#.*$/ contains=@shCommentGroup
match /#.*$/ contained contains=@shCommentGroup
links to Comment
확장 구문 클러스터
여기에서 재정의해야 하는 주석 모드를 확인할 수 있습니다. 하지만 기다려! 이 구문 스크립트는 다음을 통해 확장 메커니즘을 제공합니다.:help :syn-cluster
;이것contains=@shCommentGroup
syn match shHPC "PBS" contained
이것은 강조됩니다PBS
어딘가에댓글에. 다른 내용을 따를 수 있는 경우 .*$
패턴에 추가하세요. PBS
키워드가 바로 뒤에 나와야 하는 경우 #
에는긍정적인 역방향 주장:
syn match shHPC "#\@<=PBS" contained
:syn match
명령을 추가하거나 정규식 분기를 사용하여 다른 모든 키워드를 사용할 수 있습니다 "#\@<=\(PBS\|SBATCH\|...\)"
.
마지막으로 새 구문 그룹은 주석을 위한 구문 클러스터에 포함되어야 하며 사용자가 볼 수 있도록 강조 표시되어야 합니다.
syn cluster shCommentGroup add=shHPC
hi link shHPC PreProc
재정의 구문 일치 정의
또는 클러스터를 건너뛰고 주석 구문을 재정의할 수도 있습니다. 예를 들어, 특수 키워드는 줄 시작 부분에만 표시되었지만 이제는 Bash 명령 뒤에 표시됩니다. 또는 #
클러스터 방법이 원래 강조 표시를 유지한다는 사실을 참을 수 없는 경우 .
syn match shHPC "^\s*\zs#PBS"
hi link shHPC PreProc
활성화
이러한 명령은 기본 제공 구문을 확장하므로 해당 명령 다음에 실행해야 합니다. 그 곳은 ~/.vim/after/syntax/sh.vim
특정 프로젝트에 대해서만 조건부로 활성화하려는 경우 다음과 같이 작성할 수 있습니다.파일 유형 감지예를 들어 플래그 변수를 설정 b:is_HPC
하고 위의 코드에서 해당 플래그를 확인하도록 합니다.