4 স্পেস হিসাবে পুনরায় সংজ্ঞাযুক্ত ট্যাব


1094

আমার বর্তমান সেটিংটি 8 টি স্পেস ধরে; আমি কিভাবে এটি নতুন সংজ্ঞা দিতে পারি?


4
আরও ভাল, এটি চারটি স্পেসে সেট করুন এবং একই সাথে অটো-ইনডেন্ট
solid_liq

7
পছন্দ করেছেন লাইনটি ইন্টেন্টেড রয়েছে তা বুঝতে আমার 8 টি স্পেসের প্রয়োজন নেই এবং প্রয়োজনের চেয়ে বেশি আপনি অক্ষরের সীমাবদ্ধ করে সীমাবদ্ধ রাখতে পারেন যা আপনি দীর্ঘ লাইনে পাঠ্য পাঠাতে পারেন (কমপক্ষে মোড়ানোর আগে)। কিন্তু প্রতিটি তার নিজস্ব। :)
weberc2

40
@ হেইনরিচ ৫৯৯১ আমার যুক্তি "সহজেই একটি ইন্ডেন্টেড লাইন সনাক্ত করতে যতটা সম্ভব ব্যবহার করুন"। আমার অনুমান অনুসারে, সহজেই একটি ইন্ডেন্টেশন সনাক্তকরণের ক্ষমতা <3 স্পেসে দ্রুত নেমে যায় এবং এটি 4 স্পেসে বৃদ্ধি বন্ধ করে দেয়। সুতরাং, 4 টির বেশি স্পেস ছাড়িয়ে যাওয়া ইন্ডেন্টেশনটি আমার অভিজ্ঞতা হিসাবে অপচয় waste
weberc2

7
@ ওয়েবারসি 2 সম্ভবত আরও একমত হতে পারে না, সাথী। যার কারণেই আমি রুবি বা "আধুনিক দিনের জাভাস্ক্রিপ্ট" পড়তে এত জঘন্য ক্লাস্ট্রোফোবিক অনুভব করি, যার প্রতিটিই ইনডেন্টেশনের জন্য 2-স্পেস ব্যবহার করে। ভারী নেস্টেড কাঠামো অনুসরণ করার চেষ্টা করার সময় এটি বৈধভাবে আমাকে চোখের চাপ দেয়। গডড্যামন জয়ের জন্য হার্ড ট্যাব।

উত্তর:


1614

এটি আপনার অর্থের উপর নির্ভর করে। আপনি কি চান যে আপনার ফাইলটিতে প্রকৃত ট্যাব অক্ষরগুলি 4 স্পেস প্রশস্ত আকারে প্রদর্শিত হোক বা "ট্যাব" দ্বারা আপনি কী আসলে একটি ইনডেন্ট বলতে চাইছেন , ট্যাব কী টিপে টি উত্পন্ন হয়, যার ফলে ফাইলটি আক্ষরিক অর্থে 4 অবধি অক্ষর যুক্ত করতে পারে প্রতিটি "ট্যাব" আপনি টাইপ করেন?

আপনার উত্তরের উপর নির্ভর করে, নীচের কয়েকটি সেটিংস আপনার জন্য কাজ করা উচিত:

  • ট্যাব অক্ষরের জন্য যা 4-স্পেস-প্রশস্ত প্রশস্ত প্রদর্শিত হয় :

    set tabstop=4
    

    আপনি যদি আপনার উত্স কোডটিতে প্রকৃত ট্যাব চরিত্রটি ব্যবহার করেন তবে আপনি সম্ভবত এই সেটিংসও চান (এগুলি আসলে ডিফল্ট, তবে আপনি এগুলি ডিফেন্সিয়ালি সেট করতে চাইতে পারেন):

    set softtabstop=0 noexpandtab
    

    অবশেষে, আপনি যদি কোনও একক ট্যাবের সাথে অনুরোধ করতে কোনও ইন্ডেন্ট চান তবে আপনার এটিও ব্যবহার করা উচিত:

    set shiftwidth=4
    
  • ইনডেন্টগুলির জন্য যা 4 টি স্পেস অক্ষর নিয়ে গঠিত তবে ট্যাব কী দিয়ে প্রবেশ করা হয়েছে:

    set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
    

উপরের সেটিংস স্থায়ী করতে আপনার লিমিটেডগুলিতে এই লাইনগুলি যুক্ত করুন ।

আপনার যদি সামঞ্জস্যতা করা দরকার হয় বা এই বিকল্পগুলির অর্থ কী তা বোঝার জন্য কেবল এখানে বুঝতে চান, প্রতিটি বিকল্পের অর্থ কী তা এখানে একটি বিচ্ছেদ:

tabstop

"স্পেসে" পরিমাপ করা শক্ত ট্যাবস্টপের প্রস্থ - কার্যকরভাবে প্রকৃত ট্যাব অক্ষরের (সর্বাধিক) প্রস্থ।

shiftwidth

একটি "ইনডেন্ট" এর আকার। এটি স্পেসেও পরিমাপ করা হয়, তাই যদি আপনার কোড বেসটি ট্যাব অক্ষরের সাথে সূচক হয় তবে আপনি shiftwidthট্যাব অক্ষরের বারের সংখ্যার সমান করতে চান tabstop। এটাও ভালো জিনিস দ্বারা ব্যবহৃত হয় =, >এবং <কমান্ড।

softtabstop

এটিকে শূন্য-ব্যতীত অন্য মান নির্ধারণের ফলে এই প্রস্থে ট্যাব স্টপগুলি অনুকরণtabstop করার জন্য ট্যাব কী (সন্নিবেশ মোডে) ফাঁকা স্থান (এবং সম্ভবত ট্যাবগুলি) সন্নিবেশ করানো হবে ।

expandtab

এটি সক্ষম করা ট্যাব অক্ষরের পরিবর্তে ট্যাব কী (সন্নিবেশ মোডে) সন্নিবেশ স্পেস তৈরি করবে। এটি retabকমান্ডের আচরণকেও প্রভাবিত করে ।

smarttab

এটি সক্ষম করার ফলে কার্সারটি যখন একটি লাইনের শুরুতে থাকে (যেমন কেবল পূর্ববর্তী অক্ষরগুলি শ্বেত স্পেস হয়) তখন ট্যাব কী (সন্নিবেশ মোডে) সন্নিবেশ স্পেস বা পরবর্তী ট্যাবস্টপের পরবর্তী ইনডেন্টে যেতে ট্যাবগুলি তৈরি করে।

এগুলির যে কোনও সম্পর্কে আরও তথ্যের জন্য ভিএম এ দেখুন (যেমন ):help 'optionname':help 'tabstop'


18
এটি নিশ্চিত করাও গুরুত্বপূর্ণ যে মেকফিলগুলি সর্বদা হার্ড ট্যাব অক্ষর ব্যবহার করে, অন্যথায় বিল্ডগুলি ব্যর্থ হবে! আমি দেখানো হয়েছে কিভাবে এ stackoverflow.com/questions/234564/...
Shervin Emami

29
@ সংজ্ঞায়িত এটি সিস্টেম ভিম সেটিংস। ~/.vimrcব্যবহারকারীর ভিম সেটিংস। বেশিরভাগ লোকেরা সিস্টেম সেটিংসটি একা ফেলে কেবল ব্যবহারকারী সেটিংস সম্পাদনা করে। নোট করুন যে ~/.vimrcআপনি এটি বেশিরভাগ সিস্টেমে তৈরি না করা অবধি বিদ্যমান থাকবে না।
লরেন্স গনসাল্ভেস

4
ভিম ব্যবহারকারীরা set softtabstop=4বৈশিষ্ট্যটি নোট করুন ! আমি আপনার কোডটি lessবা অন্য কোনও সম্পাদক সহ কেবলমাত্র vimভ্যাকি ইনডেন্টিংটি পড়ার চেষ্টা করে ক্লান্ত হয়ে পড়েছি কারণ আপনি ট্যাবটিকে কিছুটা স্বেচ্ছাসেবী সংখ্যার জন্য পুনরায় সংজ্ঞায়িত করেছেন (যদিও বাকী সিস্টেমটি অন্যথায় মনে করে)! :-)
ওগ্রে গীতসংহিতা 33

6
এই উত্তরটি 4 স্পেসের সমন্বিত tabstop=8ইনডেন্টগুলির জন্য কেন ব্যবহার করতে বলছে আমাকে বুঝতে সাহায্য করতে পারে ? বিভিন্ন সেটিংসের বিবরণ পড়ার পরে আমি কারণটি পাইনি। অন্য উত্তরটি ব্যবহার করতে বলে যা আমার কাছে কিছুটা বেশি জ্ঞান অর্জন করে। tabstop=4
কোডস জনসন

5
@ কোডস জনসন tabstopবিকল্পটি হার্ড ট্যাব অক্ষরের প্রস্থ নিয়ন্ত্রণ করে। আপনি যদি চান যে আপনার ইনডেন্টগুলি 4-প্রশস্ত একটি একক ট্যাব অক্ষরের পরিবর্তে 4 টি স্থানের অক্ষর ধারণ করে, তবে আপনার ট্যাব অক্ষরের প্রস্থের কোনও বিষয় নেই - সাজানো । অনুশীলনে, আপনি সম্ভবত চান যে আপনার ট্যাব অক্ষরের প্রস্থটি আপনার ইনডেন্টগুলির প্রস্থের চেয়ে পৃথক হোক , যাতে সঠিক ইনডেন্ট হিসাবে অভিহিত ট্যাব অক্ষরের সম্ভাবনা হ্রাস পায়। ( list+ expandtabএখানেও সহায়তা করতে পারে) এছাড়াও, 8-চার-প্রশস্ত ট্যাবগুলি হ'ল "স্ট্যান্ডার্ড" - আপনার টার্মিনাল, পাইথন এবং অন্যান্য অনেক সরঞ্জাম 8-চর-প্রশস্ত-ট্যাবগুলিতে ডিফল্ট।
লরেন্স গনসাল্ভেস

744

বর্তমান ব্যবহারকারীর স্থায়ী ভিত্তিতে এটি সংজ্ঞায়িত করতে .vimrcফাইলটি তৈরি করুন (বা সম্পাদনা করুন) :

$ vim ~/.vimrc

তারপরে, নীচে কনফিগারেশনটি ফাইলটিতে আটকান। একবার ভিএম পুনরায় চালু হয়ে গেলে ট্যাব সেটিংস প্রয়োগ হবে।

set tabstop=4       " The width of a TAB is set to 4.
                    " Still it is a \t. It is just that
                    " Vim will interpret it to be having
                    " a width of 4.

set shiftwidth=4    " Indents will have a width of 4

set softtabstop=4   " Sets the number of columns for a TAB

set expandtab       " Expand TABs to spaces

আপনার কাছে ~ / .vimrc না থাকলে, / etc / vim / vimrc দিয়ে চেষ্টা করুন। আমার ক্ষেত্রে উবুন্টু 16.04 এ কনফিগারেশন ফাইলটি রয়েছে। তবে মনে রাখবেন যে এই ফাইলটি পরিবর্তনের ফলে কনফিগারেশনটি বিশ্বব্যাপী ব্যবহৃত হবে।
টডর টডোরভ

4
আরও একটি জিনিস, ব্যবহার :retabরূপান্তর করতে বিদ্যমান tabকরার spacesvim.wikia.com/wiki/Converting_tabs_to_spaces
ডনসং

57

বা উইম মডেলিনের জন্য শর্টহ্যান্ড:

vim :set ts=4 sw=4 sts=4 et :

28

কিছু সেটিংস রয়েছে যা স্পেস বা ট্যাব ব্যবহার করবে কিনা তা নির্ধারণ করে।

সুতরাং এখানে আপনার সুবিধাযুক্ত ফাংশন যা আপনার ~/.vimrcফাইলে সংজ্ঞায়িত করা যেতে পারে :

function! UseTabs()
  set tabstop=4     " Size of a hard tabstop (ts).
  set shiftwidth=4  " Size of an indentation (sw).
  set noexpandtab   " Always uses tabs instead of space characters (noet).
  set autoindent    " Copy indent from current line when starting a new line (ai).
endfunction

function! UseSpaces()
  set tabstop=2     " Size of a hard tabstop (ts).
  set shiftwidth=2  " Size of an indentation (sw).
  set expandtab     " Always uses spaces instead of tab characters (et).
  set softtabstop=0 " Number of spaces a <Tab> counts for. When 0, featuer is off (sts).
  set autoindent    " Copy indent from current line when starting a new line.
  set smarttab      " Inserts blanks on a <Tab> key (as per sw, ts and sts).
endfunction

ব্যবহার:

:call UseTabs()
:call UseSpaces()

ফাইল এক্সটেনশন প্রতি এটি ব্যবহার করতে, নিম্নলিখিত সিনট্যাক্স ব্যবহার করা যেতে পারে (এতে যোগ করা হয়েছে .vimrc):

au! BufWrite,FileWritePre *.module,*.install call UseSpaces()

আরও দেখুন: ট্যাবগুলিকে স্পেসে রূপান্তর করা


এখানে উইকিয়ার আরও একটি স্নিপেট রয়েছে যা ট্যাব এবং স্পেসগুলির মধ্যে টগল করতে ব্যবহৃত হতে পারে :

" virtual tabstops using spaces
set shiftwidth=4
set softtabstop=4
set expandtab
" allow toggling between local and default mode
function TabToggle()
  if &expandtab
    set shiftwidth=8
    set softtabstop=0
    set noexpandtab
  else
    set shiftwidth=4
    set softtabstop=4
    set expandtab
  endif
endfunction
nmap <F9> mz:execute TabToggle()<CR>'z

F9সেটিংস টগল করার জন্য এটি প্রতিটি ট্যাবের জন্য 4 টি স্পেস এবং একটি ম্যাপিং ব্যবহার করে সক্ষম করে ।


27

আমি এটি আমার .vimrc ফাইলে অনুলিপি করে আটকালাম:

" size of a hard tabstop
set tabstop=4

" always uses spaces instead of tab characters
set expandtab

" size of an "indent"
set shiftwidth=4

প্রথম 2 সেটিংসের অর্থ হ'ল আমি যখন ট্যাব টিপব তখন আমি 4 টি স্পেস পাই। তৃতীয় সেটিংটির অর্থ হ'ল আমি যখন V>(অর্থাত্ ভিজ্যুয়াল এবং ইনডেন্ট) করি তখন আমি 4 টি স্পেসও পাই।

গৃহীত উত্তরের মতো বিস্তৃত নয় তবে এটি এমন লোকদের সহায়তা করতে পারে যারা কেবল কিছু অনুলিপি এবং পেস্ট করতে চান।


14

আপনার পছন্দসই সেটিংসটি ~ / .vimrc ফাইলে রাখুন - কিছু গাইডলাইন এবং সেরা অনুশীলনের জন্য নীচে দেখুন।

ভিমে ট্যাব ব্যবহারের চারটি প্রধান উপায় রয়েছে:

  1. সর্বদা 8-এ 'ট্যাবস্টপ' রাখুন, 'সফটটাবস্টপ' এবং 'শিফটউইথ' 4 এ সেট করুন (বা 3 বা আপনি যা পছন্দ করেন) এবং 'নেক্সপ্যান্ডটব' ব্যবহার করুন। তারপরে ভিম ট্যাব এবং স্পেসগুলির মিশ্রণ ব্যবহার করবে, তবে টাইপিং করবে এবং প্রতি 4 (বা 3) অক্ষর প্রদর্শিত একটি ট্যাবের মতো আচরণ করবে।

    দ্রষ্টব্য: 8 এর চেয়ে অন্য যে কোনও মানতে 'ট্যাবস্টপ' সেট করা আপনার ফাইলকে অনেক জায়গায় ভুল হিসাবে দেখাতে পারে (যেমন, এটি মুদ্রণের সময়)।

  2. আপনি যা পছন্দ করেন তার জন্য 'ট্যাবস্টপ' এবং 'শিফটউইথ' সেট করুন এবং 'এক্সপ্রেডট্যাব' ব্যবহার করুন। এইভাবে আপনি সর্বদা স্থান সন্নিবেশ করান। 'ট্যাবস্টপ' পরিবর্তন করা গেলে ফর্ম্যাটটি কখনই গোলযোগ হবে না।

  3. আপনি যা পছন্দ করেন তার জন্য 'ট্যাবস্টপ' এবং 'শিফটউইথ' সেট করুন এবং একটি মডেলিন | ব্যবহার করুন ফাইলটি আবার সম্পাদনা করার সময় এই মানগুলি সেট করতে। শুধুমাত্র ফাইল সম্পাদনা করতে ভিম ব্যবহার করার সময় কাজ করে।

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

সূত্র:


ট্যাবস্টপটি কেন সেট করা যায় তার জন্য +1! = 8 খারাপ হতে পারে!
ওগ্রে গীতসংহিতা 33

3
এটি দুর্দান্ত, তবে আপনার অবশ্যই লক্ষ্য করা উচিত যে এটি vimdoc.sourceforge.net/htmldoc/options.html#'tabstop 'বা :help tabstopvim এ ভারব্যাটিম
belacqua




2

মন্তব্য সহ আমার বেসিক। / .Vimrc:

set number " show line number                                                                                           
set tabstop=2 " set display width of tab; 1 tab = x space with                                                           
set expandtab " transform tab to x space (x is tabstop)                                                               
set autoindent " auto indent; new line with number of space at the beginning same as previous                                                                      
set shiftwidth=2 " number of space append to lines when type >> 

0

সমস্ত ব্যবহারকারীর জন্য স্থায়ী (যখন আপনি সার্ভারে একা থাকবেন):

# echo "set tabstop=4" >> /etc/vim/vimrc

apt-get purge nano mcআপনার সময় সাশ্রয় করার জন্য সাধারণত নতুন সার্ভারে এবং অন্য সবগুলিতে। অন্যথায় আপনি সম্পাদক পুনরায় সংজ্ঞায়িত করবে git, crontabইত্যাদি


1
আপনি যদি EDITOR সেট করেন তবে বেশিরভাগ প্রোগ্রাম এটি সম্মান করবে।
ডি বেন নোবল

@ ডি.বেনকনবল আপনি ঠিক বলেছেন। আমি চেষ্টা করেছিলাম. আপাতত আমি আমার সময় এবং স্নায়ু সঞ্চয় করতে পছন্দ করি ঠিক কী দিয়ে চলে তা যাচাই করতে পারছি F10না nanoতবে আমি সবসময় সেভ দিয়ে কিছু কৌশল করি (সম্ভবত F10এটি একটি সমাধান)। বা এটি কাজ করে না screen? আমি মনে করতে পারি না, কেবল এটি ঘৃণা করুন)
ভ্যাসিলি সুরিকভ

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