Zeilen mit Akzentzeichen sortieren


9

Beim Sortieren der Zeilen nach sort-linesden Zeilen, die mit beginnen, äfolgt nach den Zeilen, die mit beginnen z. Es wäre schön, wenn die Zeilen sortiert werden könnten, ohne die Akzente, Umlaute usw. zu beachten, wie in einem Wörterbuch. Idealerweise sollte eine Zeile, die mit beginnt ändern, nach einer Zeile stehen, die mit beginnt anderen.

Es gibt eine einfache Lösung für die Suche nach Zeichen mit Akzent, die unter https://superuser.com/a/675172/ erwähnt wird, aber hier nicht verwendet werden kann. Ich frage mich, ob diese Lösung in dieser Situation angepasst werden kann.


1
Zu Ihrer Information, Falten und Gruppieren basierend auf erweiterten Zeichen wurde in isearchund query-replacein der nächsten Version von Emacs implementiert .
Emacs User

Antworten:


5

Ich benutze diese Funktion dafür

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

BEARBEITEN: So sortieren Sie Region oder Puffer:

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

Danke für das Teilen! Was ist mit Umbenennen in my-sort-lines-buffer? Oder umschreiben (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: Ich bearbeite meinen Beitrag mit Ihrem Vorschlag.
Djangoliv

Wenn ich dies ausführe, erhalte ich den Fehler 'LC_COLLATE' wird weder als interner oder externer Befehl noch als ausführbares Programm erkannt.
Name

@Name Vielleicht bist du unter Windows. Sorry, diese Funktion funktioniert nur unter Linux ...
Djangoliv
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.