لماذا يضيف VIM مسافات عند الانضمام إلى الخطوط؟

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

  •  21-09-2019
  •  | 
  •  

سؤال

أريد فك النص في VIM. عندما أنضم إلى الخطوط ، أحصل على مساحة إضافية بين الجمل.

لماذا هذا؟

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

المحلول

التنسيق يدمر المعلومات. هناك العديد من كتل النص المختلفة التي ستؤدي إلى نفس الكتل بمجرد تنسيقها. لذلك ، لا توجد طريقة لعكس العملية دون معرفة مسبقة (أي التراجع).

غير مهتم:

Unformatted text could start out as either all one line, or several, yet look the same when formatted.

Unformatted text could start out as either all one line, or several, 
yet look the same when formatted.

منسقة:

Unformatted text could start out as 
either all one line, or several, 
yet look the same when formatted.

إذا كنت تريد الفقرة الخاصة بك على سطر واحد ، أو إذا كنت بخير مع القليل من العبث اليدوي ، فيمكنك الاستخدام J للانضمام إلى الخطوط مرة أخرى معا. يمكنك استخدام الوضع المرئي لتطبيق J أمر بعدة أسطر في وقت واحد ، وربما جنبا إلى جنب مع ap أو ip لتحديد فقرة ، على سبيل المثال vipJ. مرة أخرى ، ستظل ستفقد بعض المعلومات - مساحات متعددة في فترات الاستراحة قبل التنسيق ستنهار في مساحات واحدة. (يمكنك بالفعل الانضمام دون تعديل المساحات باستخدام gJ بدلاً من J, ، لكنك ستفقدها بالفعل عند تنسيقك)

إذا كنت منزعجًا من المساحات الإضافية بعد الجمل (الخطوط التي تنتهي في! ،؟ ، أو.) ، قم بإيقاف تشغيل joinspaces: set nojoinspaces

نصائح أخرى

لدي شعور أن هذا ما تريده حقًا: GJ

من :h gJ:

gJ          Join [count] lines, with a minimum of two lines.
            Don't insert or remove any spaces.  {not in Vi}

هذا مفيد إذا قمت بنسخ شيء من محطة ولصقه ككتلة مستطيلة كبيرة في VIM ، بدلاً من سطر واحد.

عادة ما أستخدمه في الوضع المرئي. الاشياء هيلايت ، GJ.

أعتقد أن الحل البسيط للانضمام إلى الخطوط بدون مسافات بين:

:j!

مع ! JOIN لا إدراج أو حذف أي مساحات. للملف بأكمله ، استخدم :%j!.

نرى: :help :join.

هذه هو الجواب الذي انتهى الأمر بالعمل بالنسبة لي ، لم يعمل أي مما سبق في حالة الاستخدام.

في الأساس ، استخدم GJ كما قال العديد من الآخرين ، ولكن تسليط الضوء على جميع الملفات ، لذلك في كتابة وضع الأوامر GGVGGJ.

لا يزال لدي مساحة إضافية بعد الانضمام ، إذا كان الخط الذي نعمل عليه لا ينتهي بالمساحة. عادة ما يكون هذا هو السلوك المطلوب. مثال

first line without space
second line

بعد الانضمام مع J, ، أصبح

first line without space second line

على الرغم من أننا في بعض الحالات ، لا نرغب في تطبيقه ،

myInstance->methodA()
          ->methodB()

ونريد أن تصبح الانضمام myInstance->methodA()->methodB() بدون أي مساحة بين!

هنا يقوم المساعدون بتخطيط أنا أستخدمه

nmap <leader>jj Jx

u003Cleader>يمكن فحص المفتاح مع :let mapleader, ، افتراضي للمفتاح \ أعتقد.

لذلك في الوضع العادي ، فقط \jj لأداء الانضمام دون أي مساحة إضافية!

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