(TIL)学到一招,在 Emacs 不用复制文件路径直接跳转

确实, hyperbole 的 button 是非常强大的特性。

如果它只有这一个特性就好了。

Emacs 还有一个 thing-at-point 用来获取当前 point 的语法 entity,比如:filename, symbol, url, email, word 等,每个 Major Mode 可以对其做定制。

projectile 的 projectile-find-file-dwim 使用 (thing-at-point 'filename) 实现 跳转到对应文件。

我把它和 xref-find-definitions 一起放置在 Context Menu 里:

  • Find Defintiion → xref-find-definitions
  • Find File → projectile-find-file-dwim
1 个赞

thing-at-point或者symbol-at-point有时候挺迷的,比如我曾经碰到的问题:

同样的一句文本如下: (define-key evil-normal-state-map (kbd “j”) 'evil-next-visual-line)

使用 (consult-line (symbol-name (symbol-at-point)))

当文本放在 scratch 中时,搜索字符串是 evil-next-visual-line

当文本放在 org 文件中时,搜索字符串是 'evil-next-visual-line

不同的mode可以自定义thing-at-point的取词方式,本来预期就是不一致的。

试试consult-thing-at-point

consult包没看到 consult-thing-at-point 这个函数。

我搞错了,我忘记这是我自己写的了😉

emacs内置isearch-forward-thing-at-point也是底层调thing-at-point取词,取词方式需要自己定制

顺便提一嘴lorniu大佬的gt-taker,自己实现了一个可定制的取词器。

gt可以看作一个通用的,支持异步的点到端交互框架。从设计上说远胜以上所有at-point,只是长得像一个翻译软件而已

2 个赞

非常好用!