Vi তে একাধিক লাইন দ্রুত প্রবেশ করান


2157

এটি তুচ্ছ হওয়া উচিত, এবং এটি এমনকি সাহায্যে হতে পারে, তবে কীভাবে এটি নেভিগেট করা যায় তা আমি বুঝতে পারি না। আমি vi এর মধ্যে কীভাবে একাধিক লাইন ইনডেন্ট করব?

উত্তর:


2551

>কমান্ডটি ব্যবহার করুন । পাঁচ লাইন যুক্ত করতে 5>>,। লাইনের একটি ব্লক চিহ্নিত করতে এবং এটিকে ইন্ডেন্ট করতে, Vjj>তিনটি লাইন ইনডেন্ট করতে (কেবলমাত্র ভিম)। একটি কোঁকড়ানো-ধনুর্বন্ধনী ব্লক ইন্ডেন্ট করতে, আপনার কার্সারটিকে একটি কোঁকড়ানো ধনুর্বন্ধনী ধনুর্বন্ধনী এবং ব্যবহার করুন >%বা যে কোনও জায়গা থেকে ব্লক ব্যবহারের ভিতরে রেখে দিন >iB

যদি আপনি চারপাশের পাঠ্যের ব্লকগুলি অনুলিপি করে থাকেন এবং কোনও নতুন অবস্থানে কোনও ব্লকের ইন্ডেন্টটি প্রান্তিককরণের প্রয়োজন হয় তবে ন্যায়বিচারের ]pপরিবর্তে ব্যবহার করুন p। এটি চারপাশের পাঠ্যের সাথে আটকানো ব্লকটিকে সারিবদ্ধ করে।

এছাড়াও, shiftwidthসেটিংস আপনাকে কত স্পেস ইনডেন্ট করতে হবে তা নিয়ন্ত্রণ করতে দেয়।


77
আমি> আই use (ইনডেন্ট অভ্যন্তরীণ {} ব্লক) ব্যবহার করি। ভিমে কাজ করে। এটি vi তে কাজ করে না নিশ্চিত Not
আর মার্টিনহো ফার্নান্দেস

10
আমার সমস্যা (জিভিমে) হ'ল কমান্ডটি 2 টির বেশি কম্বলকে ইনডেন্ট করে (আমি কেবল দুটি
কম্বল

28
@ কামরান: এটি shiftwidthপরিবর্তন করার উপায়ের জন্য সেটিংস দেখুন ।
গ্রেগ হিউগিল

4
@ ম্যাটস্টেভেনস: আপনি এখানে এই প্রপঞ্চ সম্পর্কে বর্ধিত আলোচনা খুঁজে পেতে পারেন: meta.stackexchange.com/questions/9731/…
গ্রেগ

5
আমি প্রায়শই একাধিকবার ভিজ্যুয়াল ব্লকগুলিতে ইন্ডেন্ট করি যেমন কোনও এক্সএমএল ফাইলটিতে আটকানো কিছু ট্যাগ ফিক্স করা। প্রতিবার ভিজ্যুয়াল মোডে ব্লকটি পুনরায় নির্বাচন করার পরিবর্তে, কেউ সর্বশেষ ভিজ্যুয়াল ব্লকটি পুনরায় ব্যবহার করতে 'জিভি' ব্যবহার করতে পারে। রেফারেন্স superuser.com/questions/220666/...
ডেভিড মান

957

এই উত্তরটি এই প্রশ্নের অন্যান্য উত্তর এবং মন্তব্যগুলির সংক্ষিপ্তসার করে এবং এটি ভিম ডকুমেন্টেশন এবং ভিম উইকির উপর ভিত্তি করে অতিরিক্ত তথ্য যুক্ত করে । সংক্ষিপ্ততার জন্য, এই উত্তরটি vi এবং Vim- নির্দিষ্ট কমান্ডের মধ্যে পার্থক্য করে না।

নীচের কমান্ডগুলিতে, "রি-ইনডেন্ট" এর অর্থ "আপনার ইনডেন্টেশন সেটিংস অনুযায়ী ইনডেন্ট লাইন "। shiftwidthহ'ল প্রাথমিক ভেরিয়েবল যা ইনডেন্টেশন নিয়ন্ত্রণ করে।

জেনারেল কমান্ড

>>   Indent line by shiftwidth spaces
<<   De-indent line by shiftwidth spaces
5>>  Indent 5 lines
5==  Re-indent 5 lines

>%   Increase indent of a braced or bracketed block (place cursor on brace first)
=%   Reindent a braced or bracketed block (cursor on brace)
<%   Decrease indent of a braced or bracketed block (cursor on brace)
]p   Paste text, aligning indentation with surroundings

=i{  Re-indent the 'inner block', i.e. the contents of the block
=a{  Re-indent 'a block', i.e. block and containing braces
=2a{ Re-indent '2 blocks', i.e. this block and containing block

>i{  Increase inner block indent
<i{  Decrease inner block indent

আপনি বা এর {সাথে প্রতিস্থাপন করতে পারেন , যেমন একটি বৈধ ব্লক ইনডেন্ট কমান্ড। কটাক্ষপাত "ইনডেন্ট একটি কোড ব্লক" একটা চমৎকার উদাহরণ এই কমান্ড ব্যবহার করে দেখতে জন্য।}B=iB

এটিও মনে রাখবেন

.    Repeat last command

সুতরাং ইন্ডেন্টেশন কমান্ডগুলি সহজেই এবং সুবিধার্থে পুনরাবৃত্তি করা যায়।

সম্পূর্ণ ফাইলগুলি পুনরায় ইনডেন্টিং করা হচ্ছে

আর একটি সাধারণ পরিস্থিতি একটি উত্স ফাইল জুড়ে ইন্ডেন্টেশন স্থির করা প্রয়োজন:

gg=G  Re-indent entire buffer

আপনি এই ধারণাটি একাধিক ফাইলগুলিতে প্রসারিত করতে পারেন:

" Re-indent all your C source code:
:args *.c
:argdo normal gg=G
:wall

বা একাধিক বাফার:

" Re-indent all open buffers:
:bufdo normal gg=G:wall

ভিজ্যুয়াল মোডে

Vjj> Visually mark and then indent three lines

সন্নিবেশ মোডে

এই আদেশগুলি বর্তমান লাইনে প্রযোজ্য:

CTRL-t   insert indent at start of line
CTRL-d   remove indent at start of line
0 CTRL-d remove all indentation from line

প্রাক্তন কমান্ড

আপনি যখন আপনার কার্সারটি না সরিয়ে নির্দিষ্ট রেখার নির্দিষ্ট পরিসীমা ইন্ডেন্ট করতে চান তখন এগুলি দরকারী।

:< and :> Given a range, apply indentation e.g.
:4,8>   indent lines 4 to 8, inclusive

চিহ্নিতকারী ব্যবহার করে সূচক

আর একটি পদ্ধতি চিহ্নিতকারীদের মাধ্যমে :

ma     Mark top of block to indent as marker 'a'

... কার্সারটি শেষের স্থানে নিয়ে যান

>'a    Indent from marker 'a' to current location

চলকগুলি যা ইনডেন্টেশন পরিচালনা করে

এগুলি আপনি আপনার .vimrc ফাইলে সেট করতে পারেন ।

set expandtab       "Use softtabstop spaces instead of tab characters for indentation
set shiftwidth=4    "Indent by 4 spaces when using >>, <<, == etc.
set softtabstop=4   "Indent by 4 spaces when pressing <TAB>

set autoindent      "Keep indentation from previous line
set smartindent     "Automatically inserts indentation in some cases
set cindent         "Like smartindent, but stricter and more customisable

ফাইল টাইপের উপর ভিত্তি করে ভিমে বুদ্ধিমান ইনডেন্টেশন রয়েছে। আপনার .vimrc এ এটি যুক্ত করার চেষ্টা করুন:

if has ("autocmd")
    " File type detection. Indent based on filetype. Recommended.
    filetype plugin indent on
endif

তথ্যসূত্র


13
এই উত্তর এবং এটির উপরে একটি উভয়ই দুর্দান্ত ছিল। তবে আমি এটি +1 করেছি কারণ এটি আমাকে 'ডট' অপারেটরের স্মরণ করিয়ে দিয়েছে, যা শেষ কমান্ডটির পুনরাবৃত্তি করে। এই অত্যন্ত দরকারী যখন টিপে রাখা প্রয়োজন ছাড়া একটি সম্পূর্ণ ব্লক বিভিন্ন shiftspaces (অথবা indentations) ইন্ডেন্ট প্রয়োজন >}। একটি দীর্ঘ ধন্যবাদ
অমিত

1
5 >> ইনডেন্ট 5 লাইন: এই কমান্ডটি 5 টি লাইন নয়, পঞ্চম লাইনে অন্তর্ভুক্ত করে। এটি কি আমার ভিআইএম সেটিংসের কারণে হতে পারে, বা আপনার কথাটি ভুল?
উইপকজন

1
@ উইপকজন - এটি আশ্চর্যের বিষয়। এটি অবশ্যই আমার জন্য পরবর্তী পাঁচটি লাইন প্রবেশ করিয়ে দেয়, ভিম .2.২.৩০ এ পরীক্ষিত।
ire_and_curses

8
> 42gg যেখানে আপনি লাইন 42. থেকে ইন্ডেন্ট
স্টিভ

দুর্দান্ত সারসংক্ষেপ! এছাড়াও নোট করুন যে "ব্লকের অভ্যন্তরে ইনডেন্ট" এবং "ইনডেন্ট সমস্ত ব্লক" (<i {> a {ইত্যাদি) এছাড়াও বন্ধনী এবং বন্ধনীগুলি:> এ (<i] ইত্যাদি সহ কাজ করে in <> এর সংযোজন ছাড়াও, তারা ডি, সি, ওয়াই ইত্যাদি দিয়েও কাজ করে
aqn

123

একটি বড় নির্বাচন হবে:

gg=G

এটি সত্যিই দ্রুত, এবং সমস্ত কিছু ইনডেন্টেড হয় ;-)


1
আমি একটি এক্সএমএল ফাইল করেছি এবং সিনট্যাক্স হাইলাইটিং চালু করেছি। টাইপিং gg=Gকেবল প্রতিটি পংক্তি 1 অবস্থান থেকে শুরু করে দেয় All সমস্ত সাদা স্পেস সরিয়ে দেওয়া হয়েছে। এক্সএমএল এর সাথে নির্দিষ্ট কিছু আছে কি?
asgs

2
আমার মনে set cindentহয় ভিএমআরকে থাকা উচিত বা :set cindentসেই আদেশটি চালানোর আগে চালানো উচিত
আমানুয়েল নেগা

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

110

সি-ইনডেন্টিং ইন্ডেন্টেশনের জন্য এটি ব্যবহার করে দেখুন । কি :help =আরও তথ্যের জন্য:

={

এটি আপনার মধ্যে থাকা বর্তমান কোড ব্লকে স্বয়ংক্রিয়ভাবে প্রবেশ করবে will

বা শুধু:

==

বর্তমান লাইনে স্বয়ংক্রিয়ভাবে প্রবেশ করতে to


2
আমার জন্য কাজ করে না, কেবলমাত্র 'কারেন্ট কোড ব্লক আমি করছি' এর খোলার ব্রেসের উপরের লাইনে আমার কার্সারটি ফেলে দেয়।
আন্ডারস্কোর_আডি

79

আরও চাক্ষুষ লোকের জন্য মূল টিপুন:

  1. কমান্ড মোড প্রবেশ করুন:
    Escape

  2. ইন্ডেন্টের জন্য অঞ্চলটির শুরুতে ঘুরুন:
    hjkl

  3. একটি ব্লক শুরু করুন:
    v

  4. স্থান শেষ করতে প্রায় প্রান্তে ঘুরুন:
    hjkl

  5. (Alচ্ছিক) আপনি চান ইন্ডেন্টেশন স্তরের সংখ্যা টাইপ করুন
    0..9

  6. ব্লকে ইন্ডেন্টেশন কার্যকর করুন:
    >


2
এটি দুর্দান্ত, তবে এটি ফাঁকা স্থান ব্যবহার করে, ট্যাবগুলি নয়। এটি ঠিক করার কোনও সম্ভাব্য উপায়?
শেন রিসটল

11
যদি এটি ট্যাবগুলির পরিবর্তে স্পেস ব্যবহার করে, তবে এটি সম্ভবত আপনার স্পেস ব্যবহারের জন্য ইন্ডেন্টেশন সেট করার কারণে রয়েছে। =)।
কেন্ট ফ্রেড্রিক

4
যখন 'এক্সপেনডট্যাব' বিকল্পটি বন্ধ থাকে (এটি পূর্বনির্ধারিত) ভিম ইনডেন্টটি তৈরি করতে <ট্যাব> যতটা সম্ভব ব্যবহার করে। (: সহায়তা:>)
কেন্ট ফ্রেড্রিক

1
আমি পরিবর্তিত একমাত্র ট্যাব / স্থান সম্পর্কিত ভিএম সেটিংটি হ'ল: ট্যাবস্টপ = 3 সেট করুন। এটি প্রতিবার ব্যবহার করার সময় এটি আসলে >>োকানো হচ্ছে >>: "<tab> <space> <space>"। ব্লকের ইনডেন্টিংয়ের সাথে একই। কোন ধারনা?
শেন রিস্টল

3
"স্পেস বনাম ট্যাবস" এর জন্য আপনি যে তিনটি সেটিংস দেখতে চান সেটি হ'ল ১ টি ট্যাবস্টপ ২, শিফটউইথ ৩. সম্প্রসারিত ট্যাব। আপনার কাছে সম্ভবত "শিফটউইথ = 5 নেক্সপ্যান্ডট্যাব" রয়েছে, সুতরাং একটি "ট্যাব" 3 স্পেস এবং একটি ইনডেন্টেশন স্তর "5" স্পেস হয়, সুতরাং এটি 1 ট্যাব এবং 2 স্পেস সহ 5 তৈরি করে।
কেন্ট ফ্রেড্রিক

66

সব কমান্ডের কর্তা
gg=G

এটি পুরো ফাইল ইনডেন্ট করে!

এবং নীচে ভিম বা জিভিমে লাইনগুলি দ্রুত ইনডেন্ট করার জন্য ব্যবহৃত কয়েকটি সাধারণ এবং মার্জিত কমান্ড রয়েছে।

বর্তমান লাইনটি ইনডেন্ট করতে
==

বর্তমান লাইনের নীচে সমস্ত লাইন যুক্ত করতে

=G

ইন্ডেন্ট করতে nবর্তমান লাইনের নিচে লাইন

n==

উদাহরণস্বরূপ, বর্তমান লাইনের নীচে 4 লাইন যুক্ত করতে

4==

কোডের একটি ব্লক ইনডেন্ট করতে, একটি ধনুর্বন্ধনীতে গিয়ে কমান্ডটি ব্যবহার করুন

=%

এগুলি একাধিক লাইন ইনডেন্ট করার জন্য সহজতম, তবে শক্তিশালী কমান্ড।


3
এই ঠিক আছে vim, না vi
রোজমোকে

3
আমার সোলারিস বা এআইএক্স বাক্সগুলিতে নয়। ইক্যুয়াল কীটি সর্বদা আমার মানক অ্যাডহক ম্যাক্রো অ্যাসাইনমেন্টগুলির একটি। আপনি কি নিশ্চিত যে আপনি যেটির vimসাথে সংযুক্ত হয়েছেন তেমন কিছু খুঁজছেন না vi?
রোজমোকে

3
হ্যাঁ, লিনাক্সে, vi প্রায় সবসময়ই ভিমের লিঙ্ক। Vi এর ভিতরে ve কমান্ড চালানোর চেষ্টা করুন।
রোজমোকে

4
আমি এই জাতীয় উত্তর পছন্দ করি: পরিষ্কার, সুনির্দিষ্ট এবং সংক্ষিপ্ত। ডেবিয়ান জেসিতে আমার জন্য কাজ করেছেন। ধন্যবাদ, @
এস

1
যেহেতু আমি ভিআইএম ব্যবহার করি না, ভিআই নয়, এই উত্তরটি এখানে বেশ মনোরম। ধন্যবাদ।
ড্যান নিসেনবাউম

66

ইতিমধ্যে দেওয়া উত্তর ছাড়াও এবং স্বীকৃত একটি চিহ্নিতকারী স্থাপন করা এবং তারপরে বর্তমান কার্সার থেকে চিহ্নিতকারী পর্যন্ত সবকিছু ইনডেন্ট করাও সম্ভব।

সুতরাং, maআপনি যেখানে আপনার ইন্ডেন্টেড ব্লকের শীর্ষটি চান সেখানে প্রবেশ করুন , আপনার প্রয়োজন অনুসারে কার্সারটি ডাউন করুন এবং তারপরে টাইপ করুন >'a(নোট করুন যে aকোনও বৈধ চিহ্নিতকারী নামের পরিবর্তে " " প্রতিস্থাপন করা যেতে পারে)। এটি কখনও কখনও 5>>বা এর চেয়ে সহজ vjjj>


1
এটি সত্যিই দরকারী। আমি এটি দেখতে যাচ্ছি যে এটি দিয়ে কী কাজ করে। আমি ডি ও ই জানি, আর কি?
ব্যবহারকারী 606723

2
এটি আপনার পক্ষে কতটা লাইন ইন্ডেন্ট করতে চান তা গণনা করার প্রয়োজনীয়তা এড়ানোর কারণে এটি খুব কার্যকর।
জিগি

29

পাঠ্যের শুরুতে যান

  • vভিজ্যুয়াল মোডের জন্য টিপুন ।
  • পাঠ্য হাইলাইট করতে ব্যবহার up/ downতীরচিহ্ন।
  • =আপনি হাইলাইট করা সমস্ত লাইন যুক্ত করতে চাপুন ।

28

প্রস্তাবিত সমাধানগুলির পাশাপাশি, আমি জিনিসগুলি একবারে অনুচ্ছেদে করতে চাই >}


2
হ্যাঁ, এবং এ কারণেই আমার একটি বড় পীভগুলি অন্যথায় খালি লাইনে সাদা স্পেস রয়েছে: তারা "অনুচ্ছেদে" ভিমের ধারণাটি মিস করেছে।
aqn

28

আপনি যখন কোনও ব্লক নির্বাচন করেন এবং >ইনডেন্ট করতে ব্যবহার করেন, তখন এটি সূচকগুলি পরে স্বাভাবিক মোডে ফিরে যায়। আমার .vimrc ফাইলটিতে এটি রয়েছে:

vnoremap < <gv

vnoremap > >gv

এটি আপনাকে আপনার পছন্দ হিসাবে যতবার ইন্ডেন্ট করতে দেয়।


17
নির্বাচনটি একাধিকবার ইনডেন্ট করতে, আপনি কেবল চাপতে পারেন। পূর্ববর্তী কমান্ড পুনরাবৃত্তি।
মনোকাকে

2
সমস্যা। এই পরিস্থিতিতে আপনার আঙ্গুলের সরানো আছে। @ মাইকের সলিউশন (একই আমি ব্যবহার করি) এর মাধ্যমে আপনি ইতিমধ্যে আপনার আঙ্গুলগুলি ইনডেন্ট কীটিতে পেয়েছেন এবং স্যুইচিং এবং অন্য কিছু করার পরিবর্তে ইন্ডেন্টিং চালিয়ে যেতে এটির তাকাতে পারেন। পিরিয়ড ব্যবহারে বেশি সময় লাগে কারণ আপনাকে আপনার হাত সরাতে হবে এবং এটি আরও একটি চিন্তার প্রয়োজন কারণ এটি দ্বিতীয়, ভিন্ন, অপারেশন।
মাসুকোমি

21

ধরুন আপনি আপনার কোডটি ইনডেন্ট করতে 2 স্পেস ব্যবহার করেন। টাইপ করুন:

:set shiftwidth=2
  • টাইপ করুন v(ভিজ্যুয়াল ব্লক সম্পাদনা মোডে প্রবেশ করতে)
  • আপনি ইনডেন্ট বা আনইন্ডেন্ট করতে চান সেই লাইনগুলি হাইলাইট করতে তীর কী (বা h/ j/ k/ l) সহ কার্সারটি সরান ।

তারপর:

  • >একবার ইনডেন্ট করতে টাইপ করুন (2 স্পেস)
  • আদর্শ 2>দুবার ইনডেন্ট করতে (4 স্পেস)
  • 3>তিনবার ইনডেন্ট টাইপ করুন (6 স্পেস)
  • ...
  • <একবার আনইন্ডেন্টে টাইপ করুন (2 স্পেস)।
  • 2<দুইবার আনইন্ডেন্টে টাইপ করুন (4 স্পেস)
  • 3<তিনবার আনইন্ডেন্ডে টাইপ করুন (6 স্পেস)
  • ...

আপনি ধারণা পেতে।

( খালি লাইনগুলি ইন্টেন্টেড হবে না, যা আমি একরকম সুন্দর বলে মনে করি ))


আমি ইনডেন্টিং ব্লকগুলির জন্য (ছ) ভিম ডকুমেন্টেশনে উত্তরটি পেয়েছি:

:help visual-block
/indent

আপনি যদি কমান্ডটিতে একটি গণনা দিতে চান, অপারেটর চরিত্রটি টাইপ করার ঠিক আগে এটি করুন: "v {মুভ-চারপাশে} 3>" (লাইন 3 ডানদিকে ডানদিকে সরান)।


18

ভিমের ইউআইয়ের সৌন্দর্য এটির ধারাবাহিকতা। সম্পাদনা কমান্ডগুলি কমান্ড এবং একটি কার্সার পদক্ষেপ নিয়ে গঠিত। কার্সার মুভগুলি সর্বদা একই থাকে:

  • H পর্দার শীর্ষে, L নীচে Mথেকে মাঝখানে
  • nG লাইনে যেতে n ,G , ফাইল নীচে একা ggশীর্ষে
  • nপরবর্তী অনুসন্ধান ম্যাচে, Nআগেরটিতে যেতে
  • } অনুচ্ছেদের শেষে
  • % পরের ম্যাচিং বন্ধনীতে, প্রথম বন্ধনী বা ট্যাগ ধরণের
  • enter পরের লাইনে
  • 'xএক্স চিহ্নিত করতে যেখানে x একটি বর্ণ বা অন্য another'
  • শব্দ সহ wএবং আরও অনেকগুলি W, $বা 0রেখার টিপস ইত্যাদিতে, যা এখানে প্রয়োগ হয় না কারণ লাইন চলাচল নয়।

সুতরাং, ভিএম ব্যবহার করার জন্য আপনাকে কার্সারটি সরিয়ে ফেলতে শিখতে হবে এবং কমান্ডের একটি তালিকা মনে রাখতে হবে, উদাহরণস্বরূপ, >ইনডেন্ট করা (এবং< "আউটডেন্ট")।

সুতরাং, পর্দা আপনাকে যা উপরের কার্সার অবস্থান থেকে লাইন ইন্ডেন্ট করেও জন্য >H, >Gফাইল নীচে ইন্ডেন্ট করতে।

যদি, টাইপ করার পরিবর্তে >H, আপনি টাইপ করেন dHতবে আপনি cHএটি প্রতিস্থাপনের জন্য লাইনগুলির একই ব্লকটি মুছে ফেলছেন, ইত্যাদি etc.

কিছু কার্সার মুভমেন্ট নির্দিষ্ট কমান্ডের সাথে আরও ভাল ফিট করে। বিশেষত, %একটি সম্পূর্ণ HTML বা এক্সএমএল ব্লক যুক্ত করতে কমান্ডটি কার্যকর command যদি ফাইলটি সিনট্যাক্সটি হাইলাইট করে ( :syn on) থাকে তবে কোনও ট্যাগের পাঠ্যে কার্সারটি সেট করে (যেমন, <ডিভি> এর "আই" তে এবং প্রবেশ করানো হয়)>% </ div> ট্যাগ অবধি ইনডেন্ট হবে।

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


2
আমি বলব যে vi / vim বেশিরভাগ ক্ষেত্রে সামঞ্জস্যপূর্ণ। উদাহরণস্বরূপ, ডি এস এবং ওয়াইয়ের মতো আচরণ করে না! :)
aqn

14

এটা কর:

$vi .vimrc

এবং এই লাইনটি যুক্ত করুন:

autocmd FileType cpp setlocal expandtab shiftwidth=4 softtabstop=4 cindent

এটি কেবল সিপিপি ফাইলের জন্য। আপনি কেবল ফাইল টাইপ পরিবর্তন করে অন্য ফাইল টাইপের জন্য এটি করতে পারেন ...


13

norm iলাইনের শুরুতে প্রদত্ত পাঠ্য সন্নিবেশ করতে আপনি কমান্ডটি ব্যবহার করতে পারেন । 2-10 লাইনের আগে 10 স্পেস সন্নিবেশ করতে:

:2,10norm 10i 

মনে রাখবেন কমান্ডের শেষে একটি স্পেস অক্ষর থাকতে হবে - এটি এমন অক্ষর হবে যা আমরা .োকাতে চাইছি। আমরা অন্য যে কোনও পাঠ্য সহ একটি লাইনও ইনডেন্ট করতে পারি, উদাহরণস্বরূপ পাঁচটি আন্ডারস্কোর অক্ষরযুক্ত একটি ফাইলের প্রতিটি লাইন ইনডেন্ট করতে:

:%norm 5i_

বা আরও অভিনব কিছু:

:%norm 2i[ ]

আরও ব্যবহারিক উদাহরণটি # অক্ষরের সাথে বাশ / পাইথন / ইত্যাদি কোড মন্তব্য করছে:

:1,20norm i#

xপরিবর্তে পুনরায় প্রবেশ করতে i। উদাহরণস্বরূপ, প্রতিটি লাইন থেকে প্রথম 5 টি অক্ষর অপসারণ করতে:

:%norm 5x

1
এটি ফাইলের বাম দিক থেকে শুরু হয় ... ব্লকের বর্তমান অবস্থান নয়
এলিথেসেইয়ান

12

এটি ব্যবহার করে একটি দ্রুত উপায় VISUAL MODE কোডের ব্লকের মন্তব্য করার মতো একই প্রক্রিয়াটি ব্যবহার করে।

এটি কার্যকর যদি আপনি নিজের পরিবর্তন shiftwidthবা কোনও setনির্দেশনা ব্যবহার না করতে পছন্দ করেন এবং ট্যাবস বা স্পেসেস বা অন্য কোনও চরিত্রের সাথে কাজ করার জন্য যথেষ্ট নমনীয় useful

  1. ব্লকের শুরুতে কার্সারটি অবস্থান করুন
  2. v এ স্যুইচ করতে -- VISUAL MODE --
  3. ইন্টেন্ট করা পাঠ্য নির্বাচন করুন
  4. :প্রম্পটে স্যুইচ করতে টাইপ করুন
  5. 3 টি নেতৃস্থানীয় স্পেস দিয়ে প্রতিস্থাপন করা হচ্ছে:

    :'<,'>s/^/ /g

  6. বা শীর্ষস্থানীয় ট্যাবগুলি প্রতিস্থাপন:

    :'<,'>s/^/\t/g

  7. সংক্ষিপ্ত বর্ণনা:

    '<,'> - ভিজ্যুয়াল সিলেক্ট রেঞ্জের মধ্যে

    s/^/ /g - পুরো ব্যাপ্তির মধ্যে প্রতিটি লাইনের শুরুতে 3 টি স্পেস .োকান

    (বা)

    s/^/\t/g- Tabপুরো রেঞ্জের মধ্যে প্রতিটি লাইনের শুরুতে Inোকান


12

>} অথবা >{ বর্তমান পংক্তি থেকে পরবর্তী অনুচ্ছেদ পর্যন্ত ইনডেন্ট করুন

<}বা <{একই আন-ইনডেন্ট


11

আমি ইন্ডেন্টেশনের জন্য পাঠ্য চিহ্নিত করতে চাই:

  1. পাঠ্য লাইনের শুরুতে যান তারপরে টাইপ করুন ma( a'এমআর্কের লেবেলটি: এটি কোনও অক্ষর হতে পারে)
  2. পাঠ্যের শেষ লাইনে যান এবং টাইপ করুন mz(আবার zকোনও বর্ণ হতে পারে)
  3. :'a,'z>বা :'a,'z<ইনডেন্ট বা আউটডেন্ট (এটি কি একটি শব্দ?)
  4. ভাল খবর! পাঠ্য সরানো হয়েছে (ফাঁকা লাইনগুলি ফাঁকা ছাড়াই ফাঁকা থাকবে)

পিএস: আপনি যে :'a,'zকোনও অপারেশন (ডি, ওয়াই, এস ///, ইত্যাদি) এর রেঞ্জ চিহ্নিত করতে কৌশলটি ব্যবহার করতে পারেন যেখানে আপনি লাইন, সংখ্যা, বা ব্যবহার করতে পারেন %


10

:help left

ইন ex modeআপনি ব্যবহার করতে পারেন :leftবা :leসারিবদ্ধ লাইনে একটি নির্দিষ্ট পরিমাণ। বিশেষত, [পরিসীমা] এর বামরেখাগুলি বামে প্রান্তিক করা:left হবে । এটি লাইনগুলিতে ইন্ডেন্টটি [ইনডেন্ট] (ডিফল্ট 0) এ সেট করে।

:%le3বা :%le 3 বা :%left3বা :%left 3তিন ব্যবধান সহ প্যাডিং দ্বারা সম্পূর্ণ ফাইল সারিবদ্ধ হবে।

:5,7 le 3 তিনটি স্পেস দিয়ে প্যাড করে 5 থেকে 7 রেখাগুলিকে সারিবদ্ধ করবে।

:leকোনও মান ছাড়াই বা :le 00 এর প্যাডিংয়ের সাথে সারিবদ্ধ হবে।

এটি ভিম এবং জিভিমে কাজ করে।


1
আশ্চর্যজনক, আমি যা খুঁজছিলাম ঠিক (মার্কডাউন কোডের জন্য 4 স্পেস - একটি নির্দিষ্ট সংখ্যক স্পেস সন্নিবেশ করার একটি উপায়) আমার সাধারণ ইনডেন্টটি ওভাররাইড করার জন্য। আমার ক্ষেত্রে আমি ভিজ্যুয়াল মোডে একটি নির্দিষ্ট সংখ্যক লাইনের ইনডেন্ট করতে চেয়েছিলাম, তাই লাইনগুলি হাইলাইট করতে শিফট-ভি, তারপরে :'<,'>le4ফাঁকা স্থান সন্নিবেশ করানোর জন্য। ধন্যবাদ!
সাবফিউশন

9

আমার জন্য, ম্যাকভিম (ভিজ্যুয়াল) সমাধানটি ছিল, মাউস দিয়ে নির্বাচন করুন এবং ">" টিপুন, তবে "~ / .vimrc" এ নিম্নলিখিত রেখাগুলি রাখার পরে যেহেতু আমি ট্যাবগুলির পরিবর্তে ফাঁকা স্থান পছন্দ করি:

set expandtab
set tabstop=2
set shiftwidth=2

কমান্ড-লাইন (টার্মিনাল.এপ) থেকে ম্যাকভিমকে কল করতে সক্ষম হওয়াও দরকারী, সুতরাং যেহেতু আমার কাছে নিম্নোক্ত সহায়ক ডিরেক্টরি "~ / বিন" রয়েছে, যেখানে আমি "ম্যাকভিম" নামে একটি স্ক্রিপ্ট রাখি:

#!/usr/bin/env bash
/usr/bin/open -a /Applications/MacPorts/MacVim.app $@

এবং অবশ্যই "~ / .bashrc" এ:

export PATH=$PATH:$HOME/bin

ম্যাকপোর্টস "~ / .প্রফাইলে" প্রচুর পরিমাণে গণ্ডগোল করে, তাই PATH এনভায়রনমেন্ট ভেরিয়েবল বেশ দীর্ঘ হতে পারে।


9

5== বর্তমান কার্সার অবস্থান থেকে পাঁচটি লাইন যুক্ত করা হবে।

সুতরাং আপনি আগে যে কোনও নম্বর টাইপ করতে পারেন ==। এটি লাইনের সংখ্যা ইন্ডেন্ট করবে। এটি কমান্ড মোডে রয়েছে।

gg=G উপরে থেকে নীচে পুরো ফাইলটি ইনডেন্ট করবে।


9

আমি মন্তব্যগুলিতে ব্যবহার করার মতো কোনও পদ্ধতি খুঁজে পাইনি, তাই আমি এটিকে ভাগ করব (আমি কেবল ভিমকে মনে করি):

  1. Esc কমান্ড মোড প্রবেশ করতে
  2. আপনি ইনডেন্ট করতে চান এমন সর্বশেষ লাইনের প্রথম অক্ষরে যান
  3. Ctrl+ + Vব্লক নির্বাচন শুরু করার জন্য
  4. আপনি যে প্রথম লাইনে ইন্ডেন্ট করতে চান তার প্রথম অক্ষরে যান
  5. Shift+ Iবিশেষ সন্নিবেশ মোডে প্রবেশ করতে
  6. আপনার যতটা স্পেস / ট্যাব ইনডেন্ট করতে হবে টাইপ করুন (উদাহরণস্বরূপ দুটি)
  7. প্রেস Escএবং স্পেসগুলি সমস্ত লাইনে উপস্থিত হবে

আপনি যখন ইনডেন্টেশন / ট্যাব সেটিংস vimrcপরিবর্তন করতে বা সম্পাদনা করার সময় এটি পরিবর্তন করতে তাদের মনে রাখতে চান না তখন এটি কার্যকর।

আনইন্ডেন্ট না করতে আমি একই Ctrl+ Vব্লকটি স্পেস নির্বাচন করতে এবং এটি দিয়ে মুছে ফেলার জন্য ব্যবহার করি D


9

আমি জানি না কেন এর মতো সাধারণ উত্তর খুঁজে পাওয়া এত কঠিন ...

আমি নিজেও এটি জানার জন্য অনেক লড়াই করতে হয়েছিল। এটা খুবই সাধারণ:

  • .vimrcহোম ডিরেক্টরিতে আপনার ফাইল সম্পাদনা করুন ।
  • এই লাইন যুক্ত করুন

    set cindent
    

    আপনার ফাইলটিতে যেখানে আপনি সঠিকভাবে ইনডেন্ট করতে চান।

  • সাধারণ / কমান্ড মোডে টাইপ করুন

    10==   (This will indent 10 lines from the current cursor location)
    gg=G   (Complete file will be properly indented)
    

8
:line_num_start,line_num_end>

উদাহরণ স্বরূপ,

14,21> shifts line number 14 to 21 to one tab

আরও ট্যাবগুলির জন্য '>' চিহ্নটি বাড়ান।

উদাহরণ স্বরূপ,

14,21>>> for three tabs

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

@ হোল্ডঅফ হুঞ্জার লাইন নম্বরগুলি ডিফল্টরূপে প্রদর্শিত হয় না। আপনার :set numberলাইন নম্বর টগল করতে হবে (সেগুলি ডিফল্টরূপে বন্ধ আছে ), বা set numberআপনার ভিএমআরসিতে রাখতে হবে।
DryLabRebel

7

পাইথনকে অনেক বেশি ব্যবহার করে, আমি নিজেকে প্রায় একাধিক ইনডেন্টের মাধ্যমে ব্লকগুলি স্থানান্তরিত করতে প্রয়োজন বলে মনে করি। আপনি ব্লক নির্বাচনের যে কোনও পদ্ধতি ব্যবহার করে এটি করতে পারেন, এবং তারপরে ঠিক ঠিক আগে ঝাঁপিয়ে পড়তে চান এমন ইন্ডেন্টের সংখ্যাটি প্রবেশ করুন>

উদাহরণস্বরূপ, V5j3>পাঁচটি লাইনটি তিনবার ইনডেন্ট করবে - যা আপনি 12 টি স্পেসে ইনডেন্টের জন্য চারটি স্পেস ব্যবহার করেন।


7

প্রতিটি লাইনে একটি ফাইল টাইপ করুন Escএবং তারপরে G=gg


6

সংখ্যক স্পেস দিয়ে তাত্ক্ষণিক vi তে হাইলাইট কোডটি কীভাবে যুক্ত করা যায়:

বিকল্প 1: ভিজ্যুয়াল ব্লক মোডের সাথে তিনটি স্পেসে vi এর কোডের একটি ব্লক প্রবেশ করুন:

  1. আপনি কোড প্রবেশ করতে চান কোড ব্লক নির্বাচন করুন। Ctrl+Vএটি সাধারন মোডে ব্যবহার করে এবং পাঠ্য নির্বাচন করতে নীচে তীর চাপিয়ে দিন। এটি নির্বাচিত হওয়ার সময়, :নির্বাচিত পাঠ্যের ব্লককে একটি কমান্ড দেওয়ার জন্য প্রবেশ করুন।

  2. কমান্ড লাইনে নিম্নলিখিতটি উপস্থিত হবে: :'<,'>

  3. তিনটি স্পেসে ইন্ডেন্ট সেট করতে টাইপ করুন le 3এবং এন্টার টিপুন। এটি প্রদর্শিত হয়::'<,'>le 3

  4. নির্বাচিত পাঠ্যটি তত্ক্ষণাত তিনটি স্পেসে যুক্ত হয়।

বিকল্প 2: ভিজুয়াল লাইন মোডের সাথে তিনটি স্পেসে vi এর কোডের একটি ব্লক প্রবেশ করুন:

  1. Vi তে আপনার ফাইলটি খুলুন।
  2. আপনার কোডটি কিছু কোডের উপরে রাখুন
  3. সাধারণ মোডে থাকুন এবং নিম্নলিখিত কীগুলি টিপুন:

    Vjjjj:le 3
    

    আপনি যা করেছেন তার ব্যাখ্যা:

    V মানে পাঠ্য নির্বাচন করা শুরু করুন।

    jjjj চারটি রেখা হাইলাইট করে চারটি রেখা নীচে তীরগুলি।

    : vi কে বলুন আপনি হাইলাইট করা পাঠ্যের জন্য কোনও নির্দেশনা প্রবেশ করবেন।

    le 3 ইন্ডেন্ট হাইলাইট করা পাঠ্য তিন লাইন মানে।

    নির্বাচিত কোডটি তাত্ক্ষণিকভাবে বাড়ানো বা তিনটি স্পেস ইনডেন্টেশন হ্রাস করা হয়।

বিকল্প 3: ইনডেন্ট বাড়ানোর জন্য ভিজ্যুয়াল ব্লক মোড এবং বিশেষ সন্নিবেশ মোড ব্যবহার করুন:

  1. Vi তে আপনার ফাইলটি খুলুন।
  2. আপনার কোডটি কিছু কোডের উপরে রাখুন
  3. সাধারণ মোডে থাকুন নীচের কীগুলি টিপুন:

    Ctrl+V

    jjjj
    

    (স্পেসবারটি পাঁচবার টিপুন)

    Esc Shift+i

    সমস্ত হাইলাইট করা পাঠ্য অতিরিক্ত পাঁচটি স্পেস যুক্ত করা হয়েছে।


6

আমি ব্লক-মোড ভিজ্যুয়াল নির্বাচন ব্যবহার করি:

  • সরানোর জন্য ব্লকের সামনের দিকে যান (উপরে বা নীচে)।
  • ভিজ্যুয়াল ব্লক মোডে প্রবেশ করতে Ctrl+ টিপুন V
  • লাইনের সামনে একটি কলাম নির্বাচন করতে নেভিগেট করুন।
  • সন্নিবেশ মোডে প্রবেশ করতে I( Shift+ I) টিপুন ।
  • কিছু স্পেস টাইপ করুন।
  • টিপুন Esc। সমস্ত লাইন স্থানান্তরিত হবে।

এটি কোনও ইউনি-টাস্কার নয়। এটি কাজ করে:

  • লাইনের মাঝে।
  • সমস্ত লাইনে কোনও স্ট্রিং Toোকানোর জন্য।
  • একটি কলাম পরিবর্তন করতে ( cপরিবর্তে ব্যবহার করুন I)।
  • ইয়াঙ্ক, মুছুন, বিকল্প ইত্যাদি ...

এটি জটিল, তবে আপনি যদি ভিআইএম-এর বাইরে ফরম্যাটিং করেন (উদাহরণস্বরূপ, vim-prettierডিফল্ট ইনডেন্টিং ইঞ্জিনের পরিবর্তে ব্যবহার করেন ) তবে এটি যাওয়ার উপায় । ব্যবহার >করা অন্যথায় প্রেটিয়ার দ্বারা সম্পন্ন ফর্ম্যাটটিকে সজ্জিত করবে।
অলিগোফ্রেন

মজার, আমি এটি জটিল ছাড়াও কিছু পাই। এটি ইউনি ইউনিয়ন নয়! এই পদ্ধতিটি শেখার ইনডেন্টিংয়ের বাইরেও অনেকগুলি ব্যবহার রয়েছে।
sqqqrly

আমি গ্রহণযোগ্য উত্তরের চেয়ে এটিকে আরও ভাল দেখতে পাচ্ছি, যেহেতু আমি দেখতে পাচ্ছি যা ঘটছে, আমি যে লাইনগুলি নির্বাচন করছি এবং আমি যে ক্রিয়াটি করছি এবং কেবল কোনও প্রকার ভিম প্রসারণ টাইপ না করে।
ব্যবহারকারী 4052054

5
  • কোড ব্লকের জন্য, {}: =+%

  • একটি নির্বাচিত লাইনের জন্য: Shift+ vউপরে / ডাউন তীর কীগুলি ব্যবহার করে নির্বাচন করুন এবং তারপরে টিপুন =

  • পুরো ফাইলের জন্য: gg+ =+G

দ্রষ্টব্য: 'জিজি' এর অর্থ লাইন 1 এ যান, '=' হ'ল ইনডেন্ট কমান্ড এবং 'জি' কার্সারটিকে ফাইলের শেষে নিয়ে যায়


4

চারটি করে ফাইলের সবগুলি ইনডেন্ট করতে:

esc 4G=G

3
...কি? '4 স্পেস বাই ইন্ডেন্ট'? না, এই লাইন 4 এ যায় এবং তারপরে সদ্য নির্বাচিত ইনডেন্ট মোড (যদি থাকে) ব্যবহার করে সেখান থেকে ফাইলের শেষে সমস্ত কিছু প্রবেশ করে।
আন্ডারস্কোর_

2
  1. ভিজুয়াল লাইন মোডে প্রবেশ করতে "SHIFT + v" টিপুন।
  2. আপনি প্রবেশ করতে চান এমন পাঠ্য নির্বাচন করুন তবে কার্সার কী বা "j" এবং "কে" কী ব্যবহার করুন using
  3. ইনডেন্ট করতে "SHIFT + বিন্দু" (> অক্ষর) টিপুন।

সূত্র: https://www.fir3net.com/UNIX/General/how-do-i-tab-m Multipleple- lines- within- vi.html

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