如何在Emacs中使用自动补全查找org-mode文件?

4

我有一组存储在org-directory中的org文件。如何在它们之间进行导航,最好是通过交互式过滤和完成?

我认为有一种方法可以让org-mode生成已知org文件的列表,以便快速导航,但我似乎找不到它。如果org-mode没有这个功能,我怎样才能创建一个简单的命令来启动类似helm或icicles的东西来查找它们?


EmacsWiki有一些使用ido的示例,例如基于模式选择的辅助函数:http://emacswiki.org/emacs/InteractivelyDoThings。还有一些已经内置的缓冲区列表菜单,例如imenu、list-buffers、speedbar(缓冲区视图)等,可以按major-mode进行排序;而且,也可以设置过滤器来仅显示感兴趣的缓冲区。 - lawlist
4个回答

2
对我来说,这个问题不是很清楚。但是如果您所有的Org模式文件都有特定的文件名模式(例如*.org),并且都在同一个目录(org-directory)中,则可以使用Emacs方法访问它们:

  1. C-x C-f *.org RETURN org-directory 中打开它们(缓冲区正在访问它们,但只显示最后一个)。

  2. C-x C-f *.org TAB org-directory 中使用完成显示它们,然后选择您想要的任何一个(或者使用通配符模式选择多个,如#1)。

  3. 使用Icicles或Helm的#2方式相同。 至少在Icicles中,您还可以使用正则表达式和其他方式匹配。

  4. 仅为这些文件打开Dired:C-x d *.org

实际上有很多种方法可以做到您所描述的事情。 但我猜想您并没有描述清楚您的请求/问题/问题,当您这样做时,您将获得更窄的答案集。


更新您的评论后:

这里有一种方法:在org-directory中为所有Org文件打开Dired。

(defun foo ()
  "Open Dired for (only) the Org files in and under `org-directory`."
  (interactive)
  (cd org-directory)
  (dired "*.org" "-lRF"))

使用M-x foo进行测试。将以下代码放入您的初始化文件中:

(foo)

还有另一种方法:M-x bar 或将 bar 绑定到一个键。

(defun bar ()
  "Open an Org file in or under `org-directory`."
  (interactive)
  (let ((default-directory         org-directory)
        (icicle-file-match-regexp  ".*\\.org"))
    (icicle-locate-file-of-content)))

是的,我所有的org文件都匹配*.org并且在org-directory下的某个地方(可能是子目录)。我正在寻找一个单一的命令来设置搜索,类似于您建议的方式,但不需要每次导航到目录并键入正则表达式。 - shader
这对于打开组织文件列表很有用,但不适用于快速跳转到其中一个文件。您如何为初始化#2和#3中提到的find-file选项之一执行相同的操作? - shader

1
我有一个可以实现这个功能的包:plain-org-wiki。 它并不是太复杂:我只需将我的45个org文件全部放到一个目录中,就可以为它们提供自动完成功能。

这看起来非常接近我所要求的。您有关于如何设置和使用它的文档或提示吗?您存储库中的 readme 文件会很有帮助。 - shader

1

org已经提供了一个名为org-iswitchb的函数,你觉得它怎么样?

使用此函数可以在Org缓冲区之间进行切换。 使用一个前缀参数,将可用缓冲区限制为文件。 使用两个前缀参数,将可用缓冲区限制为日程表文件。

在加载org后,将以下内容添加到启动文件中: (global-set-key "\C-cb" 'org-iswitchb)


0

我最喜欢的解决方案是使用helm-mode,它可以通过从MELPA安装helm包来激活。这里有一个演示:

Helm Mode Completion

这真的为快速搜索文件提供了一个很好的环境。此外,您可以启用模糊完成!以下是一个最小的配置(在安装helm包之后):

(require 'helm-config)
(helm-mode 1)
(global-set-key (kbd "C-x C-f") 'helm-find-files)

如果您想搜索文件内容,也可以在文件上运行grep命令。如果您想了解更多信息,请查看这个神奇的指南


我同意Helm在交互式缩小文件方面很酷,但我希望学习如何设置仅搜索org文件。使用Helm似乎是可能的,但我不知道如何操作。 - shader

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接