การเรียงลำดับบรรทัดด้วยอักขระเน้นเสียง


9

เมื่อเรียงลำดับเส้นโดยsort-linesเส้นที่เริ่มต้นด้วยมาหลังจากสายที่เริ่มต้นด้วยä zมันจะดีถ้าบรรทัดสามารถเรียงลำดับโดยไม่ใส่เครื่องหมายเน้นเสียง Umlauts ฯลฯ เช่นในพจนานุกรม จะเป็นการดีที่เส้นเริ่มต้นด้วยควรจะมาหลังจากบรรทัดที่เริ่มต้นด้วยändernanderen

มีวิธีง่ายๆในการค้นหาอักขระที่เน้นเสียงที่กล่าวถึงในhttps://superuser.com/a/675172/แต่ไม่สามารถใช้งานได้ที่นี่ ฉันสงสัยว่าสามารถแก้ไขปัญหานี้ได้ในสถานการณ์นี้หรือไม่


1
FYI การพับและการจัดกลุ่มตามอักขระที่ขยายเพิ่มได้ถูกนำมาใช้ในisearchและquery-replaceในเวอร์ชั่นถัดไปของ emacs
ผู้ใช้ Emacs

คำตอบ:


5

ฉันใช้ฟังก์ชั่นนี้เพื่อสิ่งนั้น

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

แก้ไข: หากต้องการเรียงลำดับภูมิภาคหรือบัฟเฟอร์:

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

ขอบคุณสำหรับการแบ่งปัน! การเปลี่ยนชื่อเป็นmy-sort-lines-bufferอะไร หรือเขียนใหม่เพื่อ(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: ฉันแก้ไขโพสต์ด้วยข้อเสนอของคุณ
djangoliv

เมื่อรันสิ่งนี้ฉันได้รับข้อผิดพลาด 'LC_COLLATE' ไม่ได้รับการยอมรับว่าเป็นคำสั่งภายในหรือภายนอกหรือโปรแกรมที่ปฏิบัติการได้
ชื่อ

@Name บางทีคุณอาจใช้ Windows ขออภัยฟังก์ชั่นนี้ใช้งานได้กับ linux เท่านั้น ...
djangoliv
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.