كيفية جعل Emacs يقوم بفك كتلة من التعليمات البرمجية؟

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

  •  09-06-2019
  •  | 
  •  

سؤال

لنفترض أن لدي سطرًا في مخزن emacs المؤقت يبدو كما يلي:

foo -option1 value1 -option2 value2 -option3 value3 \
    -option4 value4 ...

أريد أن يبدو مثل هذا:

foo -option1 value1 \
    -option2 value2 \
    -option3 value3 \
    -option4 value4 \
    ...

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

هل يعرف أحد وظيفة elisp للقيام بذلك؟

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

المحلول

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

نصائح أخرى

في هذه الحالة سأستخدم الماكرو.يمكنك البدء في تسجيل ماكرو باستخدام C-x (، والتوقف عن تسجيله باستخدام C-x).عندما تريد إعادة تشغيل الماكرو اكتب C-x e.

في هذه الحالة، سأكتب C-a C-x ( C-s v a l u e C-f C-f \ RET SPC SPC SPC SPC C-x )

سيؤدي ذلك إلى تسجيل ماكرو يبحث عن "قيمة"، ويتحرك للأمام 2، ويدرج شرطة مائلة وسطرًا جديدًا، وأخيرًا يباعد السطر الجديد ليصطف.ثم يمكنك تكرار هذا الماكرو عدة مرات.

يحرر:لقد أدركت للتو أن البحث عن النص الحرفي الخاص بك قد لا يكون سهلاً مثل "القيمة 1".يمكنك أيضًا البحث عن المسافات والتنقل بين النتائج.على سبيل المثال، ضرب C-s عدة مرات بعد المباراة الأولى لتخطي بعض المباريات.

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

يحرر:شكرًا على تعليقك حول (مقابل C-)، لقد كنت على حق في خطأي!

أنا شخصياً أفعل أشياء كهذه طوال الوقت.

لكنني لا أكتب وظيفة للقيام بذلك إلا إذا كنت سأفعل ذلك كل يوم لمدة عام.

يمكنك القيام بذلك بسهولة عن طريق استبدال الاستعلام، مثل هذا:

m-x (استعلام-استبدال " -option" "^Q^J -option")

أقول ^q ^j لأن هذا هو ما ستكتبه لاقتباس خط جديد ووضعه في السلسلة.

ثم فقط اضغط على "Y" للحصول على الأوتار لاستبدالها ، و "N" لتخطي حالات الزاوية الغريبة التي تجدها.

هناك وظيفة أخرى من العمود الفقري وهي الاستعلام-REGEXP يمكنها إجراء بدائل للتعبيرات العادية.

وأيضًا-إعادة تبريد Grep-Query ، والتي ستقوم بإجراء عملية استعلام عن طريق تحليل إخراج أمر GREP.هذا مفيد لأنه يمكنك البحث عن "FOO" في 100 ملف ، ثم قم بإجراء عمليات الاستعلام على كل حدث يتخطى من ملف إلى ملف.

قد يدعم وضعك هذا بالفعل.في الوضع C ووضع Makefile، على الأقل، سوف يقوم M-q (فقرة التعبئة) بإدراج استمرارية الأسطر في عمود التعبئة والتفاف الخطوط الخاصة بك.

في أي وضع تقوم بتحرير هذا؟

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