접힌 부분의 각 줄이 주석인지 공백인지에 따라 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].