memdeltasでxdebugのトレースファイルのためのVim foldexprの書き方
質問
私はVimの表現について何も知りません。私はxdebugのトレースファイルの構文ファイルが付属してVimのfoldexprを持っています。既存の式は次のようになります:
foldexpr=strlen(substitute(substitute(substitute(substitute(getline(v:lnum),'^TR.*$','',''),'\\s>=>','->',\"g\"),'^\\s.\\{20\\}\\(\\s\\+\\)\\?->.*$','\\1',''),'\\s\\s','\',\"g\"))-2
このようになり、デフォルトのトレースファイル、のためにOKに動作することをます:
0.0974 3908596 -> GenericDispatcher->dispatch() /home/tomw/source/public_html/main.php:49
0.0975 3908676 -> ReflectionClass->getMethods() /home/tomw/source/presentation/framework/routing/GenericDispatcher.php:59
0.0975 3910532 -> ReflectionFunctionAbstract->getName() /home/tomw/source/presentation/framework/routing/GenericDispatcher.php:60
など。
あなたがトレースにMEMデルタを表示するようにXdebugをを設定した場合、ただし、トレースファイルは、(メモリデルタとの余分な列を、注意して例えば80)。このように終わる:
0.0964 3908336 +84 -> GenericDispatcher->dispatch() /home/tomw/source/public_html/main.php:49
0.0965 3908416 +80 -> ReflectionClass->getMethods() /home/tomw/source/presentation/framework/routing/GenericDispatcher.php:59
0.0965 3910272 +1856 -> ReflectionFunctionAbstract->getName() /home/tomw/source/presentation/framework/routing/GenericDispatcher.php:60
誰がどのように折りたたみが第二の例では正常に動作するように、元の式を変更するには教えてもらえますか?私はそれの頭や尾をすることはできません。
おかげ
解決
読み出し部
'^\\s.\\{20\\}\\(\\s\\+\\)\\?->.*$'
は、ライン[^
]、その後、1つのスペース[\\s
]、20回の繰り返しのために、その後の任意の文字[.\\{20\\}
]、後で[\\(\\s\\+\\)\\?
]、そして最終的に矢印プラス何のために覚えて、その後必要に応じて1つまたはスペースの始まりを探しています他のライン[->.*$
]の最後に。あなたは常に余分な列を使用してしようとしている場合は、私はちょうど、30に20文字検索を変更しますので、同様ます:
'^\\s.\\{30\\}\\(\\s\\+\\)\\?->.*$'
そうでなければ、あなたはこのような範囲を、試してみてください
'^\\s.\\{20,30\\}\\(\\s\\+\\)\\?->.*$'
私は実際にこれらのいずれかをテストしていませんので、あなたは数字ビットを微調整する必要があるかもしれませんが、これは、あなたがそれを動作持つ方に始める必要があります。
所属していません StackOverflow