質問

私は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\\+\\)\\?->.*$'

私は実際にこれらのいずれかをテストしていませんので、あなたは数字ビットを微調整する必要があるかもしれませんが、これは、あなたがそれを動作持つ方に始める必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top