最近我在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来证实这一点。行为没有改变。
在正则表达式中使用转义尖括号的任何语法定义都会给我带来同样的问题。谷歌搜索这个问题已证明没有结果,所以我不知所措。我非常感谢任何帮助。
答案 0 :(得分:2)
我猜你是在OS X上,因为这是Apple继续使用的版本。 (我认为是许可原因。)Apple的libc似乎不支持\<
和\>
,也不支持\b
。分别用[[:<:]]
和[[:>:]]
替换它们应该有效。
另请参阅:http://www.regular-expressions.info/wordboundaries.html#posix
答案 1 :(得分:1)
听起来像你的libc正则表达式实现的问题,或者可能是因为你使用的是相当旧版本的nano,它可能静态地链接到较旧的libc。如果可能,您可以尝试更新到新版本。
您还可以尝试使用\b
替换\<
和\>
。 应等同。