在子龙山人的教程中,Master Emacs in 21 Days 的第六天讲到了如何使用Emacs 来打开文件管理器 。
其实配合 dired 和 consult 的话,下面的这个 dired-open-externally
函数就可以实现,该函数来自 orderless 作者 oantolin 的 emacs-config 。
(use-package dired
:bind (:map dired-mode-map
("e" . dired-open-externally))
:custom
(dired-dwim-target t)
(dired-listing-switches "-alGh")
(dired-recursive-copies 'always)
(dired-kill-when-opening-new-dired-buffer t)
:config
(defun dired-open-externally (&optional arg)
"Open marked or current file in operating system's default application."
(interactive "P")
(dired-map-over-marks
(consult-file-externally (dired-get-filename))
arg)))
我邦定到了e 键上,平时工作流是:
C-x C-j 进入 dired
移动光标到需要打开的文件或者文件夹,按 e
默认支持 Window, Linux 和 macOS
5 个赞
这个看起来,多一步,具体看每个人的习惯吧
函数不错,抄走了
SPQR
2022 年10 月 24 日 04:30
3
embark-consult
把 consult-file-externally
加到了 embark-file-map
,在dired buffer里面 M-x embark-act RET
然后按 x 也能实现一样的效果
我这试了在 dired 里用 embark,embark-act
后按 RET 是打开文件或者文件夹, 并没有 consult-file-externally
SPQR
2022 年10 月 24 日 05:31
5
我写的有歧义,那个RET是指输入emarbk-act之后回车执行,执行embark-act之后按x ,如果没有x的选项可能需要手动require下embark-consult,这个好象是还单独的包来着
1 个赞
我用 Borg 直接从 github 安装的 embark,embark-consult 包含在 embark 中,但默认没有 require,只要 (require 'embark-consult)
后,embark-act
就有 x 了。
通过 embark 也是一个不错的选择,多谢分享。不过直接邦定 e 会更加方便一些。
counsel-find-file-extern
似乎也是差不多的效果,不过在文件上会调用Windows默认打开方式,文件夹会调用资源管理器。
1 个赞
aqua0210:
dired-get-filename
将 dired-get-filename
更换为 dired-get-file-for-visit
可以对 dired
中的 .
..
使用以访问当前或上级目录
2 个赞
你好,请问consult-file-externally
函数是已经不能使用了还是需要另外自定义?
我已安装consult包,但在使用dired-open-externally
函数之后,emacs报错:
(void-function consult-file-externally)
并且“C-h f”中也找不到consult-file-externally
.
已经不在 consult 这个包里了,转移到 embark 这个包下面了。
1 个赞
将原代码中consult-file-externally
修改成embark-open-externally
就能正常使用了。
非常感谢!
Emacs 30 已经内置了一个新的命令 dired-do-open
,在 dired 中按 E 就可以触发。
embark-open-externally 可以不用了。
*** New command ‘dired-do-open’.
This command is bound to ‘E’ (mnemonics “External”). Also it can be
used by clicking “Open” in the context menu; it “opens” the marked or
clicked on files according to the OS conventions. For example, on
systems supporting XDG, this runs ‘xdg-open’ on the files.
1 个赞