80 কলাম লেআউট উদ্বেগ


417

আমি তেজ 80-কলাম ইঙ্গিত না ভুল বলে মনে হয়: set columns=80। অনেক সময় আমিও set textwidth, তবে আমি set columnsবিকল্পের সাথে লাইন ওভারফ্লো দেখতে এবং প্রত্যাশা করতে সক্ষম হতে চাই ।

এর কিছু দুর্ভাগ্যজনক পার্শ্ব প্রতিক্রিয়া রয়েছে:

  1. set numberলাইন সংখ্যার বিভিন্ন অর্ডার থাকা ফাইলগুলির মধ্যে বিভক্ত হওয়ার ভয়ে আমি পারি না ; যেমন <100 লাইন ফাইল এবং> = 100 লাইন ফাইলের set columnsঅতিরিক্ত ডিজিটাল প্রদর্শনের জন্য অতিরিক্ত কলাম ব্যবহৃত হওয়ার কারণে দুটি পৃথক মানের প্রয়োজন হবে ।
  2. আমি উইন্ডোকে উল্লম্বভাবে বিভাজনের পরিবর্তে নতুন (ছ) ভিম সেশনগুলিও শুরু করি। এর কারণ এটি প্রতিবারই আমি একটি ফলক খোলার বা বন্ধ vsplitকরতে বাধ্য set columnsকরি, সুতরাং নতুন অধিবেশন শুরু করা কম ঝামেলা is

আপনি যখন 80 টি অক্ষরের ইঙ্গিতটি পরিচালনা করতে চান set numbers, উল্লম্বভাবে বিভক্ত করা ইত্যাদি?


60
এটি অনেক চেনাশোনাতে ভাল কোড শৈলী হিসাবে বিবেচিত হয়; উদাহরণস্বরূপ, পাইথনের স্টাইল গাইড (পিইপি 8) character৯ টি চরিত্রের লাইনের প্রস্তাব দেয়: পাইথন.আর
দেব

4
এটি একটি নিখুঁত "আপনার অবশ্যই ৮০ টি চরিত্রের লাইন থাকা উচিত" নয়, তবে এটি কিছু সিস্টেমে পড়া ভাল করে তোলে যেমন উদাহরণস্বরূপ এমন কোনও কনসোল ভিত্তিক অ্যাপ্লিকেশন যা কোনও জিইউআই কনসোল উইন্ডোর ভিতরে চলছে না যা পুনরায় আকার দেওয়া যেতে পারে।
ম্যাথু শার্লে

47
@ ডেভর: প্রথমে এটি পড়া সহজ। কিছু গবেষণায় বোঝা যায় যে একটি স্বল্প লাইনের দৈর্ঘ্য (line 76 টি অক্ষরের একটি লাইন) অনলাইনে পড়া সবচেয়ে সম্মত এবং দ্রুততম। আপনি কি এটি জানেন: হঠাৎ আপনার চোখ পড়ার সময় ভুল লাইনে থাকে? এটি 80 অক্ষরের সাথে খুব কমই ঘটে। দ্বিতীয়ত আমি প্রায়শই আমার 1600 পিক্সেল প্রশস্ত মনিটরে দুটি ফাইল পাশাপাশি দর্শনীয়ভাবে সম্পাদনা বা পৃথক করে থাকি। এটি কেবল তখনই ভাল কাজ করে যদি ফাইলে 80 টির বেশি অক্ষরের লাইন না থাকে। কাজেই দক্ষতার সাথে কাজ করার আগে আমি প্রায়শই দীর্ঘ লাইনের পুনরায় ফর্ম্যাট করি।
এলোমেলোভাবে

25
@ ডেভর এটি পাশাপাশি বেশ কয়েকটি ফাইল সম্পাদনা করার জন্য অবিশ্বাস্যভাবে কার্যকর।
aehlke

2
আমি সি / সি ++ এবং জেএস কোড উভয় ক্ষেত্রেই কম কম বাগ তৈরি করি যেহেতু আমি একটি 80 চর লাইন প্রস্থ (কর্নেল কোডিং স্টাইল থেকে) গ্রহণ করেছি। আমি মাঝে মধ্যে এটি একটি দম্পতি দ্বারা উপচে পড়েছি, তবে খুব কমই ...
মার্ক কে কোয়ান

উত্তর:


586

আমার .vimrc এ এটি স্থাপন করেছি:

highlight OverLength ctermbg=red ctermfg=white guibg=#592929
match OverLength /\%81v.\+/

এটি পাঠ্যের জন্য সূক্ষ্ম লাল রঙের পটভূমিকে হাইলাইট করে যা column০ কলামের সীমা ছাড়িয়ে যায় (GUI মোডে সূক্ষ্ম, যাইহোক - টার্মিনাল মোডে এটি কম)।


3
ভালো বুদ্ধি! আমার চাহিদা আরও ভালভাবে ফিট করার জন্য আমি এটিকে "ctermbg = অন্ধকার" এবং "guibg = # FFD9D9" এ পরিবর্তন করেছি (জিভিএমের হালকা ব্যাকগ্রাউন্ড এবং সিটিআরএম মোডে অন্ধকার)।
এইচএস

10
আমি মনে করি একটি সূক্ষ্ম সংশোধন হ'ল /\০81v.\+/ - কোনও কারণে। * এমন জায়গাগুলি হাইলাইট করে যেখানে অক্ষর নেই।
সিডলারি

14
আমি মনে করি ম্যাচ রেজেক্সের জন্য এই লাইনটি কিছুটা ভাল: ওভারলেন্ট / ম্যাচ ওভারলেন্থ /\০> ৮০ ভি। লাইনের দৈর্ঘ্য +1 নয়।
ডেভিড তেরেই

8
কোনও কারণে এটি আমার
ভিমে

3
যদি এই সমাধানটি কেবল আপনার প্রথম বাফারে কাজ করে তবে স্ট্যাকওভারফ্লো.com/a/10993757/9822 দেখুন ।
জেসি ভোগ

769

ভিএম 7.3 হিসাবে, আপনি set colorcolumn=80( set cc=80সংক্ষিপ্ত জন্য) ব্যবহার করতে পারেন ।

যেহেতু পূর্ববর্তী সংস্করণগুলি এটি সমর্থন করে না, .vimrcপরিবর্তে আমার ব্যবহারগুলি:

if exists('+colorcolumn')
  set colorcolumn=80
else
  au BufWinEnter * let w:m2=matchadd('ErrorMsg', '\%>80v.\+', -1)
endif

অপশনে অনলাইন ডকুমেন্টেশনওcolorcolumn দেখুন ।


26
আপনি এমনকি 'টেক্সট উইথথ'-এর মতো রঙিন কলামের মানকে স্বয়ংক্রিয়ভাবে এমন কিছু দিয়ে বেস করতে পারেন: সেট সিসি = + 1
ধুসর

1
("রঙিন কলাম") আমার পক্ষে কাজ করে না। পরিবর্তে আমাকে বিদ্যমান ("& রঙিন কলাম") ব্যবহার করতে হয়েছিল।
চাঁদমাইজার

5
খুব সুন্দর, এই ভিএম বাদে <7.1.40 ম্যাচডড সমর্থন করে না।
গ্রেগ জ্যান্ডল

19
আপনি কলামটির highlight ColorColumn ctermbg=7
রঙও

2
এই বিকল্পটির জন্য ডকুমেন্টেশন vimdoc.sourceforge.net/htmldoc/options.html#%27cororcolumn%27
জনটেসলেড

54

খাটো উপায়:

match ErrorMsg '\%>80v.\+'

8
আমি সত্যিই এটি পছন্দ করি কারণ এটি দীর্ঘ উল্লম্ব লাইনের সাথে আমার বাফারকে কলুষিত করে না! (Y)
আয়নিক বিজাউ

ErrorMsgএকটি highlight-group। ভিমে প্রচুর ডিফল্ট হাইলাইট গোষ্ঠী রয়েছে যা আপনি এই ক্ষেত্রে রঙের এনকোডিংয়ের উপর ভিত্তি করে ব্যবহার করতে পারেন।
ক্রিস্রন

49

আমি পছন্দ করি:

highlight ColorColumn ctermbg=gray
set colorcolumn=80

আমার এটা ভাল লেগেছে. আমি ধূসর পরিবর্তে কালো ব্যবহার করেছি এবং এটি আমার পটভূমি প্রায় কালো তবে এটি আরও সূক্ষ্ম ছিল।
ইসোপাইকনাল অসিলেশন

30

সাইমন হাওয়ার্ডের উত্তর দুর্দান্ত। তবে /\%81v.\+/81 টি কলাম অতিক্রম করে এমন ট্যাবগুলি হাইলাইট করতে ব্যর্থ। সুতরাং আমি ভিআইএম উইকি এবং এইচএস এর পছন্দসই রঙগুলির পছন্দের উপর থাকা স্টাফের উপর ভিত্তি করে আমি কিছুটা টুইট করলাম :

highlight OverLength ctermbg=darkred ctermfg=white guibg=#FFD9D9
match OverLength /\%>80v.\+/

এবং এখন ভিআইএম 80 কলামের বেশি যে কোনও কিছু হাইলাইট করবে।


2
guifg=whiteসেখানে শেষ হতে পারে ।
ড্যান বেচার্ড

17

এখানে চিত্র বর্ণনা লিখুন

সর্বনিম্ন, সর্বোপরি শীর্ষস্থানীয় নয়। কেবল দীর্ঘ লাইনের th৯ তম চরিত্রটি হাইলাইট হয়ে যায়। এটি কয়েকটি সাধারণ সমস্যা কাটিয়ে উঠেছে: নতুন উইন্ডোতে কাজ করে, উপচে পড়া শব্দগুলি সঠিকভাবে হাইলাইট হয়।

augroup collumnLimit
  autocmd!
  autocmd BufEnter,WinEnter,FileType scala,java
        \ highlight CollumnLimit ctermbg=DarkGrey guibg=DarkGrey
  let collumnLimit = 79 " feel free to customize
  let pattern =
        \ '\%<' . (collumnLimit+1) . 'v.\%>' . collumnLimit . 'v'
  autocmd BufEnter,WinEnter,FileType scala,java
        \ let w:m1=matchadd('CollumnLimit', pattern, -1)
augroup END

দ্রষ্টব্য: লক্ষ্য করুন এটি FileType scala,javaএটিকে স্কালা এবং জাভা উত্স ফাইলগুলির মধ্যে সীমাবদ্ধ করে। আপনি সম্ভবত এটি কাস্টমাইজ করতে চাইবেন। আপনি যদি এটি বাদ দেন তবে এটি সমস্ত ফাইলের ধরণের কাজ করবে।


আপনি কেন যুক্ত করলেন FileType scala,java? (আমার পক্ষে কাজ করছে না)
ডোরিয়ান

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

আপনি স্ক্রিনশটটিতে কোন ফন্ট ব্যবহার করছেন? আমি এটি চোখে খুব খুশি মনে।
রুক

@ ইডিগাস: আমি সম্মত হয়েছি এবং আমার মনে হচ্ছে কমিক সানগুলি খারাপ পছন্দ হয়ে থাকতে পারে যখন আমি মূলত পুটিটি স্থাপন করি :)
মার্ক কে কোয়ান

ভিম answer.৪ এ কাজ করার জন্য এই উত্তরে আমি স্নিপেট পেতে সক্ষম হইনি। (আমি ফাইল টাইপ ফিল্টারটিও সরিয়ে দিয়েছি))
মেনবুয়েরকু

13

আপনি 80 সীমাটি দেখতে লাইনও আঁকতে পারেন:

let &colorcolumn=join(range(81,999),",")
let &colorcolumn="80,".join(range(400,999),",")

ফলাফল:

এখানে চিত্র বর্ণনা লিখুন


13

নির্দিষ্ট করা সীমা ছাড়িয়ে মাত্র প্রথম চরিত্রটি চিহ্নিত করার একটি দুর্দান্ত উপায়:

highlight ColorColumn ctermbg=magenta "set to whatever you like
call matchadd('ColorColumn', '\%81v', 100) "set column nr

দামিয়ান কনওয়ের আলোচনা থেকে


7

ভিএম এর নতুন সংস্করণগুলি একটি :set numberwidth=xমান দেয় , যা লাইন নম্বর প্রদর্শনের প্রস্থ নির্ধারণ করে। আমি ভাঁজ ইত্যাদি সত্যিই ব্যবহার করি না, সুতরাং যদিও আমি সে সম্পর্কে জানতাম না। পাতলা উল্লম্ব লাইন আঁকুন যদিও কনসোল অ্যাপ্লিকেশনটির দক্ষতার বাইরে। জিভিম এটির অনুমতি দিতে পারে (আমি এটি ব্যবহার করি না, সুতরাং সেখানে মন্তব্য করতে পারি না)।


5

আমি আশঙ্কা করছি যে আপনি সমাধানের সেটগুলিতে বাধা তৈরি করেছেন যা ভাল, আপনাকে নাল সেটটি রেখে দেয়।

ব্যবহার :set textwidth=80সমস্যার উল্লেখ করেছে সব ঠিক করবে ব্যতীত আপনি সহজেই লাইন সীমা উত্ক্রান্ত দেখতে পাবে না। যদি আপনি :set ruler, আপনি স্থিতি বারে x, y অবস্থান প্রদর্শন সক্ষম করবেন যা আপনি কোন কলামে রয়েছেন তা দেখতে আপনি ব্যবহার করতে পারেন।

এটি বাদ দিয়ে আমি আপনাকে কী বলব তা নিশ্চিত নই। সংখ্যা কলাম, ফোল্ড কলাম এবং বিভক্ত কারণগুলি হ'ল এটি আপনার জন্য লজ্জাজনক :set columns=80


হ্যাঁ, আমি এটির ভয়ে ভীত ছিলাম ... আমি আশা করছিলাম যে আরও গ্রাফিক্যমুখী সম্পাদকদের মতো পাতলা উল্লম্ব রেখা আঁকার কোনও গোপন উপায় থাকবে।
cdleary

5

আপনি এটি চেষ্টা করতে পারেন:

au BufWinEnter * if &textwidth > 8
\ | let w:m1=matchadd('MatchParen', printf('\%%<%dv.\%%>%dv', &textwidth+1, &textwidth-8), -1)
\ | let w:m2=matchadd('ErrorMsg', printf('\%%>%dv.\+', &textwidth), -1)
\ | endif

এটি প্রতিটি বাফারে দুটি হাইলাইট সেট আপ করবে, আপনার সেট করা যা কিছু আগে 8 টি কলামের &textwidthঅক্ষরের জন্য এবং একটি কলামের বাইরে অক্ষরের জন্য একটি। এইভাবে আপনার কিছুটা প্রত্যাশা রয়েছে। আপনি আরও বা কম প্রত্যাশা (যদি আপনি সেই কলামগুলিতে সিনট্যাক্স হাইলাইটের ক্ষতির আকারে প্রদান করেন) চান তবে অবশ্যই আপনি আলাদা প্রস্থটি ব্যবহার করতে এটি করতে পারেন।


3

হ্যাঁ, সহায়তা কলামগুলি দেখুন, এটি আসলে জগাখিচুড়ি করে তৈরি হচ্ছে না।

কনসোলে, এটি সাধারণত কনসোল সেটিং দ্বারা নির্ধারিত হয় (যেমন এটি স্বয়ংক্রিয়ভাবে সনাক্ত করা হয়); জিইউআইতে, এটি জিভিআইএম উইন্ডোগুলির প্রস্থ নির্ধারণ করে (এবং এটি দ্বারা নির্ধারিত হয়)।

সুতরাং সাধারণভাবে আপনি কমেন্টস এবং উইন্ডো ম্যানেজারগুলিকে মন্তব্য করে তাদের কাজ করে দিন set columns

আপনি "লাইন ওভারফ্লো দেখুন এবং প্রত্যাশা করুন" বলতে কী বোঝায় তা নিশ্চিত নই। আপনি যদি EOL মোটামুটি 80 কলাম sertedোকাতে চান তবে হয় set textwidthবা ব্যবহার করুন set wrapmargin; যদি আপনি কেবল নরম মোড়ানো চান (যেমন লাইনটি মোড়ানো থাকে তবে সত্যিকারের ইওএল নেই), set linebreakএবং সাথে খেলুন set showbreak


2

এটি একটি বাম ক্ষেত্রের বাইরে তবে এটি আপনার বর্তমান বিভাজনকে ৮০ টি অক্ষরে পুনরায় আকার দেওয়ার জন্য একটি দুর্দান্ত সামান্য মানচিত্র, যদি আপনি লাইন নম্বর পেয়ে থাকেন:

" make window 80 + some for numbers wide  
noremap <Leader>w :let @w=float2nr(log10(line("$")))+82\|:vertical resize <c-r>w<cr> 

1

আপনি আসল পাঠ্যের 80 টি অক্ষরের অনুমতি দেওয়ার জন্য উইন্ডোর আকার নির্ধারণ করতে এটি চেষ্টা করতে পারেন। এটি এখনও উল্লম্ব বিভাজন নিয়ে কাজ করে না।

let &co=80 + &foldcolumn + (&number || &relativenumber ? &numberwidth : 0)

এটি সম্পর্কিত 7 +, 7.3 সম্পর্কিত প্রয়োজন ven

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