VIM折叠标题中的语法突出显示

Mik*_*age 11 vim syntax-highlighting folding vim-syntax-highlighting

有没有办法让VIM继续将格式应用于用作折叠标题的行?

例如,我有以下代码:

int foo(int a, int b) {
    int c;
....
}
Run Code Online (Sandbox Code Playgroud)

折叠后,我看到:

+-- 4 lines: int foo(int a, int b) {----------------------------
Run Code Online (Sandbox Code Playgroud)

但是,整行都按照"折叠"类突出显示.有没有办法禁用它,所以我继续看到语法突出显示?

[举一个简单的例子,这不是那么重要,但我也在查看大数据文件时使用折叠,而且格式化对我来说更重要]


Her*_*itz 7

但是,整行都按照"折叠"类突出显示.有没有办法禁用它,所以我继续看到语法突出显示?"

不,折叠的标题文本不是文件的一部分,不能直接编辑,只是计算并叠加在屏幕上."折叠"突出显示应用于整条线,并且所有折叠都应用了相同的突出显示.

对于我使用vim作为大纲(在VimOutliner项目中)我破解了vim源以允许根据折叠级别进行不同的折叠突出显示,因此应用了多个折叠标题高光(例如FoldLevel1,FoldLevel2等) .我认为可以进一步破解使用已经存在的折叠头部文本突出显示,但考虑到折叠工作的方式,我怀疑可能比听起来更难.

抱歉,让我感到震惊的是,对于缩进的foldmethod的建议可能正是你正在寻找的,这确实保留了在未缩进的行中的语法,同时仍然使它们作为折叠部分的一种标题.


mmr*_*ins 5

我认为你正在寻找的是将foldmethod改为缩进而不是手动,这是默认的.在命令模式下键入此项.

:set foldmethod=indent
Run Code Online (Sandbox Code Playgroud)

现在,如果你进入你的foo函数并输入zm(将fold级别增加1),它将如下所示:

int foo(int a, int b) {
+--  2 lines: int c;------------------------------------------------------------
}
Run Code Online (Sandbox Code Playgroud)

foo行仍然会有语法高亮显示.当然要展开,输入zr.为方便起见,我在.vimrc中添加了以下几行来快速折叠或展开所有内容:

" Folding and unfolding
map ,f :set foldmethod=indent<cr>zM<cr>
map ,F :set foldmethod=manual<cr>zR<cr>
Run Code Online (Sandbox Code Playgroud)

还有一个也是一个很好的教程在这里,当然阅读使用foldmethod vim的帮助可能导致你,你喜欢比缩进更好的其他方法,但这样你的示例代码看起来,你可能会想缩进.

  • 我不认为如果你是折叠纯文本文件,语法高亮会很重要(我很想看到一个例子),但如果它确实适用同样的想法.如果您在要突出显示语法的行下面开始折叠,那么您仍应该看到要正确突出显示的行. (2认同)