2010-11-02 66 views
10

在OS X 10.5的Emacs 23.2,在dired模式,如果我尝试通过dired-sort-toggle-or-edit与prefix参数--sort=extension-X进行排序,我得到:错误dired排序在OS X

insert-directory: Listing directory failed but `access-file' worked 

和dired缓冲变空了。我试过设置

(setq dired-use-ls-dired nil) 

但这没有效果。 dired-sort-toggle-or-edit和扩展排序似乎在我的Ubuntu盒上工作正常。任何人都有线索怎么回事?

+0

非常感谢您创建这样一个有用的问题,它产生了导致解决方案的答案和评论。 – lawlist 2013-11-17 06:29:30

回答

8

安装在OS X上的ls不支持-X或任何长参数,如--sort。设置dired-use-ls-dired不会有任何影响; dired将始终使用ls,但如果该变量不为零,它将通过ls到--dired

如果你想要这种类型的排序,你可以使用类似fink的东西来安装coreutils,这将提供更像你在Ubuntu中习惯的ls。

+0

啊,所以这是一个奇怪的问题,FreeBSD没有这种类型的排序。我认为fink已经死了,但实际上看起来很活跃......想知道为什么我会这么想。谢谢。 – hatmatrix 2010-11-03 03:24:03

+6

我通过Homebrew安装了'coreutils',它显然安装了'/ usr/local/bin/gls'。我把这个''''''写到'/ usr/local/bin/ls'中,然后我没有再收到Emacs的错误。 – duma 2013-02-19 15:19:47

+4

@duma:根据优胜美地10.10.3,这不适合我。然后,我还使用了'(setq insert-directory-program“/ usr/local/bin/gls”);在'.emacs'中使用适当的GNU ls'并且它可以工作 – 2015-05-12 17:27:43

10

现在,我还发现使用ls-lisp

(when (eq system-type 'darwin) 
    (require 'ls-lisp) 
    (setq ls-lisp-use-insert-directory-program nil)) 
+0

您也可以使用其内置ls理解-X的eshell。 – 2010-11-03 03:42:54

+2

是否可以将'insert-directory-program'设置为eshell的'ls'? – hatmatrix 2010-11-04 09:34:21

+0

谢谢@crippledlambda我结合这个答案和杜马的评论前一个设置我的插入目录程序gls和一切适用于我现在在Mac OSX上 – mcheema 2013-03-22 00:33:49

7

下面是使用10.6.8通过MacPorts的安装coreutils对雪豹运行的Emacs的步骤另一种解决方案:

注:我的MacPorts安装不同于通用(/opt/...) - 即我使用/macports作为根。改变根设置不是必需的,它只是我个人的偏好。对于香草macport安装或替代设置,请相应地调整路径。

sudo /macports/bin/port install coreutils 

这那张.emacs或​​内:

;; sort directories first 

(setq insert-directory-program "/macports/bin/gls") 

(setq dired-listing-switches "-aBhl --group-directories-first") 

注:使用一个符号链接gls/ls不建议,因为它打破了MacPorts的功能,安装和最有可能其他的东西了。


替代安装谁想要更多控制的用户:

下载:coreutils-8.21.tar.xz来自:http://ftp.gnu.org/gnu/coreutils/

如果你没有一个实用程序来解压缩一个*.xz文件,你可以使用一个实用工具,如TheUnarchiver3.9.1

这里是一个快速的参考,使coreutils - 我的安装位置设置为我自己的个人喜好,而不是默认:

./configure \ 
--prefix=/Users/HOME/.0.data/.0.emacs/elpa 

make 

sudo make install 

这些插入到你的.emacs或​​文件 - 调整路径相应地:

;; sort directories first 

(setq insert-directory-program "/Users/HOME/.0.data/.0.emacs/elpa/bin/ls") 

(setq dired-listing-switches "-aBhl --group-directories-first")