sorting - 根据自定义比较器对 emacs dired 缓冲区进行排序

原文 标签 sorting emacs elisp dired

dired 似乎没有提供一个接口(interface)来根据任意比较器函数对文件/文件夹进行排序。 (默认情况下,它只允许按名称和日期排序)。

我一直在研究源代码以确定这种排序的机制,我发现它是对 (revert-buffer) 的调用。在 dired-sort-toggle (在 dired.el 中)进行重新显示。这让我意识到 dired 只是运行带有某些开关的 ls 命令,然后将输出读入缓冲区。

有没有比将 dired 的 ls 函数指向自定义排序更好的方法来实现这种自定义排序?我觉得可能有一个变量在 dired 缓冲区中保存文件/目录的有序列表,我可能会重新安排它。

我找到了变量 dired-subdir-alist ,但这似乎只包含顶级目录(即使根据文档,这似乎正是我想要的列表)

dired-subdir-alist is a variable defined in `dired.el'. Documentation: Association list of subdirectories and their buffer positions. Each subdirectory has an element: (DIRNAME . STARTMARKER). The order of elements is the reverse of the order in the buffer. In simple cases, this list contains one element.



我怎么能找到这样的变量?

最佳答案

你的理解是正确的。而且,正如@Stefan 所说,ls-lisp.el提供了一些灵 active 。

另见图书馆Dired Sort Menu , 至少提供了更多 ls可能性并让您组合排序顺序。 (但是,它不允许您提供任意的排序顺序——为此,请参阅 ls-lisp.el。)

关于sorting - 根据自定义比较器对 emacs dired 缓冲区进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18784708/

相关文章:

git - 直接从 Emacs 创建 pull 请求

emacs - 如何在组织模式下关闭公司模式?

javascript - 通过作为字符串传递的 "grand.child.property"对对象数组进行排序的函数

python - 如何在Python中存储Linux调用的输出

algorithm - 为什么QuickSort不善于对几乎排序的数据进行排序

emacs - 选择一行以使用 emacs 移动它

emacs - 如何在 minibuffer 中使用 M-x?

elisp - 在elisp中压缩两个不同长度的列表

emacs - emacs lisp shell 进程参数的问题

javascript - 如何用外部条件和对象属性对数组对象排序?