vim 中的 Javascript 语法高亮显示

Posted

技术标签:

【中文标题】vim 中的 Javascript 语法高亮显示【英文标题】:Javascript syntax highlighting in vim 【发布时间】:2010-09-08 16:46:55 【问题描述】:

有没有其他人发现 VIM 的 javascript 语法高亮不是最佳的?我发现有时我需要滚动来调整语法突出显示,因为有时它会神秘地放弃所有突出显示。

是否有任何解决方法或方法来解决此问题?我正在使用 vim 7.1。

【问题讨论】:

【参考方案1】:

您可能想试试这个improved Javascript syntax highlighter,而不是 VIMRUNTIME 附带的那个。

【讨论】:

小心:我注意到改进的荧光笔的作者在最新版本中更改了语法同步 fromstart ......所以你看到的问题可能会在这个荧光笔中开始发生。看起来过去,它总是从头开始。 我已经尝试了 9/12/08 版本和 05/17/07 版本,但它们都没有改善这种情况。在中间打开一个复杂的 javascript 文件仍然不会突出显示,我必须向上滚动几页才能让 vim 开始正确突出显示。 @thomas 和 @michael 您可以设置 vim 用于创建突出显示的框架。我不记得实际设置是什么,但它设置了vim在确定语法突出显示时应该查看的当前显示窗口上方和下方的行数 那个有太多的语法项目链接到 Special,但这很容易解决。而且似乎比 Vim 自带的要好。 插件以奇怪的方式处理除号。包括除号在内的所有内容都像文字一样呈红色。 .../2*x+4...".../2*x+4..." 的颜色相同【参考方案2】:

语法着色同步可能需要调整。我发现在某些情况下我需要更改它。

语法同步 (":help syn-sync") 控制 vim 如何跟踪并刷新其对着色代码的解析,以便它可以开始在文件中的任何位置绘图。

默认设置并不总是适合我,所以有时我发现自己在发布

:syn sync fromstart

我建议阅读下的文档

:help syn-sync

或者只是检查

:help syntax

并找到关于同步的部分。

在四个可用的基本选项中做出明智的决定。 我维护到功能键的映射,以在“fromstart”和“ccomment”模式之间切换,并仅用于清除同步设置。

【讨论】:

【参考方案3】:

为了快速而肮脏的修复,有时我只是上下滚动并重新调整突出显示。 Ctrl+L 重绘屏幕也可以修复。

【讨论】:

【参考方案4】:

好吧,我已经修改了Yi Zhao's Javascript Syntax,并添加了 Ajax 关键字支持,还突出显示了 DOM 方法和其他方法。

在这里,它远非完美,因为我还是 Vim 的新手,但到目前为止它对我有用。 My Javascript Syntax。如果你能修复,添加功能,请做。

更新:我忘记了这些语法高亮只有在您将它们包含在自己的颜色方案中时才会显示,就像我在 Nazca 颜色方案中所做的那样。我将测试是否可以将这些行添加到我修改后的语法文件中。

按照github中的新版javascript语法文件,不再需要修改您当前的颜色方案。

【讨论】:

我喜欢您的屏幕截图的外观,但是当我加载它时,您的语法文件与标准 vim js 语法没有任何不同。我有其他自定义语法文件,所以我想知道为什么你的不起作用.. 我的是基于 Yi Zhao 的,我发现它比标准的 vim js 语法要好得多。此外,我为 vim 的 Nazca 颜色方案添加了额外的行。我没有尝试将这些行直接添加到修改后的语法文件中。实际上,将这些线条添加到您自己的配色方案中非常容易和简单。 啊,它没有做任何事情,因为我没有看到您还必须在任何配色方案中添加额外的线条。现在明白了。谢谢! 快更新了,语法文件已经很成熟了,各种配色都很好玩,感谢community efforts【参考方案5】:

这是一篇非常老的帖子,但我遇到了同样的事情:有时在查看 .html 文件中的 javascript 部分时,语法高亮会停止工作。正如 OP 所提到的,一个快速的解决方法是向上滚动,然后神奇地再次开始突出显示。

今天我发现了根本问题和一个好的解决方案。在 Vim 中,语法高亮使用上下文来导出正确的高亮,其中上下文由前几行定义。可以通过发出:syntax sync minlines=200 来指定当前行之前的行数。在这种情况下,它将使用多达 200 行作为上下文。通过运行:syntax sync fromstart,可以使用整个文件(对于长文件可能会很慢)。

一旦发现,我就将这一行添加到我的.vimrc

autocmd BufEnter *.html :syntax sync fromstart

通过这样做,.html 文件将使用整个文件作为上下文。因此,无论 JS 部分有多长,javascript 部分都将始终正确突出显示。希望这对其他人有帮助!

【讨论】:

这是解决 HTML/JS 语法高亮问题的最佳解决方案。我不知道为什么 VIM 仍然有这个无法修复的错误。 github.com/vim/vim/issues/1775 在 Windows 10 中,当我在我的主目录中创建了一个 _vimrc 文件,其中包含来自此答案的行时,突出显示完全停止工作,因为没有使用默认的 VIM 配置文件。结果,我在_vimrc 文件source $VIM/_vimrc 中创建了第一行,一切都按预期工作。

以上是关于vim 中的 Javascript 语法高亮显示的主要内容,如果未能解决你的问题,请参考以下文章

vim 中 .ejs 文件的语法高亮显示

vim语法高亮显示

将vim语法高亮导出到latex

Vim中如何设置语法高亮和行号

设置Linux下vi和vim语法高亮显示行数

设置Linux下vi和vim语法高亮显示行数