ভিমে শব্দ মোড়ানো (অন্তর্ভুক্তি সংরক্ষণ করা)


92

আমি কেবল এই পোস্টে দেখছিলাম যা পুরো শব্দগুলি ভিমে কীভাবে মোড়ানো যায় তা বর্ণনা করে। গৃহীত সমাধানটি হ'ল:

:set formatoptions=l
:set lbr

যা এই পাঠ্যটি নেয় (ট্যাবগুলি \ t হিসাবে দেখানো হয়):

 *Inside of window                        *Outside of window
|---------------------------------------|    
|\t\tthis is a like of text that will wr|ap here                            
|\t\tcan you see the wrap               |
|                                       |
|---------------------------------------|

এটি এর মতো আচরণ সম্পাদন করে (ট্যাবগুলি \ t হিসাবে দেখানো হয়):

 *Inside of window                        *Outside of window
|---------------------------------------|    
|\t\tthis is a like of text that will   |
|wrap here                              |
|\t\tcan you see the wrap               |
|                                       |
|---------------------------------------|

আমি তবে এই ফাংশনটির নতুন সংজ্ঞা দিতে চাই। আমি মোড়ানো লাইনটি দেখতে চাই যে তার সামনে একই সংখ্যার ট্যাব রয়েছে যা উপরের রেখায় প্লাস এক রয়েছে। অর্থাৎ:

 *Inside of window                        *Outside of window
|---------------------------------------|    
|\t\tthis is a like of text that will   |
|\t\t\twrap here                        |
|\t\tcan you see the wrap               |
|                                       |
|---------------------------------------|

কোন ধারনা?


34
প্রশ্নটি যতটা সম্ভব স্পষ্ট করার জন্য গৃহীত প্রচেষ্টার জন্য +1।
জেফরি জোস

আপনি কি উইন্ডোটির প্রান্তে পাঠ্যটি নরম-মোড়ানো করতে চান, বা লাইনটি নির্দিষ্ট দৈর্ঘ্যে পৌঁছালে হার্ড-মোড়কে চান? আমি মনে করি আপনি হার্ড-মোড়ক চান (যেখানে "উইল" শব্দের পরে আপনার পাঠ্যে একটি নতুন লাইন isোকানো হবে) তবে আপনার উদাহরণ থেকে বলা মুশকিল।
বিল ওড

@ বিল, আমি বেশিরভাগ সফটওয়্যার্পিংয়ে আগ্রহী তবে একটি হার্ড-র্যাপিং সমাধানও গ্রহণযোগ্য হবে।
ষাট ফুটারসুডে

4
আপনি যে কার্যকারিতাটি চান তা বর্তমানে ভিমে অন্তর্নির্মিত নয়। তবে এখানে একটি প্যাচ রয়েছে যা আসে: গ্রুপ. google.com/group/vim_dev/web/vim-patches (এটি # 15, "সঠিকভাবে মোড়ক রেখাগুলি")।
বিল ওড

সম্পর্কিত: এই সমস্যাটি হ্যান্ডেল করতে ভিমকাস্টসের
ড্যামিয়েন উইলসন

উত্তর:


18

Breakindent প্যাচ আপনি যা খুঁজছেন তা হয়েছে। আমি এই থ্রেডে পাওয়া নির্দেশাবলী ব্যবহার করে এটি সফলভাবে প্রয়োগ করেছি:

ওএস এক্স-এ হোমব্রিউয়ের সাথে ব্রেকেন্ডেন্ট প্যাচ সহ ভিচটি প্যাচ করুন

বিশেষত, ইক্রিস্টোফারসনের হোমব্রিউ সূত্র।

আমি জানি যে এই থ্রেডটি পুরানো তবে এটি গুগলে জনপ্রিয় এবং সমাধান সন্ধানের চেষ্টা করার সময় আমি এটি একাধিকবার এসেছি।

সম্পাদনা: এই প্যাচটি এখন 7.4.338 প্যাচ হিসাবে ভিমের সাথে অন্তর্ভুক্ত করা হয়েছে। দেখুন: https://retracile.net/blog/2014/07/18/18.00

ইয়োসেমাইটে (ম্যাক ওএস এক্স), আমি হম্ব্রুয়ের সাহায্যে স্নোবাউন্ডের কমান্ডটি ব্যবহার করেছি:

brew install macvim --with-features=huge --override-system-vim --HEAD 

প্যাচটি হোমব্রুয়ের সর্বশেষতম ম্যাকভিমের সাথে কাজ করছে বলে মনে হচ্ছে না? @ Exit42 আপনি এটি কীভাবে কাজ করতে পেলেন?
তুষারপাত

এনভিএম আমি হোমব্রু রক্তপাতের প্রান্তের সাথে ম্যাকভিম সংকলন করেছিbrew install macvim --with-features=huge --override-system-vim --HEAD
স্নোবাইন্ড

4
নীচে আমার উত্তর দেখুন: stackoverflow.com/questions/2828174/… ভিএম এর নতুন সংস্করণে প্যাচের প্রয়োজন নেই।
জোশুয়াডি

26

প্রশ্নটি মূলত যখন জিজ্ঞাসা করা হয়েছিল তখন এটি কাজ করে না, তবে 25 জুন, 2014 পর্যন্ত এটি কাজ করবে। (ধরে নিচ্ছি যে আপনি আপনার ভিএমকে সেই তারিখের চেয়ে নতুন সংস্করণে আপডেট করেছেন)

আপনার .vimrc এ যুক্ত করুন:

" Indents word-wrapped lines as much as the 'parent' line
set breakindent
" Ensures word-wrap does not split words
set formatoptions=l
set lbr

এবং এটাই!

-

কিছু লোক (আমার অন্তর্ভুক্ত) একাধিক কম্পিউটারে একক .vimrc ভাগ করে। সেক্ষেত্রে, এই লাইনটি শক্তিশালী হওয়া (বিরক্তিকর ত্রুটি বার্তাগুলি এড়ানোর জন্য) হওয়া জরুরী। এটি একটু ভাল:

if has("patch-7.4.354")
    " Indents word-wrapped lines as much as the 'parent' line
    set breakindent
    " Ensures word-wrap does not split words
    set formatoptions=l
    set lbr
endif

এইভাবে, আপনি যদি ভিএম এর পূর্ববর্তী সংস্করণে থাকেন তবে আপনি একটি ত্রুটি বার্তা পাবেন না।


মজার বিষয় হচ্ছে এটি আমার সাইগউইনের .4.৪ ভিমে কাজ করে তবে আমার আনবুন্টুর .4.৪ ভিমে নয়। আমি অনুমান করছি এটি আরও কিছুটা বিস্তৃত হওয়া দরকার, তবে শীঘ্রই সর্বজনীন গ্রহণযোগ্যতা দেখতে পাবেন।
জোশুয়াডি

4
ভিম 7.4 @ আর্কলিনাক্সে কাজ করে।
অ্যান্ডি মিখায়লেনকো

4
পরিবর্তে আপনি এই পরীক্ষাটি ব্যবহার করতে পারেন:if has("patch-7.4.354")
লরেন্স কস্টলুট

এটি ওপির মন্তব্য সম্পর্কিত প্রশ্নের উত্তর দেয় না: একই সংখ্যক ট্যাব (...) প্লাস ওয়ান । এটি আমার মতেও খুব গুরুত্বপূর্ণ, আপনি প্রায়শই অতিরিক্ত ইনডেন্টেশন রাখতে এবং অপটিকভাবে মোড়ানো অংশগুলি ডানদিকে স্থানান্তর করতে চাইতে পারেন (শক্তভাবে সাজানো তালিকা, নোট, ইত্যাদি);
রক্তাক্ত

8

আপনি যে সেরাটি পেতে যাচ্ছেন তা হ'ল showbreakবিকল্পটি যা প্রতিটি মোড়ানো লাইনের সামনে একটি নির্দিষ্ট স্ট্রিং রাখবে (আমি ব্যবহার করি set showbreak=...)।


@ অ্যালেক্সান্ডারবার্ড অনুসারে :help 'showbreak', না, আপনি পারবেন না - showbreakএটি কেবল একটি স্ট্রিং।
ররি ও'কেনে

4

আমি সেই উত্তরের সাথে একমত হই যা বলে যে 'শোব্রেক' সেরা বিকল্প। শোব্রেকটি আপনাকে সাধারণত শোব্রেক স্ট্রিং-এ অ-প্রিন্টিং অক্ষর (উদাহরণস্বরূপ, স্পেসস বা ট্যাবগুলি) রাখার অনুমতি দেয় না, সুতরাং সাধারণত ব্যবহৃত হিসাবে এটি আপনাকে কেবল বাম মার্জিনের সাথে একটি সূচক দেবে, কোনও সত্যিকারের ইনডেন্ট নয়। এটি দুর্দান্ত নয়, যেহেতু ওপির মূল লক্ষ্য, আমার মনে হয়, মোড়ানো রেখাগুলি একটি ইনডেন্ট দেওয়া তাদের বাম মার্জিন অঞ্চলকে গোলমাল করা থেকে বিরত রাখতে এবং তাদের নিজস্ব লাইনের মতো দেখতে দেওয়া।

সুতরাং শোব্রেক ব্যবহার করে একটি (কুরুচিপূর্ণ) ইন্ডেন্ট যুক্ত করার একটি উপায় হ'ল প্রচুর অক্ষর, .eg, ": সেট শোব্রেক => --------------->" ব্যবহার করা। এর মতো দেখতে এমন কিছুতে এর ফলস্বরূপ:

 *Inside of window                        *Outside of window
|---------------------------------------|    
|\t\tthis is a like of text that will   |
|>--------------->wrap here             |
|\t\tcan you see the wrap               |
|                                       |
|---------------------------------------|

এর চেয়ে ভাল বিকল্প হ'ল ননব্রেকিং স্পেস ক্যারেক্টার ব্যবহার করা (ধরে নেওয়া আপনার ভিমের উদাহরণটি ইউনিকোড সক্ষম করেছে), যার প্রত্যেকটি সিটিআরএল-ভি, 160 এর মূল সিকোয়েন্সটি ব্যবহার করে শোব্রেক স্ট্রিংয়ে প্রবেশ করতে পারে। এইভাবে আপনি একটি শোব্রেক স্ট্রিং প্রবেশ করতে পারেন যা বাম পাশে ফাঁকা এবং সত্যিকারের ইনডেন্ট হিসাবে উপস্থিত হতে পারে। উদাহরণস্বরূপ, ": সেট শোব্রেক =।…।…।…। >> >>" যেখানে প্রতিটি '।' কমান্ডটি আসলে একটি অবিচ্ছেদ্য স্থান অক্ষর যা ctrl-V, 160 টিপে সন্নিবেশ করানো হয়। এইভাবে আপনি একটি মোড়কের সাথে শেষ করেন যা সুন্দরভাবে ইন্টেন্টেড থাকে:

 *Inside of window                        *Outside of window
|---------------------------------------|    
|\t\tthis is a like of text that will   |
|            >>wrap here                |
|\t\tcan you see the wrap               |
|                                       |
|---------------------------------------|

পূর্ববর্তী লাইনের ইনডেন্ট অনুসারে আপনার ইন্ডেন্টের মাত্রা পরিবর্তনের কোনও ক্ষমতা নেই তবে কমপক্ষে উইন্ডোর বাম প্রান্তে প্রচুর ভিজ্যুয়াল ক্লাটার ছাড়াই মোড়ানো রেখাগুলির পরিষ্কার ইন্ডেন্ট পাবেন। একটি আবৃত লাইনের ইন্ডেন্টটি যদি কোনও প্রকৃত লাইনের শুরুর চেয়ে কম হয় তবে এখনও বিভ্রান্তি দেখা দিতে পারে তবে শোব্রেকটি "ইনডেন্ট" বেশ বড় করে (যেমন, আপনার কোডে সাধারণত পাওয়া যায় এমন কোনও ইনডেন্টের চেয়ে বেশি) তৈরি করে এড়ানো যেতে পারে ) তবে এখনও এটি যথেষ্ট ছোট যা এটি পাঠ্যের সুস্পষ্ট মোড়কের জন্য পর্যাপ্ত জায়গা সরবরাহ করে। অনেক ব্যবহারের জন্য আমি মনে করি 40 বা 50 স্পেসের একটি শোব্রেক ইনডেন্ট এটি বেশ ভালভাবে করবে।


7
আপনি তাদেরকে পলায়নের দ্বারা showbreak মধ্যে শূণ্যস্থান লাগাতে পারেন: :set showbreak=\ \ \ \ । এখনও ট্যাবগুলির জন্য কাজ করে না।
বিল ওড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.