في Vim، ما هي أفضل طريقة لتحديد أو حذف أو التعليق على أجزاء كبيرة من النص متعدد الشاشات؟

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

  •  09-06-2019
  •  | 
  •  

سؤال

يعد تحديد كمية كبيرة من النص الذي يمتد على العديد من الشاشات في IDE مثل Eclipse أمرًا سهلاً إلى حد ما حيث يمكنك استخدام الماوس، ولكن ما هي أفضل طريقة لذلك على سبيل المثال.تحديد وحذف كتل النص أو الكتابة متعددة الشاشات على سبيل المثال.ثلاث طرق كبيرة للوصول إلى ملف آخر ثم حذفها لأغراض الاختبار في Vim عند استخدامه عبر المعجون/SSH حيث لا يمكنك استخدام الماوس؟

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

وسؤال ذو صلة:هل هناك طريقة لتحديد 40 سطرًا بطريقة ما، ثم التعليق عليها جميعًا (باستخدام "#" أو "//")، كما هو شائع في معظم بيئات التطوير المتكاملة (IDEs)؟

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

المحلول

حسنا، أولا وقبل كل شيء، يمكنك تعيين vim للعمل باستخدام الماوس، مما يسمح لك بتحديد النص تمامًا كما تفعل Eclipse.

يمكنك أيضًا استخدام التحديد المرئي - الخامس, ، بشكل افتراضي.بمجرد تحديدها، يمكنك yank, cut, ، إلخ.

فيما يتعلق بالتعليق على الكتلة، عادةً ما أقوم باختيارها باستخدام VISUAL, ، ثم افعل

:'<,'>s/^/# /

استبدال بداية كل سطر بحرف أ #.(ال '< و '> العلامات هي بداية الاختيار المرئي.

نصائح أخرى

استخدم العلامات.

انتقل إلى أعلى كتلة النص التي تريد حذفها وأدخلها

ma

في أي مكان على هذا الخط.لا حاجة للقولون.

ثم انتقل إلى نهاية الكتلة وأدخل ما يلي:

:'a,.d

الدخول ma وقد وضعت علامة a للشخصية الموجودة تحت المؤشر.

الأمر الذي أدخلته بعد الانتقال إلى أسفل كتلة النص يقول "من السطر الذي يحتوي على الحرف الموصوف بواسطة العلامة a ('أ) إلى السطر الحالي (.) dالنخبة."

يمكن استخدام هذا النوع من الأشياء لأشياء أخرى أيضًا.

:'a,.ya b     - yank from 'a to current line and put in buffer 'b'
:'a,.ya B     - yank from 'a to current line and append to buffer 'b'
:'a,.s/^/#/   - from 'a to current line, substitute '#' for line begin
(i.e. comment out in Perl)
:'s,.s#^#//#  - from 'a to current line, substitute '//' for line begin
(i.e. comment out in C++)

ملحوظة: 'a (الفاصلة العليا أ) تشير إلى السطر الذي يحتوي على الحرف الذي تم وضع علامة عليه a.``أ(backtick-a) refers to the character marked byأ`.

لإدراج تعليقات، حدد الأحرف الأولى من السطور التي تستخدمها كنترول-الخامس (مرئي على شكل كتلة، وليس حرف "v" مرئيًا أو مرئيًا خطيًا).ثم انتقل إلى وضع الإدراج باستخدام "I"، وأدخل حرف (أحرف) التعليق في السطر الأول (على سبيل المثال "#") وأخيرًا قم بالهروب إلى الوضع العادي باستخدام "Esc".هاهو!

لإزالة التعليقات، استخدم blockwise-visual لتحديد التعليقات وحذفها فقط باستخدام "س'.

استخدم أمر الكتلة المرئية v (أو V للخطوط الكاملة و ج-الخامس للكتل المستطيلة).أثناء وجودك في وضع الكتلة المرئية، يمكنك استخدام أي أوامر حركة بما في ذلك البحث؛أستخدم } بشكل متكرر للانتقال إلى السطر الفارغ التالي.بمجرد وضع علامة على الكتلة، يمكنك نقلها إلى ملف أو حذفها أو سحبها أو أي شيء آخر.إذا قمت بتنفيذ أمر واختفت الكتلة المرئية، فأعد تحديد نفس الكتلة مع gv.انظر: مساعدة التغيير البصري للمزيد.

أعتقد أن هناك نصوصًا برمجية خاصة باللغة تأتي مع vim والتي تقوم بأشياء مثل التعليق على مجموعات من التعليمات البرمجية بطريقة تناسب اللغة التي تختارها.

يضعط V (الحرف الكبير V) ثم اضغط 40j لتحديد 40 سطرًا ثم اضغط على d لحذفها.أو كما رد @zigdon، يمكنك التعليق عليها.

الوضع المرئي هو الحل لمشكلتك الرئيسية.أما بالنسبة للتعليق على أقسام التعليمات البرمجية، فهناك العديد من المكونات الإضافية لذلك على vim.org، وأنا أستخدم tComment.vim في الوقت الحالي.

هناك أيضًا طريقة رائعة للتعليق على كتلة بدون مكون إضافي.لنفترض أنك تعمل في لغة بايثون وأن # هو حرف التعليق.قم بتحديد كتلة مرئية للعمود الذي تريد أن تكون علامة التجزئة فيه، واكتب I#ESCAPE.للدخول إلى وضع الكتلة المرئية، اضغط على C-q على نظام التشغيل windows أو C-v على نظام التشغيل Linux.

أو قد ترغب في تجربة هذا البرنامج النصي ...

http://www.vim.org/scripts/script.php?script_id=23

تقنية التعليق الجماعي الخاصة بي:

كنترول+الخامس لبدء الوضع المرئي في اتجاه الكتلة.

حدد اختيارك.

مع أن التحديد لا يزال نشطًا، يحول+أنا.هذا يضعك في وضع إدراج العمود.

اكتب أحرف التعليق "#" أو "//" أو أي شيء آخر.

خروج.

إذا كنت تريد تنفيذ إجراء على نطاق من الأسطر، وكنت تعرف أرقام الأسطر، فيمكنك وضع النطاق في سطر الأوامر.على سبيل المثال، لحذف الأسطر من 20 إلى 200، يمكنك القيام بما يلي:

:20,200d

لنقل الأسطر من 20 إلى 200 إلى حيث يوجد السطر 300 يمكنك استخدام:

:20,200m300

وما إلى ذلك وهلم جرا.

للتعليق على السطور، أود أن أقترح أحد هذه الإضافات:

تعليق محسّن

الطالب الذي يذاكر كثيرا المعلق

أجد نفسي أستخدم NERD أكثر هذه الأيام، لكنني استخدمت EnhancedCommentify لسنوات.

يستخدم يحول+الخامس للانتقال إلى الوضع المرئي، ثم يمكنك تحديد الخطوط وحذفها / تغييرها.

طريقتي المعتادة للتعليق على 40 سطرًا هي وضع المؤشر على السطر الأول وإدخال الأمر:

:.,+40 ثانية/^/# /

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

الإجابة الأولى حاليا ليست صحيحة تماما؟للتعليق على الاختيار اضغط ":" واكتب الأمر: "<،"> s/^/#/g

('<, '> - سيكون هناك تلقائيًا)

يجب أن تكون على علم بأمر الوضع العادي [count]كنترول-د.يقوم بشكل اختياري بتغيير خيار "التمرير" من 10 إلى [العدد]، ثم يقوم بالتمرير لأسفل هذا العدد من الأسطر.الضغط كنترول-د مرة أخرى سيتم التمرير لأسفل نفس الأسطر مرة أخرى.

لذا حاول الدخول

V     "visual line selection mode
30    "optionally set scroll value to 30
CTRL-D  "jump down a screen, repeated as necessary
y      " yank your selection

يعمل CTRL-U بنفس الطريقة ولكن يتم التمرير لأعلى.

يدخل v في وضع الكتلة المرئية، حيث يمكنك التحديد كما لو كان باستخدام Shift في معظم برامج التحرير الشائعة، ويمكنك لاحقًا القيام بأي شيء يمكنك القيام به عادةً باستخدام الأوامر العادية (الاستبدال :'<,'>s/^/#/ لإضافة تعليق مسبقًا ، على سبيل المثال) حيث يعني '<,'> الكتلة المرئية المحددة بدلاً من النص بأكمله.

ستكون العلامات هي الأبسط ميغابايت حيث تريد أن تبدأ و أنا حيث تريد أن تنتهي بمجرد الانتهاء من ذلك، يمكنك فعل أي شيء تريده تقريبًا

:'b,'ed

يحذف من العلامة ب إلى علامة ه

يمكنك التعليق على 40 سطرًا في الوضع المرئي

V40j:s/^/#/

سوف نقوم بالتعليق على 40 سطرًا من حيث يبدأ التسلسل

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