এক্সএমএল বাফারকে কীভাবে প্রিন্টাইফাই / ফর্ম্যাট করবেন?


17

আমার কাছে এক লাইনে এক্সএমএল সহ একটি ফাইল রয়েছে। এই বাফারটিকে কিছুটা ব্যবহারকারী-পঠনযোগ্য হিসাবে পুনরায় ফর্ম্যাট করতে ইতিমধ্যে কার্যকারিতা বিদ্যমান?


4
FWIW এই প্রশ্নের Stackoverflow উপর জিজ্ঞাসা করা হল, stackoverflow.com/questions/12492/...
YoungFrog

উত্তর:


24

এই বাফারটিকে কিছুটা ব্যবহারকারী-পঠনযোগ্য হিসাবে পুনরায় ফর্ম্যাট করতে ইতিমধ্যে কার্যকারিতা বিদ্যমান?

অবশ্যই, এবং আপনার কাছে প্রচুর বিকল্প রয়েছে। আমি সম্ভবত এটি ব্যবহার করে এটি কোনও বহিরাগত প্রোগ্রামগুলিতে খাওয়াতাম:

C-x h C-u M-| xmllint --format - RET

এই প্রোগ্রামের সাথে আসে libxml2। আপনি ব্যবহার করতে পারে tidy। কমান্ডলাইন এক্সএমএল ফর্ম্যাটিং সরঞ্জামগুলির একটি তালিকা এখানে রয়েছে: /programming/

আপনি একটি অনুসন্ধান এবং প্রতিস্থাপন এবং তারপরে ইনডেন্টও করতে পারেন:

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উপসর্গের কারণে ।
ফ্রেডরিকহেডম্যান

3
উত্তরের অর্থ ইম্যাকগুলি এটি করতে পারে না।
সের্গে কোস্টরকভক

13

অন্তর্নির্মিত sgml-mode এই কাজ করতে একটি কমান্ডটি রয়েছে: sgml-pretty-print। আপনি যদি এতে থাকেন nxml-modeতবে মনে হচ্ছে আপনার sgml-modeপ্রথমে স্যুইচ করা দরকার । অস্থায়ীভাবে এসএইচএমএল-মোডে স্যুইচ করতে, প্রিটি-প্রিন্ট চালাতে, আবার এনএক্সএমএল-মোডে ফিরে যেতে আপনি একটি আদেশ লিখতে পারেন।

উদাহরণস্বরূপ, এখানে একটি আদেশ রয়েছে যা এই অঞ্চলটি প্রিন্ট করবে, autoচ্ছিকভাবে স্বয়ংক্রিয়-পূরণ সক্ষম করে:

(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)))

7

এটি আপনার লিখুন ~/.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))))

ইম্যাকগুলি পুনরায় লোড করুন, তারপরে কেবল কল করুন M-x reformat-xml খারাপভাবে ফর্ম্যাট করা এক্সএমএল বাফারটি করুন।

উত্স: https://davidcapello.com/blog/emacs/reformat-xML-on-emacs/


0

উপরের উত্তরের ইঙ্গিতটি অনুসরণ করে এবং ধরে নিই যে আপনি 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আপনি বাফারটিকে পুনরায় ফর্ম্যাট করতে এক্সিকিউট করতে পারেন ।


0

আপনার এক্সএমএল চিহ্নিত করুন এবং করুন:

M-x sgml-pretty-print

অথবা পুরো বাফারটিকে প্রাকৃত করার জন্য চিহ্নিত অঞ্চল ছাড়াই কমান্ডটি চালান।

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