আমি vi এর মধ্যে একটি সম্পূর্ণ ফাইলের ইন্ডেন্টেশন কীভাবে ঠিক করব?


625

ভিমে, সমস্ত লাইনের ইন্ডেন্টেশন সংশোধন করার আদেশ কী?

প্রায়শই আমি একটি অনুলিপি টার্মিনালে কোড অনুলিপি করে আটকান এবং পুরো জিনিসটি গোলযোগে ফেলে দেব। আমি এটিকে একবারে ঠিক করতে চাই fell


অনুরূপ: ভি এসই
করানো

8
প্রতিরোধ রোগের চিকিত্সার চেয়ে বেশী ভাল। আত্মা মধ্যে এই মন্তব্য আসে। দূরবর্তী টার্মিনাল থেকে সন্নিবেশ মোড এবং পেস্টিং কোড প্রবেশের আগে একটি ": সেট পেস্ট" করুন।
Chthonic প্রকল্প

উত্তর:


1214

=, ইনডেন্ট কমান্ড গতি নিতে পারে। সুতরাং, ggফাইলটি শুরু =করতে, ইনডেন্ট করতে, Gফাইলের শেষে gg=G,।


39
আমি কখনই আমার মূল্যবান 1G = প্রকাশ করতে সক্ষম হব না) আমার প্রিয় পছন্দের একটি হ'ল =% একটি উদ্বোধনী বন্ধনীতে দাঁড়িয়ে। এটি পুরো ব্লকের ইনডেন্টগুলি স্থির করে।
PEZ

2
: 0 <পুনরায়> খুব খারাপ না তবে জিজি সুন্দর। (হ্যাঁ, আমি প্রথম এড শিখেছি)
এরিক ওলসন

8
আমি কি বর্তমান ফাইলটি না রেখে পুরো ফাইলটি ইনডেন্ট করতে পারি?
ফ্যাবিও পেরেজ

86
@ ফ্যাবিও: ''(দু'টি একক উদ্ধৃতি) আপনাকে যেখানে ফিরে এসেছিল সেখানে gg=G''ইন্ডেন্টের পরে ফিরে যেতে হবে।
নিমো 157

@ আর্কিমিডিজ ট্রাজানো ম্যাক ওএসের স্টক ভিএম অনেক পুরানো, আমি হোমব্রুয়ের সংস্করণটি সুপারিশ করি; এটা অনেক নতুন। ম্যাকের ভিমে নিয়ে আমার কিছু বিরক্তিকর সমস্যা ছিল। এছাড়াও, আমি শুনেছি যে বিল্ট-ইনগুলির সাথে আপনার গণ্ডগোল করা উচিত নয়, তাই আপনি খুব যত্নবান না হলে এটিকে নিজে আপডেট করার চেষ্টা করবেন না।
অ্যালেক্সএমএ

126

টার্মিনালে আটকানোর আগে চেষ্টা করুন :set pasteএবং তারপরে :set nopasteআপনার কাজ শেষ হয়ে যাবে। এটি অটো-ইনডেন্ট, লাইন-মোড়ানো এবং অন্যান্য বৈশিষ্ট্যগুলি বন্ধ করবে যা আপনার পেস্টকে গোলমাল করছে।

সম্পাদনা: এছাড়াও, আমার এও উল্লেখ করা উচিত যে =সাধারণত বাইরের প্রোগ্রাম ব্যবহার করে ইনডেন্টিংয়ের চেয়ে অনেক ভাল ফলাফল পাওয়া যায়। উদাহরণস্বরূপ, আমি :%!perltidyসব সময় চালানো । astyle, cindentইত্যাদি ব্যবহার করা যেতে পারে। এবং, অবশ্যই, আপনি এগুলি কী স্ট্রোকের জন্য মানচিত্র করতে পারেন এবং ফাইলের ধরণের উপর নির্ভর করে বিভিন্নটিকে একই কীস্ট্রোকে মানচিত্র করতে পারেন।


5
আপনি কাস্টম কী বাইন্ডিংয়ের পরিবর্তে ইনডেন্টিংয়ের equalprgজন্য একটি বাহ্যিক ফিল্টার ব্যবহার করতে একটি ftplugin এ বিকল্পটি সেট করতে পারেন =
জোশ লি

একটি পেস্টটগল কী-বাইন্ডিং বিকল্প যেমন থেরেসও করে। : pt \ p মোডের মধ্যে ফ্লিপ করতে সেট করুন
মাইকেল

দ্রষ্টব্য: জিএমএমএল এর উইমকনফাইগে পেস্টটোগল কীটি এফ 11
টমাস

আমি formatpgmপরিপাটি এবং এস্টাইল দিয়ে ব্যবহার করি এবং তারপরে gq। এখানে আমার থেকে কয়েকটি উদাহরণ দেওয়া হয়েছে .vimrc: au FileType xml set fp=tidy\ -q\ -i\ -xmlএবংau FileType java set fp=/usr/local/bin/astyle\ --mode=java\ --indent=tab
রাফি খাতচাডোরিয়ান

এটি পড়ার পরে কেবল পার্লটিডি ডাউনলোড করা হয়েছে, এটি ডিফল্ট ভিএম অটো ইনডেন্টের চেয়ে অনেক বেশি ভাল
জোয়ে

29

আপনি যদি কোনও চির্ড টাইপ না করেই যে ব্লকটিতে রয়েছেন তা পুনরায় পাঠাতে চান, আপনি এটি করতে পারেন:

[[=]]

1
এটিকে পুনরুদ্ধার করার জন্য দুঃখিত, তবে তীরের দ্বারা আপনি কী বোঝাতে চেয়েছিলেন? Coords?
জন পি

7
"চির্ডস" এখানে একটি কী চেপে ধরে জারি করা আদেশগুলিকে বোঝায় যেখানে অন্যটি টিপানোর সময় বাদ্যযন্ত্রগুলির সাথে সাদৃশ্যতে এক সাথে একাধিক নোট শব্দ করা হয়েছিল। সুতরাং জি শিফট + জি, ^] সিটিআরএল +] এবং আরও অনেক কিছু। এগুলি একক-কী বাইন্ডিংয়ের চেয়ে টাইপ করতে বেশি সময় নেয়।
রাল্ফ গাইলস

আপনি এটি ব্যবহার করতে পারেন =aBযা কার্সারকে মোটেও সরবে না।
আমিন

7
নর্ডিক কীবোর্ডে [[=]]5 টি
কর্ড

29

সব কমান্ডের কর্তা

gg=G

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

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

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

=G

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

==

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

n==

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

4==

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

=%

17

আপনি এইচডিএমএল এবং এক্সএমএল ফাইলগুলি ইনডেন্ট করতে পরিপাটি অ্যাপ্লিকেশন / ইউটিলিটি ব্যবহার করতে পারেন এবং এই ফাইলগুলি ইনডেন্ট করার ক্ষেত্রে এটি বেশ ভাল কাজ করে।

একটি এক্সএমএল ফাইল সুন্দর করুন

:!tidy -mi -xml %

একটি HTML ফাইল সুন্দর করুন

:!tidy -mi -html %

16

এস্কেপ টিপুন এবং তারপরে নীচে কম্বিনেশনগুলি দ্রুত টাইপ করুন:

gg=G

28
আমি আস্তে আস্তে টাইপ করেছি, তারপরে যা ঘটেছিল তা আপনি বিশ্বাস করবেন না।
k0pernikus

আমি কেবল উত্তর এবং মন্তব্যে একটি উজ্জীবিত কারণ এটি অমূল্য ছিল! lol @ k0pernikus
চশমা

12

1G=G। এটি ফাইলের সমস্ত লাইন যুক্ত করতে হবে। 1Gআপনাকে প্রথম লাইন নিয়ে যায়, =স্বয়ং-ইনডেন্ট শুরু করবে এবং ফাইনাল Gআপনাকে ফাইলের শেষ লাইনটি নেবে।


বা এমনকি1gg=G
বিগবিবি

1 জি = জি এটি আমার জন্য স্থির করেছে। অসাধারণ!
নাটাস ড্র

8

:set pasteআপনার বন্ধু আমি পুট্টি ব্যবহার করি এবং উইন্ডোগুলির মধ্যে নকল কোডটি শেষ করি। আমার :set paste(এবং :set nopaste) অনুলিপি করার আগে অনুলিপি / আটকানো আমাকে সেই কারণে ফিট করে।


1
হ্যাঁ, আমি পুট্টিও ব্যবহার করছি। : সেট পেস্টটি দুর্দান্ত
এমএমসিডোল

7

ভিমে, ব্যবহার করুন :insert। এটি আপনার সমস্ত ফর্ম্যাটিং রাখবে এবং স্বয়ংক্রিয়ভাবে কাজ করবে না। আরও তথ্যের জন্য help :insert


7

আপনি যদি :set pasteমিডল ক্লিক ব্যবহার করতে না চান তবে আপনি set nopasteক্লিপবোর্ডের সামগ্রীটিও পেস্ট করতে পারেন:

"*p
"+p

এইভাবে আপনাকে স্বাভাবিক মোডটি ছাড়তে হবে না। আপনি যদি টেক্সট বাছাই করতে চান +বা *নির্ভর করে থাকেন তবে দেখুন :help quoteplus


4

ভিআইএম-অটোফর্ম্যাট আপনার সোর্স ফাইলগুলিকে আপনার ভাষার জন্য নির্দিষ্ট বাহ্যিক প্রোগ্রামগুলি ব্যবহার করে ফর্ম্যাট করে, যেমন জাবি স্ক্রিপ্টের জন্য রুবি ফাইলগুলির জন্য "উত্সাহিত" রত্ন, "জেএস-বিউটিফাই" এনপিএম প্যাকেজ।


3

জটিল সি ++ ফাইলগুলির জন্য ভিআইএম সর্বদা বিন্যাসের =ফিল্টার কমান্ড ব্যবহার করার সময় ফরম্যাটটি সঠিকভাবে পায় না । সুতরাং এই জাতীয় পরিস্থিতির জন্য অ্যাস্টাইলের (বা অস্বীকার না করা ) মতো বাহ্যিক সি ++ ফর্ম্যাটর ব্যবহার করা ভাল better

:%!astyle

ভিমের '=' ফাংশনটি ডিফল্টরূপে তার অভ্যন্তরীণ ফরম্যাটর ব্যবহার করে (যা সর্বদা জিনিস ঠিক হয়ে যায় না) তবে এ প্রশ্নের ক্ষেত্রে আলোচিত হিসাবে এটি যথাযথভাবে সেট করে এটি এস্টাইলের মতো একটি বাহ্যিক বিন্যাসক ব্যবহার করতে পারে ।



1

এটি করার জন্য আপনি একটি ম্যাপিং তৈরি করতে পারেন।

এইটি পুরো ফাইলটিকে স্বয়ংক্রিয়ভাবে প্রবেশ করবে এবং আপনার কার্সারটিকে আপনি যে অবস্থানে রাখবেন তারপরে:

nmap <leader>ai mzgg=G`z

0

Vi সম্পাদকের জন্য, ব্যবহার করুন: সন্নিবেশ করান। এটি আপনার সমস্ত ফর্ম্যাটিং রাখবে এবং স্ব-ইনডেন্টিং notোকাবে না O একবার প্রকৃত বিন্যাসকৃত ফাইলটি দেখার জন্য একবার পালাতে চাপুন অন্যথায় আপনি কিছু আবর্জনার অক্ষর দেখতে পাবেন। যেমন ^ আমি যেমন:

public static void main(String[] args) {
^I
^I System.out.println("Some Garbage printed upon using :insert"); 
}

0

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


আমি এড়াতে চাই। ভিজুয়াল মোডটি যখন আপনি নিজের গতি সম্পর্কে অনিশ্চিত হন, আপনি যদি কীভাবে অক্ষরের একটি সেট ক্যাপচার করতে জানেন তবে ভিজ্যুয়াল মোডে নেমে যাওয়ার অতিরিক্ত পদক্ষেপের কোনও মানে নেই। কেন ggvG=আপনি যখন পারেন gg=G। গতিটি দৃশ্যমান করার কী লাভ ছিল? এটি সমস্ত ক্রিয়াকলাপগুলির জন্য যা গতিপ্রবণ হয়।
অ্যালেক্সটস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.