2012-04-03 12 views
18

में प्रारूप और इंडेंट एचटीएमएल में वर्तमान में एक विशाल HTML फ़ाइल है जिसमें लाइन ब्रेक नहीं है और केवल एक पंक्ति में दिखाई देता है।विम

मैं इसे vim (विशेष रूप से macvim) में प्रारूपित करना चाहता हूं। मैंने निम्नलिखित विकल्पों का प्रयास किया, लेकिन उनमें से कोई भी मेरे लिए काम नहीं कर पाया है।

  • टेक्स्ट और दबाए गए =। यह केवल ऑटो को कोड का इरादा रखेगा। लेकिन चूंकि पूरा कोड एक पंक्ति में मौजूद है, यह कुछ भी नहीं करता है
  • मैंने इस प्लगइन http://www.vim.org/scripts/script.php?script_id=3613 इस प्रकार के काम करने की कोशिश की लेकिन केवल वर्तमान टैग के लिए लाइनब्रैक डालेंगे। मैं पूरी फ़ाइल को स्वरूपित करना चाहता हूं

क्या प्लगइन का उपयोग करके या तो ऐसा करने का कोई तरीका है?

धन्यवाद!

+2

संभव डुप्लिकेट [मैं VI में एक HTML फ़ाइल के इंडेंटेशन को कैसे साफ कर सकता हूं?] (Http://stackoverflow.com/questions/815548/how-do-i-tidy-up-an-html-files-indentation -in-vi) –

उत्तर

37

इसे शुरू करने का एक तरीका है सभी टैग को अपनी लाइनों पर विभाजित करना।

:s/<[^>]*>/\r&\r/g 
:g/^$/d 

आप अस्थायी है < या > प्रतीकों (जैसे अवैध HTML, जावास्क्रिप्ट तुलना ऑपरेटरों, सीएसएस प्रत्यक्ष वंशज चयनकर्ता हिस्सा), इस ठीक से काम नहीं करेगा और तुम सिर्फ अंत टैग कर की तरह कुछ करने के लिए स्विच कर सकते हैं - <\/[^>]*> । यह वैसे भी एक ठोस शुरुआत प्रदान करता है।

प्रदर्शन:

इस तरह एक आर्दश दस्तावेज़ के साथ

,

<!DOCTYPE html><html><head><title>hello</title></head><body>world</body></html> 

यह इस का उत्पादन:

<!DOCTYPE html> 
<html> 
<head> 
<title> 
hello 
</title> 
</head> 
<body> 
world 
</body> 
</html> 

फिर, = का उत्पादन करेगा आप क्या चाहते हैं:

<!DOCTYPE html> 
<html> 
    <head> 
     <title> 
      hello 
     </title> 
    </head> 
    <body> 
     world 
    </body> 
</html> 
+0

मुझे आपका दृष्टिकोण पसंद है। लेकिन एक समस्या है। आदेश ': s/<[^>] *>/\ r & \ r/g' डालिये केवल नई पंक्ति में पहला टैग है। क्या इसे बार-बार चलाने के लिए संभव है? – Sudar

+0

मुझे लगता है कि आपने अंत में '/ g' छोड़ा था। –

+0

नहीं, मैंने अंत में/g को नहीं छोड़ा है। मुझे लगता है कि पहले प्रतिस्थापन के बाद लाइन गिनती बदलती है क्योंकि यह जारी नहीं है। मैंने नमूना एचटीएमएल पर भी कोशिश की है कि आपके पास – Sudar

0

साफ उपयोगिता, as described in this answer का उपयोग करना बेहतर होगा।

अच्छा उपकरण पहले से ही इस काम

+0

दुर्भाग्य से, tidy _not_ को प्रत्येक टैग को एक नई पंक्ति पर नहीं डालता है, न ही इसे करने के लिए इसे कॉन्फ़िगर किया जा सकता है। उदाहरण के लिए, '' को विभाजित नहीं किया जाएगा (लेकिन वास्तव में, मूल दस्तावेज़ में विभाजित होने पर, संघनित हो जाएगा)। – cemper93

+0

सिद्धांत रूप में यह बहुत अच्छा है, लेकिन व्यावहारिक रूप से ऐसे कई HTML सत्यापन मुद्दे हैं जिन पर आपको शायद सामना करना पड़ेगा। अपने बेस के रूप में टिडी का उपयोग करना अभी भी सही रास्ते की तरह गंध करता है। वहां से स्वरूपण और इंडेंटेशन। –

3

के लिए लिखा गया है बेहतर परिणाम के लिए, आप विशेष बाहरी प्रारूप प्रोग्राम का उपयोग करना चाहिए।

आप tidy और html-beautify दोनों प्लगइन vim-autoformat इंस्टॉल करके स्वचालित रूप से एकीकृत कर सकते हैं। उसके बाद, आप एक ही कीस्ट्रोक के साथ जो भी फॉर्मेटर स्थापित किया जा सकता है उसे निष्पादित कर सकते हैं।

+0

मैं इन दिनों उल्लेख किए गए विम-ऑटोफॉर्मेट एडन का उपयोग कर रहा हूं। – Sudar