アクセント付き文字で行をソートする


9

sort-lines始まる行で行をソートすると、でä始まる行の後に来るz。辞書のように、アクセント、ウムラウトなどを無視して行をソートできると便利です。で始まる行は、で始まる行のändern後に来るのが理想的anderenです。

https://superuser.com/a/675172/で言及されているアクセント付き文字を検索する簡単な方法がありますが、ここでは使用できません。私はその解決策がこの状況に適応できるかどうか疑問に思っています。


1
FYI、折りたたみとで実装されている拡張文字に基づいてグループ化isearchし、query-replaceemacsの次のバージョンで。
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、2015

@Marco Wahl:私はあなたの提案で私の投稿を編集します。
djangoliv 2015

これを実行すると、エラー「LC_COLLATE」が内部コマンドまたは外部コマンドとしても、実行可能プログラムとしても認識されません。
名前

@名前たぶんあなたはWindowsを使っています。この関数はLinuxでのみ機能します...
djangoliv
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.