ভিমের জন্য অটো ইনডেন্ট / ফর্ম্যাট কোড?


35

আমি যখন পারি তখন আরও বেশি বেশি ব্যবহার করার চেষ্টা করছি। ভিট এবং অপ্টানার মতো একটি আইডিইয়ের মধ্যে আমার সবচেয়ে বড় আকর্ষণ হ'ল স্বয়ংক্রিয় ইনডেন্ট করার ক্ষমতা।

অটো ফর্ম্যাটিং কোডের কোনও উপায় কি আছে (এইচটিএমএল, সিএসএস, পিএইচপি) তাই এটি সঠিকভাবে ইন্টেন্টেড হয়?

যদি তাই হয় তবে আপনি কীভাবে এটি ভিএম-এ ইনস্টল করবেন? আমি প্লাগিন খুব বেশি বুঝতে পারি না। আমি এই থ্রেডটি পর্যালোচনা করার চেষ্টা করেছি এবং এটি আমাকে আরও বিভ্রান্ত করেছে: ভিএম অটো-ইনডেন্ট আচরণ কীভাবে পরিবর্তন করবেন?


আপনি কোন ভাষাটি ইনডেন্ট করার চেষ্টা করছেন তা স্পষ্ট করে বলতে পারেন? আমি আশা করব যে এটি ইতিমধ্যে ভিএম দ্বারা সমর্থিত হলে এটি ইতিমধ্যে আরও প্রচেষ্টা ছাড়াই স্বতঃ-ইনডেন্ট হওয়া উচিত। যদি তা না হয় তবে আপনার একটি প্লাগইন পাওয়া উচিত।
এডিড স্টিল

আদর্শভাবে এইচটিএমএল / সিএসএস এবং পিএইচপি
ক্রিসজলি

উত্তর:


54

পুরো ফাইলটি স্বয়ংক্রিয়ভাবে ইনডেন্ট করতে:

gg
=G

ব্যাখ্যা:

  • gg - ফাইলটির শুরুতে যান
  • G - ফাইলের শেষে যান
  • =- ইনডেন্ট

2
আপনি এটি ভেঙে দিতে পারেন? জি নিজে থেকে সাধারণত কি? এবং = জি?
খ্রিস্টলি

@ ক্রিস সম্পাদনাটি দেখুন
তাকেশিন

1
ভাল ইঙ্গিত, আমি এটি কখনই জানতাম না। তবে এটি বাশ দিয়ে একটি জঞ্জাল কাজ করে।
স্পারহাক

gg=Gফাইল না খোলায় শেল থেকে কীভাবে এক্সিকিউট করবেন ?
WM

@ টাকেশিন আপনি দয়া করে আরও বিস্তারিত ব্যাখ্যা করতে পারেন, আমাদের কি এটি ফাইলের মধ্যে টাইপ করতে হবে বা টার্মিনালে এটি চালানো দরকার
কাসুন সিয়ামম্বলাপিতিয়া

14

বিদ্যমান কোডটি অটো-ফর্ম্যাট করা সম্পর্কে আমি জানি না, তবে আপনি যদি কোডটি লিখছেন এবং যদি স্বয়ংক্রিয় ইনডেন্টের প্রয়োজন হয়:

  • :set autoindent(বা :set ai) স্বয়ংক্রিয় ইনডেন্ট চালু হবে
  • Ctrl- dআপনার কোডটি আন-ইনডেন্ট (একে একে আউটডেন্ট) করতে
  • ইনডেন্ট করতে ট্যাব বা স্পেস - আমি ব্যক্তিগতভাবে ট্যাব ব্যবহার করি
  • :set tabwidth=4(বা :set tw=4) কোনও ট্যাবে কোডটি ইনডেন্ট করতে হবে তা কতগুলি স্পেস নিয়ন্ত্রণ করবে
  • >>কমান্ড বর্তমান লাইন ইন্ডেন্ট হবে। যদি আপনি এটি একটি সংখ্যার দ্বারা উপসর্গ করেন তবে বলুন 4>>এটি বর্তমান লাইন দিয়ে শুরু করে 4 টি লাইন যুক্ত করবে।
  • তেমনি <<কমান্ডটি একটি লাইন আন-ইনডেন্ট করবে

আমি আশা করি এটি আপনাকে একটি ভাল সূচনা দেয়।


7
বিদ্যমান কোডটি স্বয়ংক্রিয়ভাবে ইনডেন্ট করতে ={motion}, সাধারণ মোডে ব্যবহার করুন - যেমন =Gবর্তমান লাইন থেকে ফাইলের শেষ পর্যন্ত সমস্ত কোড ইনডেন্ট করবে। ==বর্তমান লাইনটি ইনডেন্ট করবে।
এডিড স্টিল

1
এছাড়াও নিশ্চিত করুন যে ইনডেন্ট প্লাগইনগুলি লোড হচ্ছে (যেমন সহ :filetype indent on)
jw013

2
সেট tw = 4 টিএসটিউইউডিএইচথ 4 এ সেট করে
স্টিফেন রোলার

4

অটো ইনডেন্ট *.sh

কেবল নিম্নলিখিত লাইনগুলিতে যুক্ত করুন ~/.vimrc

filetype indent on
set smartindent
autocmd BufRead,BufWritePre *.sh normal gg=G

এটি কি কেবল ভিএম বা সমস্ত সম্পাদক সরঞ্জাম দিয়ে সম্পাদনা করার ক্ষেত্রে প্রযোজ্য?
WM

1
~./vimrcশুধুমাত্র ভিআইএম সম্পাদকের জন্য প্রযোজ্য।
রাহুল পাতিল

2

এই প্লাগইনটি আপনার কোডটিতে ফর্ম্যাট করা সহজ করে তোলে। এটি বাহ্যিক ফর্ম্যাটরগুলিকে সংহত করে এবং ভিমের ইনডেন্ট কার্যকারিতা নিয়ে ফলব্যাক রয়েছে।

https://github.com/Chiel92/vim-autoformat

এছাড়াও, বিন্যাসকরণ এবং ইনডেন্টিংয়ের মধ্যে পার্থক্যটি লক্ষ্য করুন। ইনডেন্টিং প্রতিটি লাইনের আগে কেবল শ্বেত স্থানকে সংশোধন করে, যখন ফর্ম্যাট করা অন্য যে কোনও বিষয় যেমন অপারেটরদের চারপাশে সাদা স্থান ইত্যাদির সাথেও ডিল করে while


2

~/.vimrcফাইলটি তৈরি / সম্পাদনা করুন এবং নিম্নলিখিত লাইনটি যুক্ত করুন:

set autoindent

2
এটি বিদ্যমান উত্তরের সাথে কিছুই যোগ করে না ...
জেসনওয়ারিয়ান

@ জেসনওয়ারিয়ান আসলে হাই ভুর উত্তরে উল্লেখ করেছে :set autoindentযা কেবলমাত্র বর্তমান ফাইলের জন্য স্বয়ংক্রিয় ইনডেন্ট সক্ষম করে। এটিকে .vimrcফাইলে যুক্ত করা স্থায়ীভাবে স্বয়ংক্রিয় ইনডেন্ট সক্ষম করে।
অক্ষত মহেশ্বরী

আপনার মন্তব্যের অংশটি ইতিমধ্যে রাহুলের জবাব দ্বারা উল্লিখিত হয়েছে, সুতরাং পোস্ট করার আগে ভাবেন
ইন্দ্রজিৎ গৌর

0

ব্যাশে আমি এটি করি:

source <(echo "Zibri () {";cat script_to_be_reindented.sh; echo "}")
declare -f Zibri| cut -c 5-|head --lines=-1|tail --lines=+3

এটি মন্তব্যগুলি মুছে ফেলে এবং "বাশ ওয়ে" স্ক্রিপ্টটিকে পুনরায় সরবরাহ করে। স্ক্রিপ্টে HEREDOCS থাকলে এটি কাজ করবে না তবে আপনি যদি এটি করেন:

source <(echo "Zibri () {";cat script_to_be_reindented.sh; echo "}")
declare -f Zibri|head --lines=-1|tail --lines=+3

এটি যে কোনও স্ক্রিপ্টের সাথে কাজ করবে তবে পুরো স্ক্রিপ্টটি 4 স্পেসে ইন্টেন্ট করবে। আপনার স্ক্রিপ্টে আমার নামটি উদ্ধৃত করে পোস্ট করুন নির্দ্বিধায়! : ডি


আমি বিশ্বাস করি যে এটি প্রশ্নের পয়েন্টটি মিস করতে পারে; লাইনের একটি সেট ইন্ডেন্টিংয়ের পরিবর্তে, আমি বিশ্বাস করি যে ওপি বিভিন্ন ভাষার জন্য ভিআইএম-র মধ্যে স্বয়ংক্রিয়ভাবে ইনডেন্ট করতে চেয়েছিল। একদিকে যেমন, আপনি sedযদি চান তবে এটি আরও কিছুটা সরাসরি অর্জন করতে সক্ষম হতে পারেন: cat script_to_be_reindented.sh | sed 's#^# #g'(এর, ভাল, এসও মার্কডাউনটি একটি ট্যাব দিয়ে ফাঁকা স্থানগুলি প্রতিস্থাপন করছে, তবে আপনি
বিষয়টিটি

0

ভিএম এর অটোফর্ম্যাট / ইনডেন্ট বেশ ভাল কাজ করে। প্রথমে আপনার এই লাইনটি লিখুন ~/.vimrc:

filetype plugin indent on

তারপরে ভিমে ফাইল খুলুন এবং টাইপ করুন gg=G

( ggকার্সারটিকে প্রথম লাইনে নিয়ে =যায় ind ইনডেন্ট কমান্ডটি চালায় ind Gএন্ডেন্ট কমান্ডকে এখান থেকে শেষ লাইনে চালানোর জন্য বলে)

যদি অটোফর্ম্যাটটি সত্যই খারাপ দেখাচ্ছে, যেমন প্রতিটি লাইনের ঠিক ইন্ডেন্টড রেখে দেওয়া হয়, তবে চালাও :scriptnamesএবং .../indent/html.vim(বা আপনি যে কোনও ভাষা ব্যবহার করছেন) তালিকায় রয়েছে কিনা তা পরীক্ষা করে দেখুন। যদি তা না হয় তবে নিশ্চিত হয়ে নিন যে আপনার ~/.vimrcসঠিক is অথবা আপনি যদি :filetype plugin indent onভিআইএম কমান্ড লাইন থেকে দৌড়ে যান তবে আপনাকে ফাইলটি পুনরায় খুলতে হবে:e

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