VIM折叠标题中的语法突出显示
-
06-07-2019 - |
题
有没有办法让VIM继续将格式应用到用作折叠标题的行?
例如,我有以下代码:
int foo(int a, int b) {
int c;
....
}
折叠后,我看到:
+-- 4 lines: int foo(int a, int b) {----------------------------
然而,整行都按照“折叠”字样突出显示。类。有没有办法禁用它,所以我继续看到语法突出显示?
[举一个简单的例子,这不是那么重要,但我在查看大数据文件时也使用折叠,而且格式对我来说更重要]
解决方案
然而,整行都按照“折叠”字样突出显示。类。有没有办法禁用它,所以我继续看到语法突出显示?"
不,折叠的标题文本不是文件的一部分,不能直接编辑,只是计算并叠加在屏幕上。 “折叠”突出显示应用于整条线,并且所有折叠都应用了相同的突出显示。
对于我使用vim作为大纲(在VimOutliner项目中),我修改了vim源以允许根据折叠级别进行不同的折叠突出显示,因此应用了多个折叠标题高光(例如FoldLevel1,FoldLevel2,等等。)。我认为可以进一步破解使用已经存在的折叠头部文本突出显示,但考虑到折叠工作的方式,我怀疑可能比听起来更难做。
很抱歉,让我感到震惊的是,对于缩进的foldmethod的建议可能正是你正在寻找的,这确实保留了未缩进行中的语法,同时仍然将它们作为折叠部分的一种标题。
其他提示
我认为您正在寻找的是将foldmethod更改为缩进而不是手动,这是默认设置。在命令模式下输入。
:set foldmethod=indent
现在,如果你进入你的foo函数并输入zm(将fold级别增加1),它将如下所示:
int foo(int a, int b) {
+-- 2 lines: int c;------------------------------------------------------------
}
foo行仍然会有语法高亮显示。当然要展开,输入zr。为方便起见,我在.vimrc中放了以下几行来快速折叠或展开所有内容:
" Folding and unfolding
map ,f :set foldmethod=indent<cr>zM<cr>
map ,F :set foldmethod=manual<cr>zR<cr>
还有一个很好的教程这里,当然还有阅读vim的帮助在foldmethod上可能会引导你使用其他方法,而不是缩进,但是你的示例代码看起来可能需要缩进。
不隶属于 StackOverflow