আমি কীভাবে ষষ্ঠটিতে এইচটিএমএল ফাইলের ইন্ডেন্টেশনটি পরিষ্কার করব?


130

আমি কীভাবে তার সমস্ত বিশাল এইচটিএমএল ফাইলের ইন্ডেন্টেশনটি ঠিক করব?

আমি স্বাভাবিক "gg=Gকমান্ডটি চেষ্টা করেছিলাম , যা আমি কোড ফাইলগুলির ইন্ডেন্টেশনটি ঠিক করতে ব্যবহার করি। তবে এটি HTML ফাইলগুলিতে ঠিক কাজ করবে বলে মনে হয় না। এটি কেবল সমস্ত ফর্ম্যাটিং সরিয়ে ফেলে।

আমি সেটিংস চেষ্টাও করেছিলাম :filetype = xml, এটি দেখার জন্য এটি কোনও এক্সএমএল ফাইল সাহায্য করবে কিনা তা ভ্রান্ত করার চেষ্টা করুন তবে এটি এখনও তা করেনি।

উত্তর:


91

সঙ্গে filetype indent onভিতরে আমার .vimrc, তেজ ইনডেন্ট এইচটিএমএল বেশ চমত্কারভাবে ফাইল।

shiftwidth2 এর একটি সহ সাধারণ উদাহরণ :

<html>
  <body>
    <p>
    text
    </p>
  </body>
</html>

15
এই প্রশ্নাবলীর এইচটিএমএল এইচটিএমএল ফাইলে অনুলিপি করুন। ভিআইএম দিয়ে খুলুন, "সেট স্মার্টিনডেন্ট" টাইপ করুন, তারপরে "জিজি = জি" এবং এটি ফাইলের ইনডেন্টিং ঠিক করে না।
এমএমসিডল

15
এটা আমার জন্য কাজ করে. সেট ft = html <cr> সেট করুন <সিআর> জিজি = জি <সিআর> c এই পৃষ্ঠাটি বেশ ভাল বিন্যাস করুন।
ডন রেবা

5
+1 যাচাই করেছে যে "ফাইল টাইপ ইন্ডেন্ট অন / অফ" ম্যাজিকটি চালু বা বন্ধ করে দেয়।
উইম কোয়েন 21

4
হ্যাঁ, স্মার্ট ইনডেন্ট সেট করার পরে, ফাইল টাইপ = এইচটিএমএল এবং এতে ফাইল টাইপ পরিচয় আমার পক্ষে কাজ করেছে।
এমএমসিডল 21

22
Chovy.com/web-de વિકાસment/fix-indentation-and-tabs-in-vim থেকে পাওয়া গেছে যে আমার সাথে ফাইলটি পুনরায় লোড করা দরকার: e ফাইল টাইপের ইনডেন্ট অন করার পরে।
মার্ক স্টোবার

189

এখানে বেশ কয়েকটি জিনিস রয়েছে যা সবার জন্য থাকা দরকার। কেবলমাত্র একটি স্থানে তাদের সমস্ত সংক্ষিপ্তসার জন্য:

নিম্নলিখিত বিকল্প সেট করুন:

:filetype indent on
:set filetype=html           # abbrev -  :set ft=html
:set smartindent             # abbrev -  :set si

তারপরে হয় কার্সারটি ফাইলের শীর্ষে সরান এবং শেষ gg =G
দিকে ইন্ডেন্ট করুন : বা পছন্দসই পাঠ্যটি নির্বাচন করতে পছন্দ করুন এবং =এটিতে ইন্ডেন্ট চাপুন ।


@ টাইরেল, ধন্যবাদ, তবে আমার জন্য কাজ করছে না .. এটি ফাইলের বিষয়বস্তু: পেস্টবিন . com/gagia8W2 । ফাইল বলা হয় home.html। .Php ফাইলগুলি ইনডেন্ট করতে আমার কোনও সমস্যা নেই। এখানে আপনার আমার
.vimrc

1
.Vimrc এ সেট করার কোনও উপায় আছে কি? আমি যখনই কোনও এইচটিএমএল ফাইল খুলি তখন এটি বলতে চাই না যে এটি একটি HTML ফাইল। জিজি, =, জি শর্টকাটের জন্য অনেক ধন্যবাদ। সত্যিই সহজ।
জাকিশাহীন

1
নোট যে vim 7.4ডিফল্ট খাঁজ সেটিংস হবে ব্যর্থ এই উদাহরণস্বরূপ, যেমন html, bodyএবং pডিফল্ট ভাবে ইন্ডেন্টযুক্ত নেই। এই উত্তর দেখুন ।
কোরি ক্লিন

2
smartindentপ্রয়োজনীয় নয় এছাড়াও এটি সি এবং সি ++ এর জন্য সুরযুক্ত, আমি তার autoindentপরিবর্তে আরও সাধারণ ব্যবহার পছন্দ করি ।
কোস

এটি vim7.4 এর সাথে দুর্দান্ত কাজ করে। @tylerl এই কনফিগারেশনটি এইচটিএমএল ফাইলগুলির স্থায়ীকরণের 7.4 কি কোনও উপায় আছে?
xaph

62

স্মার্ট ইন্ডেন্টেশন ব্যবহারের প্রধান সমস্যাটি হ'ল এক্সএমএল (বা এইচটিএমএল) কার্ল অনুরোধটি থেকে ফিরে এসে যদি কোনও লাইনে বসে থাকে তবে gg=Gকৌশলটি করবে না। পরিবর্তে আমি সবেমাত্র ষষ্ঠ থেকে কল করা পরিপাটি ব্যবহার করে একটি ভাল ইনডেন্টেশন পেয়েছি:

:!tidy -mi -xml -wrap 0 %

এটি মূলত ষষ্ঠকে একটি এক্সএমএল ফাইলটি ক্লিনআপ করতে পরিচ্ছন্নভাবে কল করতে বলে, ডিফল্ট 68 টি অক্ষরের প্রশস্ত লাইনে ফিট করে। আমি একটি বড় 29MB এক্সএমএল ফাইলটি প্রক্রিয়া করেছি এবং এটি 5 বা 6 সেকেন্ড সময় নিয়েছে। আমি অনুমান করি যে এইচটিএমএল ফাইলের জন্য আদেশটি হ'ল:

:!tidy -mi -html -wrap 0 %

মন্তব্যে উল্লিখিত হিসাবে, tidyএকটি প্রাথমিক সরঞ্জাম যা আপনি অনেকগুলি বেস লিনাক্স / ম্যাকওএস সিস্টেমে খুঁজে পেতে পারেন। আপনি যদি ইচ্ছা করেন তবে প্রজেক্টের পৃষ্ঠাটি এখানে নেই: এইচটিএমএল পরিপাটি


1
আমি বিশ্বাস করি না যে এইচটিএমএলটির প্রয়োজনীয়তা রয়েছে, কারণ এটি এইচটিএমএল
lsiebert

4
@ ইসিবার আপনার সাথে একমত তবে আমার ধারণা, এটি যুক্তি বোঝা আরও সহজ করে তোলে এবং কিছু লোক এটি ভাল অনুশীলন হিসাবে বিবেচনাও করতে পারে।
অস্কারস্কর

2
এফওয়াইআই, এইচটিএমএলে এসভিজি (যেমন, চার্ট ইত্যাদি) অন্তর্ভুক্ত থাকলে পরিপাটি চোকস।
অ্যালেক্স কুইন

1
হ্যাঁ, এইচটিএমএল কোডটি যদি একটি লাইনে থাকে তবে ভিম ইনডেন্ট কমান্ড কাজ করবে না!
উইসবাকি

অভিধানে একটি শব্দ ছাড়া আরও পরিপাটি কি? প্রকল্পের সাথে লিঙ্ক না করে এটি সম্পূর্ণ উত্তর নয়।
ব্রুনো ব্রোনোস্কি

49

যেমন টাইলার উপরে ব্যাখ্যা করে, নীচে সেট করুন:

:filetype indent on
:set filetype=html
:set smartindent

যাইহোক, নোট তেজ 7.4 এইচটিএমএল ট্যাগ যে html, head, body, এবং কিছু অন্যদের হয় না ডিফল্টরূপে ইন্ডেন্টযুক্ত। এইচটিএমএল ফাইলের প্রায় সমস্ত সামগ্রী সেই ট্যাগগুলির আওতায় আসে বলে এটি উপলব্ধি করে। আপনি যদি সত্যিই এটি করতে চান, আপনি সেই ট্যাগগুলিকে এরকমভাবে ইন্টেন্ট করাতে পারেন:

:let g:html_indent_inctags = "html,body,head,tbody" 

আরও তথ্যের জন্য " সংকলিত ভিম .4.৪, কোনও ধারণা? " এবং " বিকল্প এইচটিএমএল ইনডেন্ট স্ক্রিপ্ট " এ এইচটিএমএল ইনডেন্টিং কাজ করছে না দেখুন।


এই আমার বইয়ের বিজয়ী! উইন্ডোজে ভিম .4.৪ ব্যবহার করুন এবং এই কাজটি দুর্দান্তভাবে! : ডি
মাইকেল জে

12

এটি আমার সমাধান যা "কুরুচিপূর্ণ" এইচটিএমএলকে খুব সুন্দরভাবে ব্যবধানে খোলার জন্য সুন্দরভাবে কাজ করে:

vim fileIn.html -c "set sw=2 | %s/>/>\r/ | execute 'normal gg=G' | set nohlsearch | g/^\\s*\$/d"
  • swকমান্ড কারণ আমার ডিফল্ট 4, যা HTML- এর জন্য খুব বেশী হয়।
  • পরের অংশটি প্রতিটি উপাদান ( >) পরে একটি নতুন লাইন যুক্ত করেছে (ভিম মনে করে এটি একটি ক্যারেজ রিটার্ন, দীর্ঘশ্বাস) ফেলেছে)
  • তারপরে সম্পূর্ণ ফাইলটি পুনরায় প্রবেশ করুন =
  • তারপরে আনহাইটলাইট >(যেহেতু set hlsearchআমার ভিআরসিআরটিতে আছে)
  • তারপরে সমস্ত খালি / শ্বেতস্পেস-কেবল লাইনগুলি সরিয়ে ফেলুন (আরও তথ্যের জন্য " Vim খালি রেখাগুলি মুছুন " দেখুন, এটি খোলের মধ্যে রয়েছে বলে এটি ডাবল-পলায়নও রয়েছে)।

এমনকি | wq! fileOut.htmlআপনি ভিমে প্রবেশ করতে না চাইলে আপনি শেষটি যুক্ত করতে পারেন তবে কেবল ফাইলটি পরিষ্কার করুন।


ঝরঝরে সমাধান! আমি এটিকে সংশোধন করেছি :%s/>\s*/>\r/g( gবিশ্বব্যাপী প্রতিস্থাপনের জন্য একটি সংযুক্ত করেছি , এবং \s*শ্বেত স্থানটি অনুসরণ করার জন্য)। আমি :%s/</\r</gওপেন বন্ধনীটির আগে একটি নতুন লাইন যুক্ত করতে যুক্ত করেছি। অন্যথায় মত ট্যাগগুলি <td>foo</td>বিভক্ত হবে <td>এবং foo</td>
উইসবাকী

ফেয়ার পয়েন্ট, আমি গ্লোবাল রিপ্লেসটি ডিফল্টরূপে চালু করেছি যার কারণে এটি আমার সমাধানে নেই।
adam_0

7

আমি এই স্ক্রিপ্টটি ব্যবহার করি: https://github.com/maksimr/vim-jsbeautify

উপরের লিঙ্কে আপনার সমস্ত তথ্য রয়েছে:

  1. ইনস্টল করুন
  2. কনফিগার (প্রথম উদাহরণ থেকে অনুলিপি)
  3. চালান :call HtmlBeautify()

কাজটি কি সুন্দর করে!


3
হাহা, আপনি ভিএমএইচটিএমএল পরিষ্কার করার জন্য নোড + জেএস কেন ব্যবহার করতে চান, যা নোডের চেয়েও দীর্ঘকাল ধরে এই ক্ষমতাটি তৈরি করে রেখেছিল ... আমার মনকে
বিস্মিত করে

4

আপনি কি ভিএম সাইটে এইচটিএমএল ইন্ডেন্টেশন স্ক্রিপ্টটি ব্যবহার করার চেষ্টা করেছেন?


+1, আমি এটি দেখিনি। আমার যদি স্ক্রিপ্টটি চালানোর দরকার না হত তবে এটি দুর্দান্ত হবে তবে মনে হচ্ছে এটিই একমাত্র উপায়।
এমএমসিডল

এই স্ক্রিপ্টটি এখন অবচয় করা হয়েছে এবং ভিএম (যেমন /usr/share/vim/vim74/indent/html.vim) এর সাথে একটি নতুন সংস্করণ আসে । "2014 জুলাই 04: ভিম 7.4.356 বা তার পরে এই স্ক্রিপ্টের একজন বংশধরকে অন্তর্ভুক্ত করা হয়েছে (সরকারী স্ক্রিপ্টটি এখন ব্রাম দ্বারা রক্ষণাবেক্ষণ করা হয়েছে এবং এতে ব্যাপক পরিবর্তন রয়েছে)"
উইসবুকি

4

এখানে একটি ভারী ওজন সমাধান যা আপনাকে ইনডেন্টিং করে তোলে, সাথে সাথে আপনি সম্পাদনা করার সময় যে সমস্ত এইচটিএমএল প্রিটি-প্রিন্টিংয়ের যত্ন নেওয়ার প্রয়োজন নেই।

প্রথমে পরিপাটি ডাউনলোড করুন । আপনি আপনার পথে বাইনারি যুক্ত করেছেন তা নিশ্চিত করুন, যাতে আপনি যে কোনও অবস্থান থেকে কল করতে পারেন।

এর পরে, আপনার পছন্দসই এইচটিএমএল স্বাদ বর্ণনা করে একটি কনফিগার ফাইল তৈরি করুন। ডকুমেন্টেশন পরিপাটি করার জন্য দুর্দান্ত নয়, তবে এখানে একটি ওভারভিউ এবং সমস্ত বিকল্পের একটি তালিকা । আমার কনফিগারেশন ফাইলটি এখানে:

bare: yes
break-before-br: no
clean: yes
drop-proprietary-attributes: yes
fix-uri: yes
indent-spaces: 4
indent: yes
logical-emphasis: yes
markup: yes
output-xhtml: yes
quiet: yes
quote-marks: yes
replace-color: yes
tab-size: 4
uppercase-tags: no
vertical-space: yes
word-2000: yes
wrap: 0

হিসাবে এটি সংরক্ষণ tidyrc_html.txtআপনার ftplugin(vimfiles অধীনে) ফোল্ডার।

আরও একটি ফাইল: নিম্নলিখিত লাইন যোগ (অথবা তৈরি করুন) html.vim, এছাড়াও মধ্যে ftplugin:

map <leader>tidy :%! tidy -config ~/vimfiles/ftplugin/tidyrc_html.txt <CR>

এটি ব্যবহার করতে, কেবল একটি HTML ফাইল খুলুন এবং টাইপ করুন /tidy। (এই /হল <leader>কী।)

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


2

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


0

আমি সাধারন "gg = G" কমান্ড চেষ্টা করেছিলাম, যা কোড ফাইলের ইনডেন্টেশন ঠিক করতে আমি ব্যবহার করি। তবে এটি HTML ফাইলগুলিতে ঠিক কাজ করবে বলে মনে হয় না। এটি কেবল সমস্ত ফর্ম্যাটিং সরিয়ে ফেলে।

যদি ভিমের অটোফর্ম্যাট / ইনডেন্ট হয় gg=G "ভাঙা" মনে হয় (যেমন প্রতিটি লাইনে বাম ইনডেন্টিং থাকে) তবে সম্ভবত ইনডেন্ট প্লাগইন সক্ষম / লোড করা যায় না। এটি কেবল খারাপ ইনডেন্টিংয়ের পরিবর্তে সত্যই একটি ত্রুটি বার্তা দেওয়া উচিত, অন্যথায় ব্যবহারকারীরা কেবল অটোফর্ম্যাট / ইনডেন্টিং বৈশিষ্ট্যটি ভয়াবহ মনে করেন, যখন এটি আসলে বেশ ভাল।

ইনডেন্ট প্লাগইন সক্ষম / লোড হয়েছে কিনা তা পরীক্ষা করতে, চালান :scriptnames.../indent/html.vimতালিকায় আছে কিনা দেখুন । যদি তা না হয় তবে তার মানে প্লাগইনটি লোড হয়নি। সেক্ষেত্রে এই লাইনটি যুক্ত করুন ~/.vimrc:

filetype plugin indent on

এখন আপনি যদি ফাইলটি খোলেন এবং চালনা করেন তবে :scriptnamesআপনার দেখা উচিত .../indent/html.vim। তারপরে রান করুন gg=G, যা এখন সঠিক অটোফর্ম্যাট / ইনডেন্ট করা উচিত। (যদিও এটি নতুন লাইনগুলি যুক্ত করবে না, সুতরাং সমস্ত এইচটিএমএল কোড যদি একটি লাইনে থাকে তবে এটি যুক্ত হবে না)।

দ্রষ্টব্য: আপনি যদি :filetype plugin indent onভিএম কমান্ড লাইনের পরিবর্তে চলতে থাকেন তবে ~/.vimrcআপনাকে অবশ্যই ফাইলটি পুনরায় খুলতে হবে :e

এছাড়াও, আপনার সম্পর্কে autoindentএবং smartindentসেটিংস সম্পর্কে চিন্তা করার দরকার নেই , তারা এটির জন্য প্রাসঙ্গিক নয়।

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