【问题标题】:Activate VIM folding markers via modeline通过模式行激活 VIM 折叠标记
【发布时间】:2019-01-04 19:57:29
【问题描述】:

我试图弄清楚为什么折叠不适用于多行 cmets,但我不知道。

让我们考虑这样的例子:

#include <stdio.h>
#include <stdlib.h>

void
panic(void) /* {{{ */
{
    abort();
}
/* }}} */

void
say_hello(void) /* {{{ */
{
    printf("Hello, World \n");  
}
/* }}} */

void
say_goodbye(void) /* {{{ */
{
    printf("Good Bye, World \n");
    panic();
}
/* }}} */

int
main(void) /* {{{ */
{
    void (*message) (void);

    message = say_goodbye;
    message();

    message = say_hello;
    message();

    return 0;
}
/* }}} */

以下模式行按预期工作。打开文件时,我看到所有代码都折叠了:

/* vim600: set noet sw=4 ts=4 fdm=marker : */

// vim600: noet sw=4 ts=4 fdm=marker

命令:verbose set syntax filetype foldmethod foldexpr

显示预期输出

  syntax=c
        Last set from /usr/share/vim/vim74/syntax/syntax.vim
  filetype=c
        Last set from /usr/share/vim/vim74/filetype.vim
  foldmethod=marker
        Last set from modeline
  foldexpr=0

但是,多线 cmets 的任何变化都不会产生预期的结果。例如:

/*
 * vim600: noet sw=4 ts=4 fdm=marker
 * vim<600: noet sw=4 ts=4
 */

甚至

/* Modeline for ViM {{{
 * vim: noet:sw=4:ts=4
 * vim600: noet:sw=4:ts=4:fdm=marker
 * }}} */

打开文件时不会自动折叠代码:

  syntax=c
        Last set from /usr/share/vim/vim74/syntax/syntax.vim
  filetype=c
        Last set from /usr/share/vim/vim74/filetype.vim
  foldmethod=manual
  foldexpr=0

【问题讨论】:

  • 为我工作。 :set modelines? 返回什么?
  • :set modelines? 返回modelines=1

标签: vim folding modeline


【解决方案1】:

检查modelines的设置。 Vim 在第一个或最后一个模式行中搜索模式行。模式行设置为 1 时,模式行必须位于文件的第一行或最后一行。

modelines 的默认值为 5。这适用于您的示例。

:help modelines

【讨论】:

    猜你喜欢
    • 2014-01-12
    • 2012-06-13
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多