Сортировка строк буфера по полю - PullRequest
1 голос
/ 22 января 2010

Как можно отсортировать следующие данные буфера по второму полю (имя автора) или третьему полю (дата публикации)? Я хотел бы получить чистое решение elisp, поэтому я бы предпочел, чтобы у меня не было решения, использующего M- |

Tom Sawyer|Mark Twain|1876
Harry Potter and the Philosopher's Stone|JK Rowling|1997
Harry Potter and the Half-Blood Prince|JK Rowling|2009
The Da Vinci Code|Dan Brown|2003
A Short History of Nearly Everything|Bill Bryson|2003

Ответы [ 2 ]

2 голосов
/ 23 января 2010

Эта функция использует sort-regexp-fields для выполнения работы:

(defun my-sort-fields (n)
  "Sort lines by | delimted fields"
  (interactive "nWhich field: ")
  (sort-regexp-fields nil
                      (format "^\\([^|]*|\\)\\{%d\\}\\([^|\n]*\\)\\(|[^|\n]*\\)*$" (- n 1))
                      (format "\\2" )
                      (point-min)
                      (point-max)))
1 голос
/ 22 января 2010

Это выглядит как таблица org-mode. Можете ли вы просто добавить | в начало и конец каждой строки? Затем вы можете использовать встроенную команду org-sort для сортировки по столбцу. Если у вас есть для перехода в другой основной режим, вы можете использовать orgtbl-mode в качестве вспомогательного режима только для этого региона.

...