Câu trả lời:
Liệu các chức năng đã tồn tại để định dạng lại bộ đệm này để người dùng có thể đọc được?
Tất nhiên, và bạn có rất nhiều lựa chọn. Tôi có thể cung cấp nó cho một chương trình bên ngoài bằng cách sử dụng:
C-x h C-u M-| xmllint --format - RET
Chương trình này đi kèm libxml2
. Bạn cũng có thể sử dụng tidy
. Dưới đây là danh sách các công cụ định dạng xml dòng lệnh: /programming/16090869/how-to-pretty-print-xml-from-the-command-line
Bạn cũng có thể thực hiện tìm kiếm và thay thế và sau đó thụt lề:
M-% > < RET > C-q C-j < RET ! C-M-\
Thủ thuật gọn gàng: bạn có thể sao chép và dán chuỗi trên vào M-:
( eval-expression
) như thế này:
(execute-kbd-macro (kbd "M-% > < RET > C-q C-j < RET ! C-M-\\"))
C-u
tiền tố.
Tích hợp sẵn sgml-mode
có một lệnh để làm điều này : sgml-pretty-print
. Nếu bạn đang ở trong nxml-mode
đó, có vẻ như bạn cần chuyển sang sgml-mode
đầu tiên. Bạn có thể viết một lệnh để tạm thời chuyển sang chế độ sgml, chạy bản in đẹp, sau đó chuyển về chế độ nxml.
Ví dụ, đây là một lệnh sẽ in đẹp khu vực, tùy chọn có bật tự động điền:
(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)))
viết cái này vào ~/.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))))
tải lại emacs, sau đó chỉ cần gọi M-x reformat-xml
vào bộ đệm xml được định dạng sai.
nguồn: https://davidcapello.com/blog/emacs/reformat-xml-on-emacs/
Theo gợi ý của câu trả lời ở trên và giả sử bạn đã tidy
cài đặt một biến thể có thể là:
`C-x h M-| tidy -quiet -xml -utf8 -indent -`
Điều này sẽ mở một bộ đệm mới *Shell Command Output*
thay vì trực tiếp thay thế nội dung của bộ đệm. Sau khi kiểm tra kết quả, thay thế nội dung cũ bằng nội dung mới bằng:
C-x h M-insert-buffer
chọn mặc định đề xuất có thể sẽ được *Shell Command Output*
. Bạn có thể lưu lệnh để sử dụng sau này bằng macro bàn phím:
C-x ( C-x h M-| tidy -quiet -xml -utf8 -indent - C-x)
C-x C-k n pretty-xml
Với điều này, bạn có thể thực hiện M-x pretty-xml
để định dạng lại bộ đệm.