13

可能重复:
如何在emacs中实现代码折叠效果

Dreamweaver 的一个出色功能是任何文本行的代码折叠——递归!

太棒了,我可以折叠任何文本或代码,无论语言如何。我使用现有系统;我不会编辑编写良好的代码或用一种语言等编写的代码。主要是 HTML 与上帝知道什么混合在一起。折叠线使理解容易和更快。遗憾的是,这是我在 Dreamweaver中唯一喜欢的功能。

是否有类似目的的 Emacs 代码折叠?

4

6 回答 6

10

折叠模式,一种次要模式。不幸的是,它具有侵入性:您必须使用专门的注释手动注释折叠,当您不使用该模式时(或与不使用该模式的其他人共享代码时),这会使代码混乱。更好的模式不会改变你的代码工作。

让我补充一下:有一个副本值得一看:如何在 Emacs 中实现代码折叠效果

于 2009-07-30T19:03:04.027 回答
8

hide-show ( hs-minor-mode) 是一个次要模式,它会做这样的事情......

C-c @ C-c我觉得触发折叠的默认键绑定非常麻烦。但是我也不怎么用它。

于 2009-07-30T19:15:32.033 回答
4

您可能想要查找函数set-selective-display和变量selective-display。不完全是您想要的,但它可以让您根据缩进级别隐藏行。

于 2009-07-31T14:09:45.420 回答
3

我使用 fold-dwim.el。来自 emacs 维基:

fold-dwim.el 是 Emacs 折叠/大纲模式的统一用户界面。它支持 fold.el、hideshow.el、outline.el、TeX-fold.el 和 nxml-outln.el

你可以在这里得到它:

http://www.emacswiki.org/emacs/FoldDwim

我的 .emacs 中有这个:

(require 'fold-dwim)
(global-set-key [(C kp-4)] 'fold-dwim-hide-all)
(global-set-key [(C kp-5)] 'fold-dwim-toggle)
(global-set-key [(C kp-6)] 'fold-dwim-show-all)

请记住,您仍然需要激活 hs-minor-mode、folding-mode 等,但我发现以这种方式使用它们更容易。

于 2009-08-05T10:07:22.263 回答
1

您可能会研究的其他内容是nxhtml-mode;它不会折叠代码,但会根据其类型以不同的方式突出显示混合代码(即 HTML 和 PHP)。这使您在可理解性方面获得了类似的收益,而没有折叠模式的尴尬。我认为这种方法更适合 Emacs,首先因为代码折叠似乎是一个面向鼠标的想法,不能很好地适应基本上以键盘为中心的 Emacs 界面,其次因为 Emacs 在一定程度上简化了大文件的导航该代码可以保持可见而不会妨碍您。

于 2009-07-30T19:19:14.227 回答
0

如果您确实需要“隐藏给定区域而不是试图理解语法”(与 hideshow 和其他基于解析的解决方案不同)并且您“不想编辑 [您的] 代码”(与折叠不同) ,那么,我假设您的意思是您不希望这些区域在不同的编辑会话之间保持不变。然后你可以使用http://www.emacswiki.org/emacs/HideRegion来隐藏用户选择的区域......

(但这很奇怪。带有持久标记的折叠次要模式似乎是一个更方便的解决方案。)

于 2010-07-25T02:41:35.340 回答