我有一组存储在org-directory
中的org文件。如何在它们之间进行导航,最好是通过交互式过滤和完成?
我认为有一种方法可以让org-mode生成已知org文件的列表,以便快速导航,但我似乎找不到它。如果org-mode没有这个功能,我怎样才能创建一个简单的命令来启动类似helm或icicles的东西来查找它们?
我有一组存储在org-directory
中的org文件。如何在它们之间进行导航,最好是通过交互式过滤和完成?
我认为有一种方法可以让org-mode生成已知org文件的列表,以便快速导航,但我似乎找不到它。如果org-mode没有这个功能,我怎样才能创建一个简单的命令来启动类似helm或icicles的东西来查找它们?
*.org
),并且都在同一个目录(org-directory
)中,则可以使用Emacs方法访问它们:
C-x C-f *.org RETURN
在 org-directory
中打开它们(缓冲区正在访问它们,但只显示最后一个)。
C-x C-f *.org TAB
在 org-directory
中使用完成显示它们,然后选择您想要的任何一个(或者使用通配符模式选择多个,如#1)。
使用Icicles或Helm的#2方式相同。 至少在Icicles中,您还可以使用正则表达式和其他方式匹配。
仅为这些文件打开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-directory
下的某个地方(可能是子目录)。我正在寻找一个单一的命令来设置搜索,类似于您建议的方式,但不需要每次导航到目录并键入正则表达式。 - shaderorg已经提供了一个名为org-iswitchb的函数,你觉得它怎么样?
使用此函数可以在Org缓冲区之间进行切换。 使用一个前缀参数,将可用缓冲区限制为文件。 使用两个前缀参数,将可用缓冲区限制为日程表文件。
在加载org后,将以下内容添加到启动文件中:
(global-set-key "\C-cb" 'org-iswitchb)
我最喜欢的解决方案是使用helm-mode
,它可以通过从MELPA安装helm
包来激活。这里有一个演示:
这真的为快速搜索文件提供了一个很好的环境。此外,您可以启用模糊完成!以下是一个最小的配置(在安装helm
包之后):
(require 'helm-config)
(helm-mode 1)
(global-set-key (kbd "C-x C-f") 'helm-find-files)
如果您想搜索文件内容,也可以在文件上运行grep
命令。如果您想了解更多信息,请查看这个神奇的指南。
ido
的示例,例如基于模式选择的辅助函数:http://emacswiki.org/emacs/InteractivelyDoThings。还有一些已经内置的缓冲区列表菜单,例如imenu、list-buffers、speedbar(缓冲区视图)等,可以按major-mode进行排序;而且,也可以设置过滤器来仅显示感兴趣的缓冲区。 - lawlist