我在阅读书籍、文章等(主要是人文学科)时使用 Emacs 记录笔记。我想知道 Emacs 是否可以自动构建我输入的主题标签列表(可能在单独的文件中)?此外,当我开始键入主题标签时,Emacs(从这个假设的列表中读取)是否可以提供增量(或选项卡)自动完成功能。我需要此功能才能获得一致的标记。
谢谢!
我在阅读书籍、文章等(主要是人文学科)时使用 Emacs 记录笔记。我想知道 Emacs 是否可以自动构建我输入的主题标签列表(可能在单独的文件中)?此外,当我开始键入主题标签时,Emacs(从这个假设的列表中读取)是否可以提供增量(或选项卡)自动完成功能。我需要此功能才能获得一致的标记。
谢谢!
您可以使用Exuberant ctags生成 TAGS 文件。例如,如果您的笔记处于 Org 模式,您可以这样做:
(require 'org-ctags)
(setq org-ctags-path-to-ctags "/path/to/ctags")
;; Regular expression for the hashtags.
;; Nnote that this would remove the existing definition and effectively disable
;; the standard use of org-ctags which is to tag <<links>>. If you want to preserve old
;; behavior you need to combine the two regexes.
(setq org-ctags-tag-regexp "/(#[^+]+)/\\1/d,definition/")
(org-ctags-create-tags "directory")
现在您可以使用org-ctags-find-tag-interactive
搜索声称具有自动完成功能的标签:
(add-hook 'org-mode-hook
(lambda ()
(define-key org-mode-map "\C-co" 'org-ctags-find-tag-interactive)))
但我更喜欢 Helm 完成,所以我只做M-x helm-etags-select
. 您也可以忽略org-ctags
并自己构建标签:
ctags --langdef=orgmode --langmap=orgmode:.org
--regex-orgmode="/(#[^+]+)/\1/d,definition/"
-f /your/path/TAGS -e -R /your/path/*.org
(或创建一个方便的 emacs 函数来为您执行此操作)。