提问:在Emacs中如何快速获取当前所编辑文件的路径?

如题。 我一般的场景是,在 todo.org 里设立好任务,然后会在 worklog.org 来展开一天的工作。

有时候希望可以在 todo.org 里快速的跳转到 worklog.org 里对应的位置中去。

不知道在 Emacs 有什么办法可以快速实现这一点?

default-directory变量就是当前所在的文件夹,buffer-file-name是当前buffer对应的文件名。

你可以用org-mode里的link呀

通过在:PROPERTIES:的drawer里面定义一个唯一的id,然后用id去链接对应的heading。

你可以看看这个视频OrgMode E05S02: Linking (external)

BTW,这个人的org-mode视频很棒。

3 个赞

我用的

;; 标题显示完整路径
(setq frame-title-format
      (list (format "%s %%S: %%j " (system-name))
            '(buffer-file-name "%f" (dired-directory dired-directory "%b"))))
;; 复制当前文件绝对路径到剪贴板
(defun show-file-name ()
  "Show the full path file name in the minibuffer."
  (interactive)
  (let ((name (buffer-file-name)))
    (kill-new name)
    (message name)))

执行 show-file-name,会显示当前 buffer 的绝对路径,并复制到剪贴板。

3 个赞

todo.org里写上 file:worklog.org 左键点击即可跳转

1 个赞

谢谢分享,我去看看

setq frame-title-format 是在干什么啊,怎么感觉和 (show-file-name) 不太相关 :thinking:

这个是在图形界面头上显示当前文件的完整路径。这样可以先看一眼再决定要不要复制。

谢谢,已经抄过来了 :crazy_face: :crazy_face:

在页头显示文件完整路径,也可看看我的,我是把标题栏隐藏了,用header-line来显示(setq-default header-line-format '(" %l %b " default-directory)),按行号,文件名,路径顺序,在把mode-line加上行号列号定制一下,左侧坚向显示的行号也可以不要了,treemacs显示和隐藏侧边栏时不改变当前emacs窗口的大小和位置.gif

谢谢,这个不错,终端也可以用 :laughing: :laughing: