折りたたまれた部分の各行が注釈か空白なのかによって、vimの強調表示折りたたみが異なる可能性がありますか?それではどうなりますか?
答え1
すべての折りたたみには1つのハイライトグループしかないため、折りたたみハイライトを変更することはできません(:help hl-Folded
)。縮小属性をカスタマイズして「すべてのコメント」を表示できます。fold-foldtext
;たとえば、COMMENTED:
前に.を追加すると、次のようになります。
+-- 3 lines: # some stuff here
COMMENTED: +-- 3 lines: # comment
command 2
command 3
解決策の2番目の部分は、折りたたまれた部分内のすべての行が実際にコメントであることを確認することです。これはクエリ構文の強調表示を介して行うことができます(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]。