ভিআইএম-এ, আমি কীভাবে একটি দীর্ঘ লাইন একাধিক লাইনে বিভক্ত করব?


169

বলুন আমার ভিআইএম সম্পাদকটিতে একটি দীর্ঘ দীর্ঘ লাইন আছে (প্রায় 300+ অক্ষর বলুন)। আমি কীভাবে এটিকে একাধিক লাইনে বিভক্ত করব যাতে শব্দটির সীমাটি প্রায় 80 টি অক্ষরে ভেঙে যায়?

উদাহরণ:

This is a really long line This is a really long line This is a really long line This is a really long line This is a really long line This is a really long line This is a really long line This is a really long line This is a really long line This is a really long line This is a really long line

প্রতি

This is a really long line 
This is a really long line
This is a really long line
This is a really long line
This is a really long line
This is a ...

উত্তর:


254

ভিম এটি খুব সহজ করে (শব্দের সীমানায় লাইন ভাঙ্গা)।

gq{motion} % format the line that {motion} moves over
{Visual}gq % format the visually selected area
gqq        % format the current line
...

আমি আপনাকে চেক আউট করার পরামর্শ দিই :help gqএবং :help gw

এছাড়াও পাঠ্য প্রস্থকে সেট করা ( tw) টাইপ করার সময় অতিক্রম করলে অটো লাইন ব্রেক দেয়। এটি উইন্ডো আকারে gqঅক্ষম হয়ে থাকলে gqবা comes৯ যা প্রথমে আসে তার উপর নির্ভর করেও এটি ব্যবহার করা হয় ।

:set tw=80

পাঠ্য প্রস্থের ভিএম অন্তর্ভুক্ত করার জন্য বিন্যাস বিকল্পগুলি সেট করে দ্বিগুণ সেটিং এ স্বয়ংক্রিয়ভাবে বিরতি ঘটবে।

:set fo+=t

5
সুতরাং আপনার ক্ষেত্রে, gqকমান্ডটি হবে <ESC>(সন্নিবেশ / প্রতিস্থাপন / ইত্যাদি মোড থেকে বেরিয়ে আসা), তারপরেgq80l
মিডনাইটলাইটিং

6
এটি Ctrl + j এর বিপরীত (একাধিক লাইন একত্রিত করে)।
ইজমির রামিরেজ

9
ভিম কখনও আমাকে অবাক করে দেয় না। এটি খাঁটি সোনার।
Jondlm

10
কেবল পরবর্তী ব্যক্তি যিনি এটি খুঁজে পান তার জন্য, gq কেবল শক্ত পাঠ্যের একটি লাইন বিভক্ত করবে না, এটির কাজটি করার জন্য এটি সাদা স্থান প্রয়োজন
স্ট্রিং05

2
[রান gqq] aaaahhh, এটা সুন্দর
underscore_d

85

প্রথমে আপনার ভিম সেট করুন যাতে এটি বুঝতে পারে যে আপনি 80 টি অক্ষর চান:

:set tw=80

তারপরে, লাইনটি হাইলাইট করুন:

V

এবং এটি ভিএম পুনরায় ফর্ম্যাট করুন:

gq

17

এটি সত্যই ভিআইমের সাথে সম্পর্কিত নয় তবে আপনি এফএমটি প্রোগ্রামটি হিসাবে ব্যবহার করতে পারেন

$ fmt myfile

38
:%! fmt% "এটিকে vim সম্পর্কিত করে তুলতে পারেন :)
ম্যাক্সিম স্লোইয়ক

2
Vi এর জন্য দরকারী, যদিও আমি ভিএম-তে gqq পছন্দ করি।
নটহাগো 20:54

13

পাঠ্যের শক্ত রেখাগুলির জন্য সাধারণ মোডে v ব্যবহার করে অঞ্চলটি হাইলাইট করুন, তারপরে টিপুন

:s/\v(.{80})/\1\r/g

এটি প্রতি 80 তম অক্ষরের শেষে একটি নতুন লাইন যুক্ত করবে।

:s/       replaces within the current select
\v        uses regular expressions
(.{80})   selects 80 characters & placed them into group one
\1\r      replaces group one with group one and a newline

এটিই একমাত্র সমাধান যা দীর্ঘ বেস 64 স্ট্রিংয়ের জন্য কাজ করেছিল।
jviotti

6

আপনি যদি * নিক্সে থাকেন তবে আপনার সম্ভবত এটি foldউপলব্ধ রয়েছে।

আপনি যে অঞ্চলটি ব্যবহার করতে চান তা নির্বাচন করুন v, তারপরে আপনি 80 প্রস্থে ফাঁকা জায়গাটি ব্যবহার করে তা ব্যবহার করতে পারেন:

!fold --spaces --width=80

এটি প্রয়োজনীয়ভাবে ব্যবহারের মতোই gq

তবে, আপনি যদি কেবল ৮০ অক্ষরটি ভাঙতে চান এবং হোয়াইট স্পেসে সীমাবদ্ধ না রেখে আপনি ব্যবহার করতে পারেন:

!fold --width=80

যদি আপনি এটি একটি কীস্ট্রোক দিয়ে চান তবে কেবল একটি ম্যাপিং সেট করুন - আমি ব্যবহার করেছি

vmap <f1> !fold --width=80<CR>


এটি উত্তর যা দীর্ঘ স্ট্রিংয়ের জন্য কাজ করে যা হোয়াইটস্পেস দ্বারা পৃথক নয়। ম্যাকোস এ আপনার ভাঁজের পরিবর্তে জিফোল্ড ব্যবহার করতে হবে।
হারুন ডি

ম্যাক
ওএসে

5

ইতিমধ্যে উপস্থিত লাইন ব্রেকগুলি না সরিয়ে সম্পূর্ণ নথিতে দীর্ঘ লাইনগুলি বিভক্ত করতে, ব্যবহার করুন:

:set formatoptions+=w
:set tw=80
gggqG

4

আমার এক লাইনের পরিবর্তে একটি সম্পূর্ণ ফাইল পুনরায় ফর্ম্যাট করা দরকার। ওয়ার্ন্সি যেমন উল্লেখ করেছেন, আমি 'এফএমটি' ব্যবহার করতে পারতাম, তবে ভিমে নিম্নলিখিত ক্রমটি কৌশলটিও করেছিল (এখানে বিভিন্ন উত্তর থেকে ধার নেওয়া):

<ESC>
:setl tw=80 fo=t
1GVGgq

3

দ্রুত এবং বাজে হিসাবে, সম্ভবত নিম্নলিখিত মানচিত্র চেষ্টা করুন:

map q 080lwbels<CR><ESC>

যা বলে:

  • লাইনের 0 তম অবস্থান শুরু করুন,
  • ডানদিকে 80 ম চরে সরান,
  • পরবর্তী শব্দটির শুরুতে যান,
  • আগের কথায় ফিরে যান,
  • বর্তমান শব্দের শেষে যান,
  • একটি চর যেতে হবে, এবং
  • সেই চরের জন্য একটি সিআর প্রতিস্থাপন করুন।

তারপরে কিউ এবং সিআর হিট করার ফলে শব্দটির সীমানায় লাইনটি খণ্ড খণ্ড হয়ে যাবে।


0

আমি সর্বশেষ হোয়াইটস্পেসের পরে কিন্তু 80 টি কলামের আগে প্রতিটি লংলাইনে ম্যানুয়ালি '\' (এবং তারপরে সিআর / ট্যাব ফর্ম্যাট করতে) .োকালাম। ঐটাই বলতে হবে:

1 this is a long, long, line

এখন মত দেখাচ্ছে

1 this is a long, \
        long line

এবং সাধারণত সংকলন করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.