إعادة هيكلة C/C++ في Vim (على سبيل المثال.طريقة الاستخراج كما في Eclipse)

StackOverflow https://stackoverflow.com/questions/2470653

سؤال

هل هناك أي مكونات إضافية أو طرق مضمنة في Vim لإجراء إعادة البناء على كود C أو C++، مثل أدوات إعادة البناء في Eclipse؟

أنا مهتم بشكل خاص بأداة إعادة هيكلة طريقة الاستخراج من Eclipse والتي ستحدد المعلمات من الطرق الجديدة وعادة ما تخمن أيضًا متغيرًا لاستخدامه كقيمة الإرجاع.

هل كانت مفيدة؟

المحلول

لا، على الرغم من أن Vim بيئة جيدة للتحرير، ويمكن تخصيصها بعدة طرق (طي التعليمات البرمجية، وتلوين بناء الجملة، وتوسيع الماكرو، وما إلى ذلك) يتم تنفيذ معظمها على مستوى بناء الجملة، بدلاً من المستوى الدلالي.حتى طي الكود يطابق الأقواس المتعارضة.

لإجراء إعادة هيكلة مناسبة، يجب أن يكون لديك الكثير من المعرفة الدلالية حول AST، وما هي المتغيرات المعلنة في أي نطاق، وما إلى ذلك.تقوم بيئات التطوير مثل Eclipse ببناء ذاكرة تخزين مؤقت للمتغيرات المحددة في كل نطاق معجمي، بحيث يمكنها الرجوع بسرعة إلى مكان استخدامها من حيث تحديد ما يجب إعادة تسميته وأين.

هذا لا يعني أنك لا تستطيع القيام ببعض الأشياء من الناحية النحوية؛بعد كل شيء، يمكن للمرء فقط إخراج كتلة من التعليمات البرمجية ووضعها في وظيفة منفصلة بسهولة كافية.قد تكون قادرًا على تخمين بعض المعلمات (على سبيل المثال.ابحث عن قائمة بالمتغيرات، واكتشف المتغيرات التي تحتوي على إعلانات محلية، وقم بإزالتها وما تبقى هو المعلمات الخاصة بك.لكن Eclipse يقوم أيضًا بأشياء أخرى، مثل معرفة ما إذا كان قد تم تعديل أي متغيرات في الوظيفة، والتأكد من تمريرها مرة أخرى بواسطة القيمة المرجعة.كما يقوم أيضًا بالتحقق من وجود أي استثناءات تم طرحها وإضافتها إلى القائمة.

التأثير الصافي هو أنه بينما قد تكون قادرًا على تقريب بعض هذه العناصر في Vim، فلن تتمكن حقًا من تشغيل هذا في بيئة Vim فقط.يمكنك إما استخدام رابط مفاتيح يشبه Vim في Eclipse بشكل صحيح، أو إلقاء نظرة عليه اكليم.من الصفحة الرئيسية:

الهدف الأساسي من eclim هو جلب وظيفة الكسوف إلى Vim محرر.كان الهدف الأولي هو توفير وظائف جافا Eclipse في vim ، ولكن دعم لمختلف الآخرين اللغات (C / C ، PHP ، Python ، Ruby ، CSS ، HTML ، XML ، إلخ.) تمت إضافته ومن المقرر إجراء العديد من المشاريع الأخرى.

Eclim هو أقل من تطبيق و أكثر من تكامل اثنين عظيم المشاريع.الأول ، Vim ، يمكن القول إنه أحد أفضل برامج تحرير النصوص في وجود.والثاني ، الكسوف ، يوفر العديد من الأدوات الرائعة ل التنمية في مختلف اللغات.كل يوفر العديد من الميزات التي يمكن زيادة إنتاجية المطور ، ولكن كلاهما لا يزال يترك شيئا ليكون مراد.يفتقر Vim إلى دعم Java الأصلي والعديد من الميزات المتقدمة متوفر في الكسوف.الكسوف ، على من ناحية أخرى ، لا يزال يتطلب استخدام الفأر لأشياء كثيرة ، ومتى مقارنة ب Vim ، يوفر أقل من واجهة مثالية لتحرير النص.

هذا هو المكان الذي يلعب فيه eclim.بدلاً من محاولة كتابة IDE في VIM أو محرر VIM في Eclipse ، يوفر Eclim مكونًا إضافيًا Eclipse يعرض ميزات Eclipse من خلال واجهة الخادم ، ومجموعة من المكونات الإضافية VIM التي تتواصل مع Eclipse عبر تلك الواجهة.

وهذا لا يوفر بيئة تشبه الكسوف فحسب، بل إنه أيضًا يكون كسوف.ولكن لا يزال بإمكانك الحصول على ميزات التنقل وتحرير النص الخاصة بـ vim.يبدو أن هذا قد يناسب احتياجاتك، على الرغم من أن الوثائق موجودة دعم إعادة الهيكلة لا يشير إلى أنه يوفر وظيفة طريقة الاستخراج.

نصائح أخرى

لقد كتبت عام refactoring plugin. C ++ هي واحدة من اللغات الأساسية التي يتم التعامل معها (لأنها لغتي الأساسية في العمل). يتم دعم استخراج الطريقة.

بالنسبة لـ C ++ ، فإن المكون الإضافي قادر (بفضل CTAGs) على استنتاج معظم (ولكن للأسف ليس دائمًا كل شيء - بفضل CTAGs ...) من المتغيرات القادمة داخل وخارج الوظيفة المستخرجة. لا يزال يتعين عليّ كتابة مربع حوار صغير لتحديد كيفية تبادل المتغيرات داخل/الخروج (Const Ref ، RValue Ref ، نسخ ، مؤشر ، tuples ، الهيكل ، وما إلى ذلك) (راجع للشغل ، المساعدة موضع ترحيب لأن واجهة المستخدم الرسومية ليست الخاصة بي ^^ ').

بعد البحث عن عالية ومنخفضة عن VIM مع إعادة إنشاء C ++ ، هذا هو أفضل حل الذي توصلت إليه.

  • Visual Studio 2013 و أعلى - IDE العظيمة لتطوير وتصحيح الأخطاء ، ولكن ليس لديه ما يكفي من إعادة إنشاء أو VIM
  • قم بتثبيت المكون الإضافي VSVIM - الآن ، لديك كل التنقل VIM ، والبحث ، واستبدال السلسلة ، وما إلى ذلك (بعض الميزات المتقدمة غير مدعومة)
  • تثبيت Resharp C ++ - رائع لإعادة إنشاء بتكلفة السرعة. إنه يجعل الأمر غير متكامل بعض الشيء ، ولكن إذا كنت ترغب في استنتاج طرق/متغيرات تلقائية ، وإعادة تسمية المتغيرات المحلية/العالمية/الطريقة أو الوظائف ، والبحث عن الاستخدامات في الحل ، والمزيد من الميزات ، تجعل الأمر يستحق ذلك.

هذا هو أفضل مجموعة وجدتها لتطوير C ++ وتصحيح الأخطاء وإعادة إنشاء. يجعلني ما لا يقل عن 3x - 5x أسرع. آمل أن يساعدك أيضًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top