Vim - 구문 강조는 전체 줄이 주석 처리되었는지 여부에 따라 달라집니다.

Vim - 구문 강조는 전체 줄이 주석 처리되었는지 여부에 따라 달라집니다.

접힌 부분의 각 줄이 주석인지 공백인지에 따라 vim 강조 표시 접기가 다르게 가능합니까? 그렇다면 어떻게 될까요?

답변1

모든 접기에는 하나의 강조 그룹만 있으므로 접기 강조 표시를 변경할 수 없습니다(:help hl-Folded). 축소 특성을 맞춤설정하여 '모든 댓글'을 표시할 수 있습니다.fold-foldtext;예를 들어 COMMENTED:앞에 .를 추가하면 다음과 같습니다.

+--  3 lines: # some stuff here

COMMENTED: +--  3 lines: # comment

command 2
command 3

솔루션의 두 번째 부분은 접힌 부분 내의 모든 줄이 실제로 주석인지 확인하는 것입니다. 이는 쿼리 구문 강조를 통해 수행할 수 있습니다(synID()) 이는 일반적이지만 번거롭고 잠재적으로 느릴 수도 있습니다. 주석 접두사가 포함된 완전히 주석 처리된 줄에 관심이 있다면 다음과 같이 시작할 수 있습니다.'comments'현재 파일 형식을 대상으로 하고 수동으로 일치시킵니다. (내 거Ingo 라이브러리 플러그인하나 있다기능관심 있는 것이 간단한 공통 주석 접두사 #(셸 스크립트, Perl 등에서 사용되는)뿐이라면 다음과 같이 간단한 패턴 일치를 사용할 수 있습니다.

function! CommentIndicator()
    for l:lnum in range(v:foldstart, v:foldend)
        if getline(l:lnum) !~# '^\s*#'
            " This fold is not fully commented.
            return ''
        endif
    endfor
    return 'COMMENTED: '
endfunction

let &foldtext = 'CommentIndicator() . foldtext()'

답변2

예. 실제로 foldmethod=expr.

예를 들어:

set foldmethod=expr foldexpr=getline(v:lnum)=~'^\s*'.&commentstring[0]

비슷한 질문에 대한 전체 답변은 여기에서 볼 수 있습니다. [1].

관련 정보