كيفية كتابة فيم foldexpr لملفات xdebug أثر مع memdeltas
سؤال
لا اعلم شيئا عن تعبيرات همة. لدي foldexpr همة التي تأتي مع ملف بناء الجملة من أجل ملفات xdebug أثر. التعبير القائمة يبدو مثل هذا:
foldexpr=strlen(substitute(substitute(substitute(substitute(getline(v:lnum),'^TR.*$','',''),'\\s>=>','->',\"g\"),'^\\s.\\{20\\}\\(\\s\\+\\)\\?->.*$','\\1',''),'\\s\\s','\',\"g\"))-2
وهذا يعمل موافق لملفات التتبع الافتراضية، والتي تبدو مثل هذا:
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
وغيرها.
ولكن، إذا قمت بتكوين 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\\+\\)\\?
]، وأخيرا سهم بالإضافة إلى أي شيء آخر إلى نهاية السطر [->.*$
]. إذا كنت تسير دائما إلى استخدام عمود إضافي، وأود أن مجرد تغيير البحث 20 شخصية إلى 30، كما يلي:
'^\\s.\\{30\\}\\(\\s\\+\\)\\?->.*$'
وخلاف ذلك، قد حاولت مجموعة، مثل هذا:
'^\\s.\\{20,30\\}\\(\\s\\+\\)\\?->.*$'
وأنا لم تختبر في الواقع أي من هذه، لذلك قد تضطر إلى قرص الأرقام قليلا، ولكن هذا يجب ان تحصل على انك بدأته نحو وجود لها العمل.