在Mac OSX上的Emacs中,是否有一个功能可以在Finder中显示当前文件?
答案 0 :(得分:7)
有点晚了,但我刚刚创建了一个基于此的脚本。从dired缓冲区调用时,它会打开文件夹。
https://github.com/kaz-yos/reveal-in-osx-finder(新链接)
编辑2014-02-06 现在可以在MELPA上找到:M-x list-packages应该列出其他包中的揭示器。
请看这里使用。 https://github.com/kaz-yos/reveal-in-osx-finder
编辑2014-04-08 我稍微更新了脚本(如下)。这应该在一个直接缓冲区中有用。
(0.3.0中的NEW)如果在直接缓冲区中调用M-x reveal-in-finder,它将在OS X Finder中打开当前文件夹。如果可用的话,它还会突出显示该文件。
编辑2015-08-03 该软件包已重命名为reveal-in-osx-finder.el,以避免与其他类型的“查找程序”混淆。
答案 1 :(得分:4)
解决方案#1::下面的第二个解决方案是初始答案,但我现在使用稍微不同的东西,同时最大化Finder窗口。所以,这是替代解决方案(适用于目录和文件):
(defun dired-open-in-finder ()
"This function contemplates that we are in columns view in Finder (Command+3),
rather than list view (Command+2)."
(interactive)
(let ((path (dired-get-file-for-visit))
(display-pixel-height (number-to-string (display-pixel-height)))
(display-pixel-width (number-to-string (display-pixel-width))))
(when path
(let* ((maximize
(concat
"tell application \"Finder\" to set the bounds of the front Finder window to "
"{0, 0, " display-pixel-width ", " display-pixel-height "}\n"))
(script
(concat
"tell application \"Finder\"\n"
" set frontmost to true\n"
" make new Finder window to (POSIX file \"" path "\")\n"
maximize
"end tell\n")))
(start-process "finder" nil "osascript" "-e" script)))))
解决方案#2 :我不记得我从哪里得到这个 - 如果有人知道,请告诉我,我会向作者发帖 - 谢谢。
(defun open-finder ()
(interactive)
(let ((path (or (buffer-file-name) (dired-file-name-at-point)))
dir file)
(when path
(setq dir (file-name-directory path))
(setq file (file-name-nondirectory path)))
(open-finder-1 dir file)))
(defun open-finder-1 (dir file)
(let ((script
(if file
(concat
"tell application \"Finder\"\n"
" set frontmost to true\n"
" make new Finder window to (POSIX file \"" (expand-file-name dir) "\")\n"
" select file \"" file "\"\n"
"end tell\n")
(concat
"tell application \"Finder\"\n"
" set frontmost to true\n"
" make new Finder window to {path to desktop folder}\n"
"end tell\n"))))
(start-process "osascript-getinfo" nil "osascript" "-e" script)))
答案 2 :(得分:3)
这不是Emacs功能,所以也许不是你所追求的,但如果您使用Cocoa构建的Emacs(apple-appkit),最简单的解决方案是⌘-click或^-click在菜单栏中的文件名上,然后单击封闭文件夹,然后在Finder中打开。
答案 3 :(得分:2)
这是一个老问题,但让我添加一个解决方案。到目前为止,我对此很满意。
(defun open-current-file-in-finder ()
(interactive)
(shell-command "open -R ."))
答案 4 :(得分:0)
改善diadochos的答案。 这适用于OSX系统。它可以很容易地更改为任何基于unix或gnu的操作系统。
这实际上打开了父目录(不是包含该文件的目录)
jsScript
这就是我要找的东西。打开包含该文件的目录。
(defun open-current-file-in-finder ()
(interactive)
(shell-command "open -R ."))
(defun open-current-file-directory ()
(interactive)
(shell-command "open ."))
在Emacs 25.1.1中测试
答案 5 :(得分:0)
在直接模式下,输入'!'而不是'e'或'f'来打开emacs缓冲区中的文件然后“打开-R”。将打开一个指向您文件的新Finder窗口。
答案 6 :(得分:0)
您也可以输入以下内容。
M-:
open .
在当前缓冲区中打开文件时。
好处是您不需要记住功能的名称,甚至不需要记住功能的一部分才能获得自动完成功能。
答案 7 :(得分:0)
最简单的方法是在组织文档中编写一个file://...
链接,例如
file://Users/my_username/Backups/
现在,将光标移到该链接中的任何位置并运行M-x org-open-at-point
(为简单起见,我将其绑定到我的org-mode-map中的s-.
)
您还可以按C-c C-l
编辑链接并为其赋予易于阅读的标题。