vim 语法高亮混淆/失败

Syntax Highlight Confusion / Fail in vim

假设您的 .js(x) 文件中有以下行并使用 VIM 作为您最喜欢的文本编辑器

if (foundArray = decodeURIComponent(location.hash).toLowerCase().match(/^#\/([0-9a-zäüöß\-_]+)?\/*$/i)) {

该正则表达式的 /* 部分将导致 VIM 将以下所有行变灰,因为它假定以下所有符号都已被注释掉。

有人遇到同样的问题吗?关于解决方法、语法突出显示的任何建议 scripts/plugins?

编辑

我尝试使用最小的 vim 配置(和 vim -u minimalconfig)。相同的结果...

minimalconfig 的内容:

set nocompatible
filetype on
filetype plugin indent on
syntax on
syntax enable
set background=dark

是的,这是包含的 JavaScript 语法突出显示的限制。有替代的 JavaScript 荧光笔可以满足这种情况:

它们各自还对 JavaScript 突出显示进行了其他更改,因此您可能想同时尝试一下,看看您更喜欢哪一个。

或者,重写您的 JavaScript 以避免在正则表达式文字中包含 /*,例如通过以下之一:

  • 使用 {0,} 表示零个或多个,而不是 *
  • 将模式放入字符串中并使用 Regexp('^#/…', 'i') 显式构造它 — /* 将位于字符串常量中,这不会混淆荧光笔。