最近在看一些txt文件,有中文有英文,有些还挺长的。有没有好的插件可以方便的给txt文件生成一个目录索引,可以比较方便的跳转?比如用ctags自定义匹配规则在一个窗口显示出来目录的哪种? 多谢大家;
可能你想要的是deft
管理?
不是插件方式,不知道是不是能满足你的要求。
例如文件名叫 a.txt,内容是
1.1 hello
hello
1.2 world
world
1.3 hahaha
hahaha
可以这样处理
awk '/[1-9]\.[1-9].*/' a.txt > index.txt
-
etags --regex="/[1-9]\.[1-9].*/" a.txt
(两个正则需要保持一致)
在emacs中 M-x visit-tags-table RET TAGS
,一个窗口打开 index.txt, 1个窗口打开a.txt。
在index.txt窗口中 M-.
可跳转到a.txt中。
对啊对啊,就是这种效果,但是普通的txt文件没有orgmode这种层级标记,不知道有没有插件可以针对txt的各级目录匹配自动生成imenu呢?
现成的插件肯定是没有的,得自己写代码。首先要确定txt的各级目录有没有统一的格式,这样可以搜索匹配,然后可以研究一下imenu的实现原理和txt的目录结合下。
示 例 文 件 ?
有的,如果你的层级目录有一定规律的话,可以用outline。你可以查查outline-mode。基本上设置一个outline-regexp匹配到各级目录就可以。outline给你目录的跳转折叠,还有imenu等等。
你甚至可以用hi-lock高亮层级目录,不过那个麻烦一点。
文件上传个链接并且附上截图看看, 不然怎么讨论?
遇到这种, 我一般是把它转换成orgmode格式, 一劳永逸
转换成org-mode?怎么转换呢?直接强制为org-mode模式吗? 可以再描述一下吗?多谢啊
手工转换的, 搜索替换, 在txt文件里找到章节的地方, 替换成orgmode格式的标题
如果不需要保存index只是要在emacs中查看,用imenu非常简单:
(defun my/setup-txt-imenu ()
(setq imenu-generic-expression
'(("number" "^\\([[:digit:]]+\.[[:digit:]]+\\)" 1) ; 1.1 1.2 ...
("English" "^\\(No\.[[:digit:]]+\\)" 1) ; No.1 No.2 ...
)))
(add-hook 'text-mode-hook 'my/setup-txt-imenu)
需要注意当imenu-create-index-function
为imenu-default-create-index-function
时才能使用imenu-generic-expression
,很多programming major mode会修改imenu-create-index-function
。