用 Finder 选中 Dired 中标记的文件

从 Dired 到 Finder

假设我们用 Dired 选中了几个文件,却想用 Finder 来管理,可以用下面的命令来把 Dired 中标记的文件「转化」为 Finder 里选中的文件:

(defun dired-finder-reveal-marked-files (files)
  "Reveal marked FILES in Finder.
FILES are a list of absolute filename.
FILES are in the same directory."
  (interactive (list (dired-get-marked-files)))
  (when files
    (do-applescript
     (format
      (concat "tell application \"Finder\"\n"
              "  activate\n"
              "  tell (make new Finder window) to set target to POSIX file \"%s\"\n"
              "  set selection to {%s}\n"
              "end tell")
      (file-name-directory (car files))
      (mapconcat
       (lambda (file)
         (format "POSIX file \"%s\"" file))
       files
       ", ")))))

效果演示:

  1. Dired 中标记三个文件
  2. M-x dired-finder-reveal-marked-files
  3. 完成!Finder 窗口打开并标记那三个文件

从 Finder 到 Dired

反向实现比较困难,我能想到的方法是利用 org-protocol://,懒得折腾了,目前实现了个「用 Dired 打开当前 Finder 窗口目录」,不管选不选中了:

tell application "Finder"
	POSIX path of (target of front window as alias)
	tell application "Emacs" to open result
end tell

3赞

finder有啥好的啊?fm-bookmarks可以和nautilus等共享书签我感觉挺好的

想不出来为什么会有这样的应用场景

刚刚想到一个:比如你正在用 Finder,想用正则表达式选中一些文件,Finder 做不到,而 Dired 可以,于是你在 Dired 中选中之后,按 M-x dired-finder-reveal-marked-files 就能让 Finder 选中这些文件了。

啊原来你是果粉

挺有用的,Finder还是用起来舒服一些,选择文件,拖拽,多层视图,预览,甚至方便的复制粘贴都是dired不容易做到的。有时间可以自己写点代码优化一下,dired+感觉太复杂了。

emacs有个奇怪的地方,有些时候自己写点代码反而比下载包然后学习使用方法来的简单省事。可能是很多包比较geek,做得不够傻瓜www

Thanks。第一个功能(Dired => Finder)确实复杂些,比较折腾,第二个功能从 Finder => Dired(用 Dired 打开 Finder 所在目录)功能简单、实现简单,因此靠谱,感觉挺实用,有时用着 Finder 就想起 Dired 来。只是使用 AppleScript 脚本需要点击菜单栏,有点烦人,要是能用 Alfred 或许好些。

可以用automator把apple script包装成app(好像是叫这个),然后拖到finder标签栏里,点击就能用。我现在用的是在iterm里打开的。明早拿电脑给你看一下。

finder到dired加上选中的话不知道用service成不成。service好像是可以右键使用的。比如右键-services-dired中打开。

不知道为啥有点慢😅

app链接