Vandee's Blog

13 Nov 2025

Emacs 浮窗快速预览笔记 - Org Hover

TL;DR

Org Hover ,在 Emacs 里实现 preview hover 快速预览笔记。

为什么做这个

很久以前在使用 Obsidian 和 Logseq 的时候,它们都有一个功能:能够快速预览引入的笔记。预览双链里链接的笔记弹出一个小的浮窗,或是根据引入的其他笔记片段快速定位到该笔记的原文的位置并提供预览。

双链是我现在很依赖的一个基础笔记功能,有了 preview 效率会高很多,不用频繁的切换文件。在使用双链的时候,最普遍的场景也就是引用了其他笔记的片段。

而在 Emacs 里我暂时没有找到类似的实现,所以决定自己糊一个。

每个人都有自己做笔记的小习惯,通用的笔记软件和插件很难满足一些高自定义需求,但是在 Emacs 里,想要什么新功能,自己造一个就完事了。

Org Hover

org-hover 使用 Emacs 原生的 frame 特性,零外部依赖,可以在 org 文件链接的 point 弹出一个浮动窗口 hover popup 显示该文件的内容。支持在 hover popup 里复制,滚动浏览。

并提供 inline 模式:

#+begin_quote
#+INCLUDE: "file.org"
or
#+INCLUDE: "file.org::Header"
or
#+INCLUDE: "file.org" :lines "1-30"
#+end_quote

在常规的 #+begin_quote block 里加上 #+INCLUDE 就可以让 org hover 识别到这个文件。现在支持 #+INCLUDE: "file.org::*Header" , #+INCLUDE: "file.org" :lines "1-30" 这两个参数。

header 能够预览链接文件指定的 header 标题部分,lines 能够预览链接文件指定的行。文件名使用相对路径和绝对路径都可以,语法也遵循 Emacs INCLUDE 原生的语法。

并且,还支持自动 insert 这些指定的链接文件内容,默认为不开启。

如果不带参数,但是在 quote 部分写了相关内容,org hover 就会在链接文件里识别到这个内容所在区域,并在 hover popup 里显示:

#+begin_quote
#+INCLUDE: "file.org"
text
#+end_quote

如果不带参数,且没有 quote 内容,则会默认显示链接原文件的前 1000 个字符。

并且并且,还支持 denote 的 insert link 双链!

Tags: Emacs