JavaScript 文件中的语法折叠在 Vim 中不起作用



我已经开始在 Ubuntu 上使用 Vim 7.4,并且对它非常满意,但只有一件事让我发疯:代码折叠不起作用(至少对于 JavaScript)!

当打开 js 文件并且语法突出显示有效时,语法会自动设置为 JavaScript,所以我不明白。foldmethod最初设置为"手动",将其设置为"语法"并没有什么区别,这让我感到困惑。我确实将let javaScript_fold=1添加到我的 .vimrc 文件中。

有什么线索吗?我将不胜感激。谢谢!

很难说这个问题的确切原因,但如果你没有javascript.vim文件,你可能应该这样做。我建议从这个增强的javascript语法配置开始。它可能会解决您的JavaScript折叠问题等等。

如果您只想专注于折叠问题,您可以尝试在~/.vim/syntax/javascript.vim中创建自己的 javascript.vim 文件,其中包含与我在下面给出的代码相同的代码。您可能希望根据自己的喜好调整折叠级别(0 表示完全折叠)。但是,这个简单的版本不能很好地处理包含大括号字符的注释,这是您希望使用更强大的javascript.vim的地方,例如我链接的javascript.vim。

syntax region foldBraces start=/{/ end=/}/ transparent fold keepend extend
setlocal foldmethod=syntax
setlocal foldlevel=0

应该补充一点,我自己和其他响应者都建议你需要一个javascript.vim,事实上,一些相同的贡献者。但是,我建议的最后一次更新是在 2015 年 12 月,而不是 2009 年。

我不知道

为什么您的解决方案不起作用,但可能的解决方案是使用用户创建的 vimscript,网址为 http://www.vim.org/scripts/script.php?script_id=1491

刚刚在 Vim Stack Exchange 上回答了同样的问题,答案是如果你确实使用股票syntax/javascript.vim文件,那么你必须设置

    vv
let g:javaScript_fold = 1
    ^^

问题中的命令与此处的区别是g:部分(上面突出显示)。我是 Vim 脚本的新手,但我相信区别在于let javaScript_fold=1设置了一个脚本局部变量,使其仅限于您的.vimrc文件,而上面的示例使其成为全局的(这似乎得到了这个 Stackoverflow 线程的证实)。有关详细信息,请参阅第 41.2 节 :help usr_41.txt:help internal-variables 中的变量。

这个Reddit线程也很有启发性;它与JavaScript无关,但折叠似乎对JS文件也很有用。

最新更新