2010-11-02 39 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")