hat*_*rix 12 macos emacs dired
在OS X 10.5 Emacs 23.2上,在dired-mode中,如果我尝试dired-sort-toggle-or-edit使用前缀参数进行排序,--sort=extension或者-X得到:
insert-directory: Listing directory failed but `access-file' worked
Run Code Online (Sandbox Code Playgroud)
并且dired缓冲区变空.我尝试过设置
(setq dired-use-ls-dired nil)
Run Code Online (Sandbox Code Playgroud)
但这没有效果.dired-sort-toggle-or-edit并通过扩展排序似乎在我的Ubuntu框上工作正常.有人知道发生了什么事吗?
hat*_*rix 12
目前,我还发现了另一种解决方案 ls-lisp
(when (eq system-type 'darwin)
(require 'ls-lisp)
(setq ls-lisp-use-insert-directory-program nil))
Run Code Online (Sandbox Code Playgroud)
该ls所安装的OS X不支持-X或任何长篇大论喜欢--sort.设置dired-use-ls-dired不会有任何影响; dired将始终使用ls,但如果该变量为非nil,则它将传递--dired给ls.
如果你想要那种类型的排序,你可以使用像fink这样的东西来安装coreutils,这将提供更像你在Ubuntu中习惯的东西.
以下是使用coreutils通过macports安装在Snow Leopard 10.6.8上运行的Emacs的步骤:
注意:我的macports安装与generic(/opt/...)不同- 即,我/macports用作root.不需要改变根设置,这只是我的个人偏好.对于vanilla macport安装或替代设置,请相应地调整路径.
sudo /macports/bin/port install coreutils
Run Code Online (Sandbox Code Playgroud)
这进入.emacs或init.el:
;; sort directories first
(setq insert-directory-program "/macports/bin/gls")
(setq dired-listing-switches "-aBhl --group-directories-first")
Run Code Online (Sandbox Code Playgroud)
用一个符号链接:NOTE 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
Run Code Online (Sandbox Code Playgroud)
这些插入到你.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")
Run Code Online (Sandbox Code Playgroud)
2020年依然发生!如果像我一样,您使用brew作为开源包管理器,并且您已经安装了coreutils brew install coreutils,那么这是将粘贴复制到您的.emacs文件中或保存启动自定义的任何位置的正确解决方案:
(when (equal system-type 'darwin)
(setq insert-directory-program "/insert/here/path/to/homebrew/ls"))
Run Code Online (Sandbox Code Playgroud)
(我检查操作系统是因为我在多个系统上部署 Emacs 配置)。
当前路径:
/opt/homebrew/opt/coreutils/libexec/gnubin/ls
Run Code Online (Sandbox Code Playgroud)
以前(2022 年之前?)它曾经是:
/usr/local/opt/coreutils/libexec/gnubin/ls
Run Code Online (Sandbox Code Playgroud)
与往常一样,如果您已将 gnu ls 配置为当前选择的 shell 中的默认命令,则始终可以通过键入 来检查其当前的完整路径which ls。
奇怪的是,这种情况突然发生在 Mojave 系统上,我从那时起就经常在该系统上使用 Emacs,并且我确信 dired 过去一直在该系统上工作。我猜想更新破坏了一些东西,使得 Dired 使用正确的二进制文件,而无需手动设置它。
| 归档时间: |
|
| 查看次数: |
4850 次 |
| 最近记录: |