আমি vi তে একাধিক লাইন কীভাবে মুছতে পারি?


129

আমি নিম্নলিখিত অনুসরণ করার চেষ্টা করেছি:

VI ম সম্পাদকের নির্বাচিত পাঠ্য কীভাবে মুছবেন

কিন্তু

5dd

দেয়

E492: সম্পাদক কমান্ড নয়: 5 ডিডি

আমি তখন চেষ্টা করেছি:

5d

যা কেবল একটি একক লাইন মুছে দেয়। আমি কীভাবে একাধিক লাইন মুছতে পারি?


2
যতদূর আমি স্মরণ করি, 5 ডিডিটি বৈধ সিনট্যাক্স হওয়া উচিত এবং কার্সার চালু থাকা একটি দিয়ে শুরু হওয়া 5 টি লাইন মুছে ফেলা উচিত। কোনও সুযোগের ক্যাপস লক চালু আছে এবং আপনি এমন একটি কীবোর্ড লেআউট ব্যবহার করেন যে সংখ্যার কীগুলি যখন তা পরিবর্তন হয়?
এরিক জে।

উত্তর:


132

আপনি কমান্ড মোডে কমান্ডগুলি প্রবেশ করানোর মতো শোনায় (যেমন "প্রাক্তন মোড")। সেই প্রসঙ্গে :5d5 নম্বর লাইনটি সরিয়ে ফেলবে, অন্য কিছুই নয়। জন্য 5ddযে, পাঁচ অনুবর্তী লাইন কার্সার থেকে শুরু অপসারণ - - অভিপ্রেত হিসেবে কাজ করতে স্বাভাবিক মোডে প্রবেশ এবং কমান্ড পূর্বে ভী না :



142

আপনি যদি লাইন নম্বরগুলি জানেন তবে আপনি একাধিক (সীমা) লাইন মুছতে পারেন:

:[start_line_no],[end_line_no]d

দ্রষ্টব্য: d মুছে ফেলার জন্য দাঁড়িয়েছে

যেখানে,
start_line_no হ'ল প্রারম্ভিক লাইন নয় আপনি মুছে ফেলতে চান এবং শেষ_লাইন_এমন শেষ লাইনের কোনওটি আপনি মুছতে চান না। শুরু এবং শেষ সহ প্রারম্ভ এবং শেষের মধ্যবর্তী লাইনগুলি মুছে ফেলা হবে।

উদাহরণ:

:45,101d

45 এবং 101 সহ 45 এবং 101 এর মধ্যে থাকা লাইনগুলি মুছে ফেলা হবে।


14
আপনি $ফাইলটিতেও শেষ লাইনটি চিহ্নিত করতে ব্যবহার করতে পারেন । সুতরাং :45,$d45 থেকে শেষ পর্যন্ত প্রতিটি লাইন মুছে ফেলবে।
ফ্রিথবিস

আপনি এমনকি প্যাটার্নগুলি ব্যবহার করতে পারেন/<\/div>/
বিজন

1
আপনি বর্তমানে যে লেনটি রয়েছেন সেগুলি থেকে আপনি যদি পরিসরটি শুরু করতে চান তবে আপনি করতে পারেন:.,[end_line_no]d
জো

15

সাধারণ মোডে ব্যবহারের জন্য তালিকাভুক্ত কমান্ডগুলি ( :কমান্ড মোডের জন্য উপসর্গ )।
ভিম পরীক্ষিত।

লাইন পরিমাণ অনুসারে:

  • নামdd - বর্তমান কার্সার অবস্থান থেকে গণনা শুরুর জন্য নং রেখা মুছে ফেলবে (যেমন 5ddবর্তমান লাইন এবং এর অধীনে 4 টি লাইন মুছে ফেলবে => বর্তমান লাইন এবং (এর নীচে সংখ্যা -1 ) লাইন মুছে ফেলবে )
  • NUMdk - মুছে ফেলবে NUM বর্তমান লাইন ও বর্তমান লাইন নিজেই থেকে লাইন ইউপি (যেমন 3dkবর্তমান লাইন এবং এটি উপরে 3 লাইন মুছে ফেলবে => বর্তমান লাইন এবং মুছে ফেলে NUM উপরে লাইন )

লাইন সংখ্যা অনুসারে:

  • dNUMG - লাইন মুছে ফেলবে বর্তমান লাইন থেকে (সহ) লাইন আপ সংখ্যা NUM (সহ) (যেমন যদি কার্সার লাইনে বর্তমানে 5 d2Gমুছে ফেলবে লাইন 2-5 সহ)
  • dNUMgg - লাইন মুছে ফেলবে বর্তমান লাইন থেকে (সহ) লাইন সংখ্যা নেমে NUM (সহ) (যেমন যদি কার্সার লাইন 2 উপর বর্তমানেd6gg লাইন মুছে ফেলবে 2-6 সহ)
  • ( কমান্ড মোডে শুধুমাত্র ) :num1 ,num2d - লাইন মুছে ফেলবে লাইন সংখ্যা num1 (সহ) লাইন সংখ্যা নেমে num2 (সহ) । দ্রষ্টব্য: num1 যদি num2 এর চেয়ে বড় হয় - ভিম এর সাথে প্রতিক্রিয়া জানায়Backwards range given, OK to swap (y/n)?

1
এটি আমাকে সহায়তা করেছিল কারণ আমি বুঝতে পারিনি যে নাম্বার 'ডি' 'ডি' নীচে কার্সারটি মোছার চেষ্টা করছে। আমার কার্সরের উপরের লাইনগুলি মুছে ফেলার চেষ্টা করার সাথে ফাইলের নীচে আমার কার্সার ছিল! সাহায্যের জন্য ধন্যবাদ!
জোনাথন চাদ ফিলিং

লিনেনম্বার দিয়ে মুছে ফেলা: ': <স্টার্ট>, $ d' ফাইলটির শেষ না হওয়া পর্যন্ত মুছে ফেলা হবে।
ডিভোলাস

11

আপনি যদি অ-ভিজ্যুয়াল মোড পদ্ধতিটি পছন্দ করেন এবং লাইন নম্বরগুলি স্বীকার করেন তবে আমি আপনাকে অন্য একটি সহজ সরল উপায় প্রস্তাব করতে চাই।

উদাহরণ

আমি পাঠ্যটি লাইন 45 থেকে লাইন 101 এ মুছতে চাই।

আমার পদ্ধতি আপনাকে কমান্ড-মোডে নীচের কমান্ডটি টাইপ করতে পরামর্শ দেয়:

45Gd101G

এতে লেখা আছে:

45 লাইনে ( 45G) তারপরে dবর্তমান লাইন থেকে 101 ( 101G) রেখায় পাঠ্য ( ) মুছুন ।

নোট করুন যে আপনি স্থিরভাবে vimব্যবহার করতে পারেন ।ggG

@ বনি ভার্গিজের উত্তরের সাথে তুলনা করুন যা:

:45,101d[enter]

তার উত্তর থেকে উপরের কমান্ডটিতে 9 বার সহ টাইপ করা আবশ্যক enter, যেখানে আমার উত্তরটির জন্য 8 - 10 বার টাইপ করা প্রয়োজন। সুতরাং, আমার পদ্ধতির একটি গতি তুলনাযোগ্য।

ব্যক্তিগতভাবে, আমি নিজেই 45Gd101Gবেশি পছন্দ করি :45,101dকারণ আমি vi এর কমান্ডের বাক্য গঠনকে আঁকতে পছন্দ করি , এই ক্ষেত্রে:

+---------+----------+--------------------+
| syntax  | <motion> | <operator><motion> |
+---------+----------+--------------------+
| command |   45G    |        d101G       |
+---------+----------+--------------------+

8

d5d পাঁচটি লাইন "কাটা"

আমি সাধারণত মাঝখানে নম্বরটি ফেলে দিই:

d7l = 7 টি অক্ষর মুছুন


7

Escআপনি কোনও সম্পাদনা মোডে নেই তা নিশ্চিত করতে কী টিপুন । মুছে ফেলার জন্য প্রথম লাইনটিতে কার্সারটি রাখুন। প্রবেশ করুন :5dd। বর্তমান লাইন এবং পরবর্তী চারটি লাইন মুছে ফেলা উচিত।

পর্যায়ক্রমে, আপনার যদি লাইন নম্বরটি চালু থাকে ...

Escআপনি কোনও সম্পাদনা মোডে নেই তা নিশ্চিত করতে কী টিপুন । :#,#dযেখানে '#' মুছে ফেলার জন্য শুরু এবং শেষের লাইন নম্বরগুলি দাঁড়িয়ে থাকে সেখানে প্রবেশ করান ।


আমি মনে করি না এটি শুরুতে কোলন দিয়ে কাজ করে।
আউটকাস্ট

@ পোইটমাউডিট এগুলি বৈধ vi কমান্ড। কর্নারটি কার্নারটিকে পর্দার নীচে নিয়ে যায় এবং একটি লাইন সম্পাদক কমান্ড গ্রহণ করে The
ক্যানস্টার

5
  1. Esc সন্নিবেশ মোড থেকে প্রস্থান করতে
  2. :1enter 1 লাইনে যান ('1' প্রতিস্থাপন করুন আপনার আগ্রহী লাইনের সাথে)
  3. 5dd 5 লাইন মুছুন (বর্তমান লাইন থেকে)

টাইপ করুন (সংখ্যাযুক্ত রেখার জন্য)।:set number


3

নির্দিষ্ট লাইন ট্রিগারের পরে আপনি যদি কোনও ব্যাপ্তি মুছতে চান তবে আপনি এই জাতীয় কিছু ব্যবহার করতে পারেন

:g/^TMPDIR/ :.,+11d

এটি প্রতিটি লড়াইয়ের পরে 11 টি লাইন (অন্তর্ভুক্ত) মুছে দেয় ^TMPDIR


0

এটি ডিএক্সডি, ডিডিএক্স নয়

আপনি যদি 5 টি লাইন মুছতে চান তবে মুছে ফেলতে প্রথম লাইনটির শুরুর দিকে কার্সার এবং ডি 5 ডি করুন



-1

এটি নিম্নলিখিত হিসাবে করা যেতে পারে ..

  1. আপনি মুছে ফেলতে চান এমন জায়গায় কার্সারটি অবস্থান করুন।
  2. চাক্ষুষ নির্বাচন শুরু করতে "v" টিপুন।
  3. তীর কী ব্যবহার করে আপনি যে অবস্থানটি মুছতে চান তাতে कर्सरটি নিয়ে যান।
  4. "D" টিপুন যা লাইনগুলি মুছে ফেলবে।
  5. এখন ": x!" ব্যবহার করে সংরক্ষণ করুন এবং প্রস্থান করুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.