用于编辑缩进暗示结构的文件的Emacs模式
我想在Emacs中编辑一个大的、毛茸茸的YAML文件。缩进意味着文件结构:如果A行缩进了十个空格,那么A将开始一个包含以下每一行缩进超过十个空格的部分。这是一个相当普遍的约定,远远超出了YAML 我真正想要的是一个emacs模式,它具有与此结构相关的定义。例如:用于编辑缩进暗示结构的文件的Emacs模式,emacs,indentation,Emacs,Indentation,我想在Emacs中编辑一个大的、毛茸茸的YAML文件。缩进意味着文件结构:如果A行缩进了十个空格,那么A将开始一个包含以下每一行缩进超过十个空格的部分。这是一个相当普遍的约定,远远超出了YAML 我真正想要的是一个emacs模式,它具有与此结构相关的定义。例如: 我想forward sexp跳过一个sexp,其中sexp是由缩进暗示的,而不是由匹配的括号对暗示的。类似地,我希望有其他导航命令移动到当前节结束后的行,移动到当前节的下一个同级节,等等 我希望有一个命令来折叠当前部分,或者除当前部分
- 我想
跳过一个sexp,其中sexp是由缩进暗示的,而不是由匹配的括号对暗示的。类似地,我希望有其他导航命令移动到当前节结束后的行,移动到当前节的下一个同级节,等等forward sexp
- 我希望有一个命令来折叠当前部分,或者除当前部分之外的所有部分,类似于outline模式可以折叠当前outline部分的方式,但是使用缩进定义的部分
- 我希望模式行显示一些关于我所在部分的有用信息,如缩进所示
- 我希望有一个选项可以自动突出显示当前行的所有祖先行
- 其他我没想到的事情
大纲模式
以我想要的方式工作
谢谢你的建议。使用
大纲模式
并将大纲regexp
设置为“*”
并不能完全满足我的需求,但它确实满足了我的需求。例如,默认情况下绑定到C-C-d
的hide subtree
,似乎以我上面描述的方式折叠当前节<代码>大纲转发同一级别,绑定到C-C-f
,也做了我想做的事情
有些事情仍然不太对劲。如果我找到任何其他有用的方法来调整大纲模式
,我将修改这个答案
这是对JoséAntonio Ortega Ruiz的建议的一个轻微修改。转到我写的下一个/当前的兄弟姐妹那里。加载文件并使用
M-x my yaml next sibling
。这个软件包还很初级,但在我看来非常有用
更新:此功能已成长为一个真正的软件包。它的第一个目标是在缩进块中导航:转到同一缩进的下一个节点、父节点等。这样就可以方便地缩进块、注释、折叠等
迈尔斯·古尔德建议看一看。如果这是有用的,我会写另一个答案。我写了一个函数去下一个/上一个兄弟,它仍然是基本的,但很有用,只要求增长。加载该文件并查看
my yaml next sibling
。更新:my函数已增长,现在是一个真正的包:。它的第一个目标是在缩进块中导航:转到同一缩进的下一个节点、父节点等。这样就可以方便地缩进块、注释、折叠等。