如何按第二个字段(作者姓名)或第三个字段(发布日期)对以下缓冲区数据进行排序?我想要一个纯粹的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
答案 0 :(得分:2)
此功能使用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 :(得分:1)
这看起来非常像org-mode
表。你能在每行的开头和结尾添加一个|
吗?然后,您可以使用内置的org-sort
命令按列进行排序。如果 处于其他主要模式,则可以将orgtbl-mode
用作该区域的次要模式。