vim에서 강조 표시: 주석 구분 기호와 특수 문자열을 사용하여 줄을 구분합니다.

vim에서 강조 표시: 주석 구분 기호와 특수 문자열을 사용하여 줄을 구분합니다.

vim에서 강조 표시: 주석 구분 기호와 특수 문자열을 사용하여 줄을 구분합니다.

#$HPC 클러스터용 스크립트와 같은 경우 SGE, TORQUE 또는 Slurm을 사용할 때 주석 줄은 #으로 표시되지만 그리드 명령은 또는 #PBS또는 로 표시되는 쉘 스크립트(예: bash)를 사용할 수 있습니다 #SBATCH.

#SomeStringBash에서 사용된 것과 동일한 강조 표시를 유지하면서 주석으로 처리되지 않는 쉬운 방법이 있습니까 ?

답변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하고 위의 코드에서 해당 플래그를 확인하도록 합니다.

관련 정보