繁体   English   中英

通过Modeline激活VIM折叠标记

[英]Activate VIM folding markers via modeline

我试图弄清楚为什么折叠不能与多行注释一起使用并且我没有想法。

让我们考虑这样的例子:

#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

但是,多行注释的任何变体都无法提供预期的结果。 例如:

/*
 * 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

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

模式行的默认值为5。这适用于您的示例。

请参阅:help modelines

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM