Sắp xếp các dòng có ký tự có dấu


9

Khi sắp xếp các dòng theo sort-linescác dòng bắt đầu bằng äsau các dòng bắt đầu bằng z. Sẽ thật tuyệt nếu các dòng có thể được sắp xếp bỏ qua các dấu, Umlauts, v.v., như trong từ điển. Lý tưởng nhất là một dòng bắt đầu với ändernnên được đến sau một dòng bắt đầu với anderen.

Có một giải pháp đơn giản để tìm kiếm các ký tự có dấu được đề cập trong https://superuser.com/a/675172/ nhưng không thể được sử dụng ở đây. Tôi tự hỏi nếu giải pháp đó có thể được thích nghi trong tình huống này.


1
FYI, gấp và nhóm dựa trên các ký tự mở rộng đã được thực hiện trong isearchquery-replacetrong phiên bản tiếp theo của emacs.
Người dùng Emacs

Câu trả lời:


5

Tôi sử dụng chức năng này cho điều đó

(defun my-sort-lines ()
    (interactive)
    (shell-command-on-region (point-min) (point-max) "LC_COLLATE=en_US.UTF-8 sort" (buffer-name) t ))

EDIT: Để sắp xếp vùng hoặc bộ đệm:

  (defun my-sort-lines-buffer ()
    (interactive)
    (shell-command-on-region (point-min) (point-max) "LC_COLLATE=en_US.UTF-8 sort" (buffer-name) t ))
  (defun my-sort-lines-region (start end) 
    (interactive "r") 
    (shell-command-on-region start end "LC_COLLATE=en_US.UTF-8 sort" (buffer-name) t))
  (defun my-sort-lines-region-or-buffer ()
    (interactive)
    (save-excursion
      (if (region-active-p)
          (progn
            (my-sort-lines-region (region-beginning) (region-end))
            (message "Sorted selected region"))
        (progn
          (my-sort-lines-buffer)
          (message "Sorted buffer")))))

Cám ơn vì đã chia sẻ! Còn đổi tên thành my-sort-lines-buffergì? Hoặc viết lại (defun my-sort-lines (start end) (interactive "r") (shell-command-on-region start end "LC_COLLATE=en_US.UTF-8 sort" (buffer-name) t))?
Marco Wahl

@Marco Wahl: Tôi chỉnh sửa bài viết của mình với đề xuất của bạn.
djangoliv

Khi chạy này, tôi gặp lỗi 'LC_COLLATE' không được nhận dạng là lệnh bên trong hoặc bên ngoài cũng không phải là chương trình thực thi.
Tên

@ Tên Có lẽ bạn đang ở trên Windows. Xin lỗi, chức năng này chỉ hoạt động trên linux ...
djangoliv
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.