80 কলামে পাঠ্যটিকে পুনর্গঠন / জোর করতে vim কমান্ড


240

আমি জানি যে ব্যবহার করে স্বয়ংক্রিয়ভাবে ভিমে টেক্সটের প্রস্থ সেট করার উপায় রয়েছে set textwidth(যেমন উইম ৮০ কলাম লেআউট উদ্বেগ ) আমি যা খুঁজছি তা হ'ল =(ইনডেন্ট লাইন কমান্ড) এর অনুরূপ তবে এটি 80 এ মোড়ানো The

আদর্শভাবে, এই কমান্ডটি আমার নির্বাচিত লাইনগুলি সম্পূর্ণ পুনর্গঠিত করবে এবং সংক্ষিপ্তগুলি যুক্ত করার সময় লম্বা লাইনগুলি কেটে ফেলবে। একটি উদাহরণ:

long line is long!  
short

কমান্ডটি চালানোর পরে (ধরে নেওয়া উচিত যে মোড়কটি 13 টি করল):

long line is  
long! short

সত্যিকারের ভিআইএম কমান্ডের সাহায্যে যদি এটি সম্ভব না হয় তবে সম্ভবত একটি কমান্ড-লাইন প্রোগ্রাম রয়েছে যা এটি করে যা আমি ইনপুটটি পাইপ করতে পারি?

অনুসন্ধানের পরে আমি এই রেফারেন্সটি পেয়েছি যার আরও কয়েকটি বিকল্প রয়েছে: http://www.cs.swarthmore.edu/help/vim/reformatting.html


9
এছাড়াও আপনি শিখতে যে তেজ যেমন একটি বহিস্থিত প্রোগ্রাম বিন্যাস, পাঠ্য প্রতিনিধি পারবেন আগ্রহী হতে পারে সমাবস্থা । আমি একটি স্ক্রিনকাস্ট তৈরি করেছি যা দেখায় যে কীভাবে পাঠ্যকে সমান্তরালে বিন্যাস করতে হয় ।
নেলস্ট্রম

@ নেটারস্টম ধন্যবাদ, প্রায় টিআইএল par। এটি আসাধারন!
স্টিভেন লু

2
আপনি যখন পাঠ্যটি স্লিম এবং ট্রিম দেখতে চান (ভালভাবে কাটা?), সর্বদা ভাবেন gq- ভদ্রলোকের ত্রৈমাসিক । (নৃতাত্ত্বিক পুরুষের জন্য
ক্ষমাপ্রার্থী

উত্তর:


372

textwidth80 ( :set textwidth=80) এ সেট করুন , ফাইলের শুরুতে যান Ctrl- ( Homeবা দিয়ে করা যায় gg), এবং টাইপ করুন gqG

gqGবর্তমান অবস্থান থেকে শুরু করে ফাইলের শেষে পাঠ্যকে ফর্ম্যাট করে। এটি সম্ভব হলে স্বয়ংক্রিয়ভাবে পরপর লাইনে যোগদান করবে। আপনি যদি না চান তবে দুটি লাইনের মধ্যে একটি ফাঁকা রেখা রাখতে পারেন।


14
এবং এটি ভিজ্যুয়াল নির্বাচনের সাথেও কাজ করে। মত অর্থাত কিছু: V}gq। আপনি প্রকৃত বিন্যাস করার আগে আপনি কী ফর্ম্যাট করতে যাচ্ছেন তা দেখুন In
প্লুফ

6
যাইহোক, qনিজে থেকে ঠিক কি করে?
রিচার্ড-দেগেন

1
কোনও ফাঁকা জায়গা ছাড়া লাইনগুলি কেবল একটি দীর্ঘ অক্ষরের অক্ষরগুলি দিয়ে এটি করার কোনও উপায় আছে? সম্পাদনা: আমি "ভাঁজ" ইউটিলিটিটি আবিষ্কার করেছি। Vi তে এটি করার বিষয়ে এখনও ভাবছি।
ডোনাল্ড স্মিথ

7
সময় বাঁচানোর set tw=80পরিবর্তে ব্যবহার করুনset textwidth=80
Yibo Yang

4
@dmranck এর পরে set textwidth=76টাইপ করার সময় আপনার লাইনগুলি অটোরেপ করবে। আমার অভিযোগ হ'ল এটি বিদ্যমান লাইনগুলি সম্পাদনা করার ক্ষেত্রে কিছুই করে না। তবে V}gqএক্ষেত্রে অত্যন্ত কার্যকর। Vভিজ্যুয়াল নির্বাচন মোডে প্রবেশ করে, }পরবর্তী অনুচ্ছেদের বিরতিতে নীচে নির্বাচন করে এবং gqএতে বর্তমান ফর্ম্যাটরটি চালায় (বা gwস্পষ্টভাবে vi ফরম্যাটারটি কল করতে ব্যবহার করুন )। এছাড়াও, {উপরের দিকে নির্বাচন করবে। আপনি পুরো দস্তাবেজটি নির্বাচন করতে পারেন এবং ফর্ম্যাট করতে পারেন ggVGgqযদিও এর থেকে আরও সহজ উপায় রয়েছে। @এটিকে আরও সহজ করার জন্য ম্যাক্রো হিসাবে এটিকে সংরক্ষণ করুন । vipgqবর্তমান অনুচ্ছেদ এফএমটি ব্যবহার করুন ।
কেটিবিজ

94

মাইকেল এর সমাধান মূল, তবে আমি প্রায়শই দেখতে পাই যে আমি বর্তমানের অনুচ্ছেদের বাকী অংশগুলি পুনরায় ফর্ম্যাট করতে চাই; এই আচরণের জন্য, ব্যবহার gq}


17
এর উপর প্রসারণ - আপনি যা চান ফর্ম্যাট করতে আপনি gq <মোশন> ব্যবহার করতে পারেন।
ড্যান শোনাউ

1
এছাড়াও, 'নোজোইনস্পেসস' বিকল্পটি যখন বাক্য সীমানায় লাইনগুলিতে যুক্ত হয় তখন পিরিয়ড পরে দুটি স্পেস উপস্থিত হতে বাধা দেয়। যখন আপনার টাইপোগ্রাফিক শৈলী ইংরেজি বাক্যগুলির মধ্যে একক ফাঁক হয় Good
অ্যালেক্স হিরজেল

36

আপনি যে gqকোনও মুভমেন্ট অপারেটরদের সাথে ব্যবহার করতে পারেন । উদাহরণস্বরূপ, আপনি যদি কেবলমাত্র বর্তমান লাইনের শেষে পুনরায় ফর্ম্যাট করতে চান (যেমন আপনার কর্সারটি যে রেখাটি আবদ্ধ করতে চান) আপনি ব্যবহার করতে পারেনgq$

আপনি ভিজ্যুয়াল মোডে পাঠ্য নির্বাচন করে (using v ব্যবহার করে এবং চলমান) এবং তারপরে জিকিউ টাইপ করে পুনরায় ফর্ম্যাট করতে পারেন।

লাইনগুলিকেও জড়িয়ে রাখতে বাধ্য করার জন্য অন্যান্য বিকল্প রয়েছে।

আপনি যদি পাঠ্যটির পুনর্গঠন করতে শেষ না হওয়া পর্যন্ত অপেক্ষা না করে তার মধ্যে পাঠ্য সন্নিবেশ করানোর সময় যদি আপনার লাইনগুলি মোড়ানো করতে চান তবে আপনি এই বিকল্পগুলি দরকারী পাবেন:

:set textwidth=80
:set wrapmargin=2

(পার্শ্ব-ট্র্যাক দ্বারা পেতে না wrapএবং linebreak, যা শুধুমাত্র পুনরায় ফরম্যাট টেক্সট পর্দায় প্রদর্শিত, এবং বাফারে টেক্সট পরিবর্তন করবেন না)


9
wrapmarginসহায়তা থেকে : যখন 'পাঠ্য প্রস্থ' শূন্য হয় তখন এই বিকল্পটি ব্যবহার করা হয় না।
mmoya

21

ডোনাল্ডস্মিথের একটি মন্তব্যে ধন্যবাদ আমি এটি পেয়েছি, textwidthবিকল্পটি আমার দীর্ঘ লাইনের পাঠ্যটির পুনরায় ফর্ম্যাট না করায় (আমি হেক্স-টু- বাই বাইভার্সের সাথে খেলতে রূপান্তর করছি):

:%!fold -w 60

এটি পুরো ফাইলটিকে (যা আমার জন্য এক লাইন ছিল) দৈর্ঘ্যের 60 লাইনে পুনরায় রূপান্তর করেছিল।


1
এই খুব সুন্দর. সমস্ত উত্তর যখন একটি রেখাকে ফাঁকে ফাঁকে ফাঁকে ফাঁকে ফাঁকে ফাঁকে শব্দের মধ্যে বিভক্ত হয় তখন সমস্ত উত্তর উত্তররেখার প্রস্থকে সীমাবদ্ধ করার দিকে মনোনিবেশ করে। এই সমাধানটি খুব দীর্ঘ শব্দ (ডিএনএ সিকোয়েন্স) এর জন্য কাজ করে works
পেড্রোসৌরিও

1
দীর্ঘ ইউআরএলের জন্য এটি কেবলমাত্র আমি খুঁজে পেয়েছি যা কাজ করে। আমি ইতিমধ্যে পাঠ্য প্রস্থ সম্পর্কে নতুন তবে এটি অখণ্ড স্ট্রিংগুলি ভাঙ্গবে না (যা সাধারণত ভাল জিনিস)
স্কাইল্যাচ

13

আপনি যদি কোনও ভিম- অন ​​উপায়ের সন্ধান করেন তবে সর্বদা UNIX কমান্ড fmt এবং সমান থাকে

মন্তব্য:

  • আমি ইউনিকোডে মন্তব্য করতে পারি না, এটি অন্যরকম আচরণ করতে পারে বা নাও পারে।
  • @ নেটস্ট্রোম ইতিমধ্যে parতার ওয়েবকাস্ট ব্যবহার করে উল্লেখ করেছে ।

আপনার উদাহরণের জন্য আমরা উভয়কে কীভাবে ব্যবহার করব তা এখানে।

$ echo -e 'long line is long!\nshort' > 3033423.txt
$ cat 3033423.txt
long line is long!
short
$ fmt -w 13 3033423.txt
long line is
long!  short
$ par 13gr 3033423.txt
long line is
long! short

ভিমের ভিতরে থেকে ব্যবহার করতে:

:%! fmt -w 13
:%! par 13gr

আপনি :formatprgসমান বা এফএমটি সেট করে ওভাররাইড করতে পারেন gq। আরও তথ্যের জন্য, :help formatprgভিমের ভিতরে কল করুন ।


9

প্রায় সবসময় আমি gqভিজ্যুয়াল মোডে ব্যবহার করি । আমি আমার ছাত্রদের বলি যে এটি "ভদ্রলোকদের ত্রৈমাসিক" অর্থহীন লোকদের জন্য একটি ম্যাগাজিন।

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