在OS X 10.5 Emacs 23.2上,在直接模式下,如果我尝试按dired-sort-toggle-or-edit
排序前缀参数--sort=extension
或-X
,我会得到:
insert-directory: Listing directory failed but `access-file' worked
并且dired缓冲区变空。我试过设置
(setq dired-use-ls-dired nil)
但这没有效果。 dired-sort-toggle-or-edit
并按扩展名排序似乎在我的Ubuntu框上运行正常。任何人都知道发生了什么事?
答案 0 :(得分:12)
目前,我还找到了使用ls-lisp
(when (eq system-type 'darwin)
(require 'ls-lisp)
(setq ls-lisp-use-insert-directory-program nil))
答案 1 :(得分:8)
OS X上安装的ls
不支持-X
或--sort
之类的长参数。设置dired-use-ls-dired
不会产生任何影响; dired将始终使用ls,但如果该变量为非nil,则会将--dired
传递给ls。
如果你想要那种类型的排序,你可以使用像fink这样的东西来安装coreutils,这将提供更像你在Ubuntu中习惯的那些。
答案 2 :(得分:7)
以下是使用通过macports安装的coreutils
在Snow Leopard 10.6.8上运行的Emacs的步骤:
注意:我的macports安装与通用(/opt/...
)不同 - 即我使用/macports
作为根。不需要改变根设置,这只是我的个人偏好。对于vanilla macport安装或替代设置,请相应地调整路径。
sudo /macports/bin/port install coreutils
这会进入.emacs
或init.el
:
;; sort directories first
(setq insert-directory-program "/macports/bin/gls")
(setq dired-listing-switches "-aBhl --group-directories-first")
注意:使用gls
/ ls
的符号链接不推荐,因为它会破坏macports install的功能,而且很可能也是其他东西。
希望获得更多控制权的用户的替代安装:
从http://ftp.gnu.org/gnu/coreutils/
下载coreutils-8.21.tar.xz
如果您没有解压缩*.xz
文件的实用程序,则可以使用TheUnarchiver3.9.1
等实用程序。
以下是制作coreutils
的快速参考 - 我将安装位置设置为我个人的偏好而不是默认值:
./configure \
--prefix=/Users/HOME/.0.data/.0.emacs/elpa
make
sudo make install
将这些内容插入到.emacs
或init.el
文件中 - 相应地调整路径:
;; sort directories first
(setq insert-directory-program "/Users/HOME/.0.data/.0.emacs/elpa/bin/ls")
(setq dired-listing-switches "-aBhl --group-directories-first")
答案 3 :(得分:0)
这与lawlist的回答没有太大不同,但是信息略有不同,并且是针对使用Nix软件包管理器的用户量身定制的:
(use-package dired
:custom
;; See http://stackoverflow.com/questions/4115465/emacs-dired-too-much-information
;; NOTE: Just some information worth keeping in mind. More readable dired file
;; size output - consider adding F (make file type obvious), or p (p adds a
;; trailing slash to dirs, but makes moving dirs fail), and G (colorize) too.
(dired-listing-switches "-alh --group-directories-first")
:config
;; [[https://stackoverflow.com/questions/4076360/error-in-dired-sorting-on-os-x][macos - error in dired sorting on OS X - Stack Overflow]]
;; To fix the
;; (error "Listing directory failed but 'access-file' worked")
;; error. Emacs needs to use gnu's ls, which I get through nixpkgs' coreutils.
;; In my config, currently, Emacs is not picking up the path to my nix install
;; ls (todo: fix).
;;
;; Note that, unlike the info at the link provided above,
;; --group-directories-first is not needed to fix this error. I just like to
;; see the directories first in a dired buffer.
(setq insert-directory-program (expand-file-name ".nix-profile/bin/ls"
(getenv "HOME"))))
答案 4 :(得分:0)
还在2020年发生!如果像我一样,使用 brew 作为您的开源软件包管理器,那么这是将粘贴复制到.emacs
文件中或保留启动自定义内容的正确的解决方案:< / p>
(when (equal system-type 'darwin)
(setq insert-directory-program "/usr/local/opt/coreutils/libexec/gnubin/ls"))
(我检查操作系统是因为我在多个系统上部署了Emacs配置)。
奇怪的是,这在Mojave系统上突然发生了,我从那以后一直定期使用Emacs,并且我确信在过去该系统一直在工作。我猜这是更新造成的事情,使Dired使用了正确的二进制文件,而无需手动设置它。