我试图弄清楚为什么折叠不适合多行注释并且我没有想法。
让我们考虑这样的例子:
#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
答案 0 :(得分:2)
检查modelines
的设置。 Vim在第一行或最后一条模式行中搜索Modeline。将模式行设置为1时,模型必须位于文件的第一行或最后一行。
模式行的默认值为5。这适用于您的示例。
请参见:help modelines