2012-07-25 11 views
11

मैं सही रूप से फ़ॉर्मेट xml फ़ाइल, और एक जवाब यहाँ के रूप में दिया आदेश के बाद है:विम एक्सएमएल के साथ जी gg का उपयोग कर स्वरूपण =

How can I autoformat/indent C code in vim?

मैं ऑटो मांगपत्र करने के लिए सही नेस्टिंग प्रदर्शित करने के लिए मेरी फाइल कोशिश कर रहा हूँ ।

इससे पहले कि मैं इस आदेश का उपयोग करने के लिए मैं फ़ाइल मैं .mm का ही विस्तार है के साथ शुरू के रूप में :set ft=xml का उपयोग कर XML करने के लिए फ़ाइल प्रकार निर्धारित करते हैं, और यह भी :set nowrap की कोशिश की।

syntax on 
set history=1000 
set smartindent 
set tabstop=2 
set shiftwidth=2 
set expandtab 

कैसे आते हैं जब मैं gg=G जारी, मैं एक संदेश 54 lines indented कह मिलता है, अभी तक मेरी फाइल अन-नेस्ट रहता है:

यहाँ मेरी ~/.vimrc फ़ाइल है?

+1

कोई सीधा जवाब नहीं है, लेकिन क्या आपने [xmllint] (http://xmlsoft.org/xmllint.html) --format की कोशिश की है? – ephemient

+0

नहीं, मेरे पास नहीं है, मुझे वास्तव में इस समय फ़ाइल स्वरूपित करने की निहित आवश्यकता नहीं है - मैं वास्तव में इस कारण की तलाश कर रहा हूं कि यह आदेश ऐसा नहीं कर रहा है जिसे मैं उम्मीद करता हूं। फिर भी सुझाव के लिए धन्यवाद। – grimetime

उत्तर

19

मामले में आप विम के अपने एक्सएमएल indenter बात की कोशिश करना चाहते हैं, आप कर सकते हैं ...

:filetype indent on   (load indent files for specific file types etc.) 
:e       (to reload the current buffer) 

इस $ VIMRUNTIME/मांगपत्र/xml पर vimscript लोड होगा: यहाँ अपने फ़ॉर्मेटर रूप xmllint स्थापित करने के लिए एक गाइड है .vim

फिर जब आप

:set indentexpr?   

करना ... यह कहूँगा indentexpr = XmlIndentGet (v: lnum, 1)

,210

~~

xmllint बेहतर हालांकि, देखना है ... http://vim.wikia.com/wiki/VimTip349

मैं अपने .vimrc में इसके लिए इस तरह काम की बाइंडिंग है!

" one or more lines: 
vmap ,px !xmllint --format -<CR> 

" pretty-print current line 
nmap ,px !!xmllint --format -<CR> 
+1

मुझे उत्सुकता है कि आपको लगता है कि xmllint बेहतर क्यों है। मेरे अनुभव में, यह रिक्त न्यूलाइन और टिप्पणियों को छीनने में अत्यधिक आक्रामक है, जबकि विम का अंतर्निर्मित एक्सएमएल इंडेंटर _only_ अपेक्षित रूप से अग्रणी व्हाइटस्पेस को इंडेंट करता है। रुचि रखने वालों के लिए एक तरफ के रूप में: मुझे टिमप के [vim-sensible] (https://github.com/tpope/vim-sensible) को अपनाए जाने तक, विम के अंतर्निहित एक्सएमएल फॉर्मेटर को काम करने में बहुत परेशानी थी, डिफॉल्ट, जिस बिंदु पर सब कुछ "बस काम करता है" जिसमें विम के बराबर (=) ऑपरेटर शामिल हैं। Http://stackoverflow.com/a/28365920/1207769 भी देखें – ctrueden

5

टाइप करने का प्रयास करें: :set equalprg?। यदि यह equalprg= कहता है तो इसका मतलब है कि आपके पास xml इंडेंटेशन के लिए प्रोग्राम सेट नहीं है, इसलिए शायद यह कुछ गूंगा डिफ़ॉल्ट क्रिया कर रहा है। http://ku1ik.com/2011/09/08/formatting-xml-in-vim-with-indent-command.html

+0

धन्यवाद! यह बहुत अच्छा काम किया। मैं [डेरेक व्याट के विम स्क्रीनकास्ट] में से एक देख रहा था (http://vimeo.com/15443936) और बस यह मान लिया कि विम जानता है कि एक्सएमएल को अपने आप कैसे घोंसला करना है। – grimetime

+2

एक फॉर्मेटर के रूप में xmllint की स्थापना पर गाइड के लिए महान संदर्भ। एक्सएमएल स्वरूपण एक बहुत ही व्यक्तिगत चीज हो सकता है ... उदाहरण के लिए, आप सभी स्थितियों में प्रत्येक टैग को इंडेंट नहीं करना चाहते हैं या आप लंबे टेक्स्ट() नोड्स के लिए टेक्स्ट रैपिंग चाहते हैं। तो xmllint का विकल्प [xmlformat] हो सकता है (http://www.kitebird.com/software/xmlformat/)! – darcyparker

संबंधित मुद्दे