1

最近我一直在用 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 来确认这一点。行为没有改变。

任何在正则表达式中使用转义尖括号的语法定义都会给我同样的问题。谷歌搜索这个问题已被证明是徒劳的,所以我很茫然。我将不胜感激任何帮助。

4

2 回答 2

2

我猜你使用的是 OS X,因为那是 Apple 继续使用的版本。(我认为是许可原因。)Apple 的 libc 似乎不支持\<and \>,也不支持\b. [[:<:]]分别用和替换它们[[:>:]]应该可以工作。

另见:http ://www.regular-expressions.info/wordboundaries.html#posix

于 2013-11-06T07:00:04.280 回答
1

听起来像是您的 libc 正则表达式实现的问题,或者可能是因为您使用的是相当旧的 nano 版本,它可能静态链接到较旧的 libc。如果可能,您可以尝试更新到新版本。

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

于 2012-08-27T16:51:28.863 回答