محيط فيم:قم بإنشاء علامة جديدة ولكن لا تضع مسافة بادئة/سطر جديد

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

  •  09-09-2020
  •  | 
  •  

سؤال

أرغب في تقليد Textwards CTRL+ALT+w، الذي ينشئ زوجًا جديدًا من علامات فتح وإغلاق HTML على نفس السطر.

في VIM Surround، أستخدم CTRL+st في وضع التحرير لهذا الغرض، ولكنه دائمًا ما يضع مسافة بادئة وينشئ سطرًا جديدًا بعد تعيين العلامة، بحيث يبدو كما يلي (* = موضع المؤشر):

<p>
  *
</p>

هل هناك طريقة لتحقيق ذلك؟:

<p>*</p>
هل كانت مفيدة؟

المحلول

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

ربما تريد إنشاء تحديد "حسب الشخصية" باستخدام v قبل أن يحيط بها.

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


تحديث

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

في حالتك، أوصي بإلقاء نظرة HTML AutoCloseTag.يقوم هذا البرنامج الإضافي بإغلاق علامة html بمجرد كتابة الملف >.ومن المؤكد أنه أكثر ملاءمة، ويستخدم ضغطات مفاتيح أقل من المحيط.

<p         <--- Now when you type ">", if becomes:
<p>|</p>   <--- Where "|" is the cursor.

من الواضح أنك ستحصل على هذا السلوك في كل علامة.ولكن قد يكون ذلك مفيدًا إذا كنت ترغب في ذلك.

نصائح أخرى

من الوضع العادي اكتب vstp> للدخول إلى الوضع المرئي وإخراج الفتح والإغلاق <p> علامة على نفس السطر في موضع المؤشر الحالي.استخدم الحرف S الكبير للمحافظة على مستوى المسافة البادئة الحالي.

هذا لا يضع المؤشر بين العلامات كما تصفها، ولكن لا يفعل ذلك أيضًا Textmate كنترولدبليو الاختصار (أعتقد أنك تقصد CTRL+Shift+w، وليس CTRL+ALT+w، حيث يقوم الأخير بإخراج علامة الماس فقط.)

ربما تكون إجابتي متأخرة، لكنني سأحاول المساعدة.واجهت مشكلة مماثلة مع البرنامج المساعد Vimsurround.في كل مرة أحدد جملة (سطر واحد) باستخدام ctrl+V وأحاول أن أحيطها بشيء أحصل على هذا:

{
var myVar
}

بدلا من هذا:

{ var myVar } // what I wanted

لقد وجدت الحل السهل:من الوضع العادي اخترت خط مع تجاه الأمر ثم أكتب الحرف الكبير C (تخطيط vim المحيطي الخاص بي) واختر بين قوسين للإحاطة. ثم أحصل على سطر واحد محاط بشكل جيد.

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

لإنشاء علامة جديدة محيطة عن عنصر دون استخدامات المسافة البادئة VIM التلقائية عند استخدام مجموعة مختارة حكيمة (IE: Vyss )، يمكنك بدلا من ذلك القيام بشيء مثل:

^ ys $

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

النتيجة هي:

giveacodicetagpre.

قد تصبح شيئا مثل هذا:

giveacodicetagpre.

الأمر قابل للتكرار أيضا مع . وجميع الخير VIM العادي.

تعثر على هذا السؤال لأنني كنت أتساءل هذا أيضا - أعتقد أن أبسط طريقة للقيام بذلك:

giveacodicetagpre.

(g yss يحيط بخط مع شيء ما دون المسافة البادئة - انظر هنا: http://www.catonmat.net/blog/vim-plugins-surround-vim/ )

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