2009-02-05 6 views
2

Vim 표현식에 대해 알지 못합니다. xdebug 추적 파일 용 구문 파일과 함께 제공되는 vim foldexpr을 가지고 있습니다. 기존의 표현은 다음과 같습니다 : 당신은 MEM 델타를 보여 Xdebug는를 구성하는 경우,memdeeltas를 사용하여 xdebug 추적 파일에 대해 Vim foldexpr을 작성하는 방법

그러나

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 

등 : 다음과 같이 기본 추적 파일에 대한 확인 작업

foldexpr=strlen(substitute(substitute(substitute(substitute(getline(v:lnum),'^TR.*$','',''),'\\s>=>','->',\"g\"),'^\\s.\\{20\\}\\(\\s\\+\\)\\?->.*$','\\1',''),'\\s\\s','\',\"g\"))-2 

트레이스에서 트레이스 파일은 다음과 같이 끝납니다 (메모리 델타가있는 별도의 열에 유의하십시오. 예 : +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 

누구든지 두 번째 예제에서 폴딩이 제대로 작동하도록 원래 표현식을 수정하는 방법을 알려 줄 수 있습니까? 나는 머리도 꼬리도 만들 수 없다.

감사

답변

2

'^\\s.\\{20\\}\\(\\s\\+\\)\\?->.*$' 

를 판독 부분은 라인 [^]의 시작에 대해 검색하고, 그 다음 1 개 공간 [\\s 20 반복 [.\\{20\\}] 다음에 대한 다음의 문자 선택적으로 나중에 [\\(\\s\\+\\)\\?]을 위해 기억 된 하나 또는 공백, 그리고 마지막으로 화살표 [->.*$]의 끝 부분에있는 화살표. 당신은 항상 여분의 열을 사용하려는 경우, 그냥과 같이, 30에 20 문자 검색을 바꿀 것 :

'^\\s.\\{30\\}\\(\\s\\+\\)\\?->.*$' 

을 그렇지 않으면,이 범위를 시도 할 수 있습니다, 다음과 같이 :

'^\\s.\\{20,30\\}\\(\\s\\+\\)\\?->.*$' 

나는 이것들을 실제로 테스트하지는 않았으므로 숫자를 약간 조정해야 할 수도 있지만, 이것이 작동하도록하려면 시작해야합니다.

+0

위대한 트릭입니다. 건배! – EvilPuppetMaster