很久以前有一个名为MultiEdit的编辑器。它具有我在所有强大的VIM中找不到的功能。在MultiEdit中,我可以按下一些热键,它会显示类似于目录(也就是缩写模式,也就是大纲)的东西,我只能在当前文件中看到所有函数的第一行(让它成为C源代码)。然后我可以将光标移动到我需要的功能,按下回车后,模式将切换到正常状态,我将处于我需要的功能中。对于那些喜欢将多个功能放在一个文件中的人非常有用。此功能使用起来非常简单:一个配置选项用于输入正则表达式以选择标题行,一个热键用于模式切换。
VIM已折叠。但这是不同的。折叠隐藏文件的一部分并显示折叠线指示器。在内容列表显示的折叠中指定要隐藏的内容要困难得多:您需要在标题行开始折叠并在下一个标题行之前结束。这比简单的正则表达式选择标题更复杂。
我非常想要这个功能,我甚至写了VIM macro来模仿这个MultiEdit行为,尽管我不太了解VIM。我之所以写这部分是因为学习一门新语言和编写一个宏比找出VIM折叠模块的复杂性更容易。 不幸的是,在升级VIM之后,这个宏现在不起作用(无限循环?)。我很久以前就已经写过了,关于VIM我所知道的一切都被遗忘了,我现在无法修复它。 (编辑:我修复了我的脚本。感谢@romainl的链接)。
我的问题是如何在VIM中显示这样的内容表?
答案 0 :(得分:7)
Drew Neil的这个recent vimcast解释了折叠的一般性,而this one经历了创建你(可能)之后的那种折叠的过程。
根据您使用的语言和编码风格,可以使用
这样简单的内容set foldmethod=marker
set foldmarker={,}
和zM
可以帮到你:
如果您想自定义显示的信息,上面的第二个链接几乎肯定就是您所需要的。
答案 1 :(得分:2)
查看ctags和vim插件tagbar。
答案 2 :(得分:1)
您还可以查看扩展名为unite的vim插件Unite-Ouline 它的行为非常接近你描述的行为。
答案 3 :(得分:1)
这不是很好,但你试过setlocal foldmethod=syntax
吗?它似乎在Windows上的7.3中做得不错。 ...虽然我刚刚意识到我们的编码标准在行的末尾有一个块的开口支撑,而不是在一个新的行上,如果我改为将它放在一个新行上,它的工作效果会大大降低。