関数を折りたたむと、関数の後に改行が表示されなくなります


8

vimのfold関数をどのように作成できますか(foldmethod = syntaxを使用している場合)、各関数の後に改行を1つ隠します(if-elseおよびstruct(Goを使用))。

回答:


4

Cでそれを行う方法は次のとおりです。

  • 元の構文ファイル(Unixで、通常はに/usr/share/vimあります)を使用して、(ここでもUnixで)にコピーします~/.vim/syntax
  • cBlock領域定義の「終了」パターンを変更します。
syntax region cBlock    start="{" end="}" transparent fold

なる

syntax region cBlock    start="{" end="}\(\n\n\)\?" transparent fold

ここでは、1 \nつ目は右中括弧の直後の改行文字に一致し、2つ目は空行に一致します。}コメントなどが続く場合、これは機能しません。ブロックは折りたたまれますが、次の改行は機能しません。

Goの構文ファイルはありません(私が知る限り)が、同じように動作するはずです。

注:より柔軟な方法はで新しいファイルを作成し~/.vim/after/syntax、領域定義を変更することですが、ここでは失敗しています。リージョン定義をコピーするだけでは機能しません。


0

私はそれが古いことを知っていますが、@ 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の余りに)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.