vimのfold関数をどのように作成できますか(foldmethod = syntaxを使用している場合)、各関数の後に改行を1つ隠します(if-elseおよびstruct(Goを使用))。
vimのfold関数をどのように作成できますか(foldmethod = syntaxを使用している場合)、各関数の後に改行を1つ隠します(if-elseおよびstruct(Goを使用))。
回答:
Cでそれを行う方法は次のとおりです。
/usr/share/vim
あります)を使用して、(ここでもUnixで)にコピーします~/.vim/syntax
。syntax region cBlock start="{" end="}" transparent fold
なる
syntax region cBlock start="{" end="}\(\n\n\)\?" transparent fold
ここでは、1 \n
つ目は右中括弧の直後の改行文字に一致し、2つ目は空行に一致します。}
コメントなどが続く場合、これは機能しません。ブロックは折りたたまれますが、次の改行は機能しません。
Goの構文ファイルはありません(私が知る限り)が、同じように動作するはずです。
注:より柔軟な方法はで新しいファイルを作成し~/.vim/after/syntax
、領域定義を変更することですが、ここでは失敗しています。リージョン定義をコピーするだけでは機能しません。
私はそれが古いことを知っていますが、@ ansgar-esztermannソリューションに加えて:
syntax clear cBlock
syntax match cBlock1line /.\s*{.\{-}}/ transparent contains=ALLBUT,cBadBlock,cCurlyError,@cParenGroup,cErrInParen,cErrInBracket,cBlockImp
syntax region cBlockImp start=/{/ end=/};\?\(\n\n\)\?/ transparent fold contains=ALLBUT,cBadBlock,cCurlyError,@cParenGroup,cErrInParen,cErrInBracket
で~/.vim/syntax/c.vim
折り目新しい行(のためstruct
の余りに)