语法高亮显示在nano中未按预期工作(regex错误)



最近我在nano中做了一些简单的C编码,语法高亮显示的行为很奇怪。我对命令行不是很有经验,所以我可能在无意中做错了什么。希望这里有人能给我一个建议。

我下载了nano 2.0.6附带的示例C语法文件(因为这是预装的版本),并在使用时注释掉了一行。其中一些工作如预期,但一些重要部分,如下面的行,则不起作用:

color green "<(float|double|bool|char|int|short|long|sizeof|enum|void|static|const|struct|union|typedef|extern|(un)?signed|inline)>"

我确定的是,虽然它不会用绿色突出显示int,但它会用绿色突出。或者,等等。也就是说,看起来是转义的尖括号(表示单词边界)表现得好像它们没有转义一样。我通过删除反斜杠并重新启动nano来确认这一点。行为没有改变。

任何在正则表达式中使用转义尖括号的语法定义都会给我带来同样的问题。事实证明,在谷歌上搜索这个问题毫无结果,所以我不知所措。如果有任何帮助,我将不胜感激。

我猜你使用的是OS X,因为这是苹果继续使用的版本。(我想是出于许可的原因。)苹果的libc似乎不支持<>,也不支持b。用[[:<:]][[:>:]]分别替换它们应该有效。

另请参阅:http://www.regular-expressions.info/wordboundaries.html#posix

听起来像是libc-regex实现的问题,或者可能是因为您使用的是相当旧的nano版本,该版本可能静态链接到旧的libc。如果可能的话,你可以尝试更新到新版本。

您也可以尝试使用b来替换<>。它应该是等效的。

最新更新