जवाबों:
क्या कार्यक्षमता पहले से ही इस बफ़र को पुन: स्वरूपित करने के लिए मौजूद है कुछ हद तक उपयोगकर्ता-पठनीय है?
बेशक, और आपके पास बहुत सारे विकल्प हैं। मैं शायद इसे किसी बाहरी कार्यक्रम का उपयोग करके खिलाऊंगा:
C-x h C-u M-| xmllint --format - RET
इस कार्यक्रम के साथ आता है libxml2
। आप भी इस्तेमाल कर सकते हैं tidy
। यहाँ कमांडलाइन xml फ़ॉर्मेटिंग टूल की सूची दी गई है: /programming/16090869/how-to-pretty-print-xml-from-the-command-line
आप एक खोज और प्रतिस्थापित कर सकते हैं और फिर इंडेंट कर सकते हैं:
M-% > < RET > C-q C-j < RET ! C-M-\
साफ चाल: आप कॉपी और में ऊपर स्ट्रिंग पेस्ट कर सकते हैं M-:
( eval-expression
इस तरह):
(execute-kbd-macro (kbd "M-% > < RET > C-q C-j < RET ! C-M-\\"))
C-u
उपसर्ग के कारण है।
अंतर्निहित sgml-mode
यह करने के लिए एक कमांड है sgml-pretty-print
:। यदि आप इसमें हैं तो nxml-mode
ऐसा लगता है कि आपको sgml-mode
पहले स्विच की आवश्यकता है । आप अस्थायी रूप से sgml-mode पर स्विच करने के लिए एक कमांड लिख सकते हैं, सुंदर-प्रिंट चला सकते हैं, फिर nxml-mode पर वापस आ सकते हैं।
उदाहरण के लिए, यहां एक कमांड है जो इस क्षेत्र को सुंदर रूप से प्रिंट करेगा, वैकल्पिक रूप से ऑटो-फिल सक्षम के साथ:
(defun xml-pretty-print (beg end &optional arg)
"Reformat the region between BEG and END.
With optional ARG, also auto-fill."
(interactive "*r\nP")
(let ((fill (or (bound-and-true-p auto-fill-function) -1)))
(sgml-mode)
(when arg (auto-fill-mode))
(sgml-pretty-print beg end)
(nxml-mode)
(auto-fill-mode fill)))
इसे अपने में लिखें ~/.emacs.d/init.el
:
(require 'sgml-mode)
(defun ninrod/reformat-xml ()
(interactive)
(save-excursion
(sgml-pretty-print (point-min) (point-max))
(indent-region (point-min) (point-max))))
emacs को पुनः लोड करें, फिर बस M-x reformat-xml
बुरी तरह से स्वरूपित xml बफर पर कॉल करें ।
स्रोत: https://davidcapello.com/blog/emacs/reformat-xml-on-emacs/
उपरोक्त उत्तर के संकेत के बाद, और मान लें कि आपने tidy
एक भिन्नता स्थापित की है:
`C-x h M-| tidy -quiet -xml -utf8 -indent -`
यह बफर *Shell Command Output*
की सामग्री को सीधे बदलने के बजाय एक नया बफर खोलेगा । परिणाम की जांच करने के बाद, पुरानी सामग्री को नए के साथ बदलें:
C-x h M-insert-buffer
सुझाए गए डिफ़ॉल्ट को चुनें जो संभवतः होगा *Shell Command Output*
। आप बाद में कीबोर्ड मैक्रो के साथ कमांड को बचा सकते हैं:
C-x ( C-x h M-| tidy -quiet -xml -utf8 -indent - C-x)
C-x C-k n pretty-xml
इसके साथ आप M-x pretty-xml
बफर को पुन: स्वरूपित करने के लिए निष्पादित कर सकते हैं ।