【发布时间】:2010-01-24 00:55:59
【问题描述】:
如何按第二个字段(作者姓名)或第三个字段(发布日期)对以下缓冲区数据进行排序?我想要一个纯 elisp 解决方案,所以我宁愿没有使用 M-| 的解决方案。
汤姆索亚|马克吐温|1876 哈利波特与魔法石|JK罗琳|1997 哈利波特与混血王子|JK罗琳|2009 达芬奇密码|丹布朗|2003 几乎所有事物的简史|比尔布赖森|2003【问题讨论】:
标签: elisp
如何按第二个字段(作者姓名)或第三个字段(发布日期)对以下缓冲区数据进行排序?我想要一个纯 elisp 解决方案,所以我宁愿没有使用 M-| 的解决方案。
汤姆索亚|马克吐温|1876 哈利波特与魔法石|JK罗琳|1997 哈利波特与混血王子|JK罗琳|2009 达芬奇密码|丹布朗|2003 几乎所有事物的简史|比尔布赖森|2003【问题讨论】:
标签: elisp
这个函数使用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)))
【讨论】:
这看起来很像org-mode 表。您可以在每行的开头和结尾添加一个| 吗?然后您可以使用内置的org-sort 命令按列排序。如果您必须处于另一个主要模式,您可以使用orgtbl-mode 作为该区域的次要模式。
【讨论】: