OS X 上的直接排序错误
在 OS X 10.5 Emacs 23.2 上,在 dired 模式下,如果我尝试使用前缀参数 --sort=extension
或 dired-sort-toggle-or-edit
进行排序-X
,我得到:
insert-directory: Listing directory failed but `access-file' worked
并且 dired 缓冲区变空。我尝试设置
(setq dired-use-ls-dired nil)
但这没有效果。 dired-sort-toggle-or-edit
和按扩展名排序似乎在我的 Ubuntu 机器上工作正常。有人知道发生了什么事吗?
On OS X 10.5 Emacs 23.2, in dired-mode, if I try to sort by dired-sort-toggle-or-edit
with prefix argument --sort=extension
or -X
, I get:
insert-directory: Listing directory failed but `access-file' worked
and the dired buffer becomes empty. I tried setting
(setq dired-use-ls-dired nil)
but this had no effect. dired-sort-toggle-or-edit
and sorting by extension seems to work okay on my Ubuntu box. Anyone have a clue what's going on?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
目前,我还使用 ls-lisp 找到了另一个解决方案
For now, I've also found another solution using
ls-lisp
OS X 上安装的
ls
不支持-X
或任何长参数,例如--sort
。设置 dired-use-ls-dired 不会有任何效果; dired 将始终使用 ls,但如果该变量非零,则会将--dired
传递给 ls。如果你想要这种类型的排序,你可能可以使用 fink 之类的东西来安装 coreutils,它将提供一个更像你在 Ubuntu 中习惯的 ls 。
The
ls
that's installed on OS X doesn't support-X
or any long arguments like--sort
. Settingdired-use-ls-dired
won't have any effect; dired will always use ls, but if that variable is non-nil, it will pass--dired
to ls.If you want that type of sorting, you can probably use something like fink to install coreutils, which will provide an ls more like what you're used to in Ubuntu.
以下是使用通过 macports 安装的
coreutils
在 Snow Leopard 10.6.8 上运行 Emacs 的步骤:注意:我的 macports 安装与通用 (
/opt/...
) 不同——即,我使用/macports
作为根目录。不需要改变根设置,这只是我的个人喜好。对于普通 macport 安装或替代设置,请相应地调整路径。这位于
.emacs
或init.el
内部:注意: 不建议使用
gls
/ls
的符号链接,因为它会破坏 macports 安装的功能,而且很可能还会破坏其他功能。想要更多控制权的用户的替代安装:
从以下位置下载:
coreutils-8.21.tar.xz
: http://ftp.gnu.org/gnu/coreutils/如果您没有用于解压缩
*.xz
文件的实用程序,您可以使用诸如之类的实用程序TheUnarchiver3.9.1
。以下是制作
coreutils
的快速参考 - 我将安装位置设置为我自己的个人偏好,而不是默认值:将它们插入到您的
.emacs
或中init.el
文件——相应地调整路径:Here are the steps for Emacs running on Snow Leopard 10.6.8 using
coreutils
installed through macports:NOTE: My macports installation is different than the generic (
/opt/...
) -- i.e., I use/macports
as the root. Altering the root setup is not required, it is just a personal preference of mine. For vanilla macport installations or alternative setups, adjust the path accordingly.This goes inside the
.emacs
orinit.el
:NOTE: Using a symlink for
gls
/ls
is not recommended because it breaks functionality with macports install and most likely other stuff too.Alternative installation for users who want more control:
Download:
coreutils-8.21.tar.xz
from: http://ftp.gnu.org/gnu/coreutils/If you do not have a utility to unzip an
*.xz
file, you can use a utility such asTheUnarchiver3.9.1
.Here is a quick reference to make the
coreutils
-- I set the installation location to my own personal preference instead of the default:Insert these into your
.emacs
orinit.el
file -- adjust the path accordingly:2020年依然发生!如果像我一样,您使用 brew 作为开源包管理器,并且您已经使用
brew install coreutils
安装了 coreutils,那么这是复制粘贴的正确解决方案在您的.emacs
文件中,或者您保存启动自定义的任何位置:(我检查操作系统,因为我在多个系统上部署了 Emacs 配置)。
当前路径:
以前(2022 年之前?)它曾经是:
像往常一样,如果您在当前选择的 shell 中将 gnu ls 配置为默认路径,则可以随时通过键入
which ls.
奇怪的是,这种情况突然发生在 Mojave 系统上,我从那时起就经常在该系统上使用 Emacs,并且我确信 dired 过去一直在该系统上工作。我猜想更新破坏了一些东西,使得 Dired 使用正确的二进制文件,而无需手动设置它。
Still happening in 2020! If, like me, you're using brew as your open source package manager, and you have already installed coreutils with
brew install coreutils
, this is the right solution to copy paste in your.emacs
file, or wherever you keep your startup customizations:(I check for the OS because I deploy my Emacs configuration on multiple systems).
Current path:
Previously (before 2022?) it used to be:
As usual, if you have configured gnu ls as your default in your current shell of choice, you can always check its current full path by typing
which ls
.Oddly enough, this happened suddenly on a Mojave system on which I routinely use Emacs since forever, and on which I am sure dired was working in the past. I guess that an update broke something that made dired use the correct binary, without having to manually set it.
这与 lawlist 的好答案没有太大不同,但信息略有不同,并且是为那些使用 Nix 包管理器的人量身定制的:
This is not much different than lawlist's nice answer, but has slightly different information and is tailored to those who use the Nix package manager: