在 Nano 中启用 Java Server Pages (JSP) 语法高亮





5.00/5 (2投票s)
创建自定义 nanorc 文件用于 nano 中的 JSP,以增强语法高亮和可读性,以及基本的自动完成
最近,在使用 nano 编辑 SSH 远程会话中的源文件时,我发现 nano 不支持 JSP 语法高亮,即使在最新的 Ubuntu 22 上的 6.2 版本中也是如此,仅仅是因为 /usr/share/nano 中没有 JSP 的 nanorc 文件。这个 github 仓库 中的一组改进的 nanorc 文件,支持更多语言,但也不支持 JSP。因此,我决定花一些时间为 JSP 编写我自己的 nanorc 文件。
就语言语法而言,JSP 文件只是 HTML 和 CSS 结构与 JavaScript 和 Java 源代码的组合,其中包含一些 JSP 特定的语法,例如 <% %>
或 <%= %>
。由于我的目的仅仅是让 JSP 在 nano 中看起来更丰富多彩,更易于阅读,我决定将 html.nanorc、css.nanorc、java.nanorc 和 javascript.nanorc 中找到的现有声明合并到一个名为 jsp.nanorc 的新文件中,同时合并/删除相似的声明,例如字符串或注释的声明。这样,我得到了一个新的 jsp.nanorc 文件,如下所示
令人惊讶的是,这似乎足够好了,JSP 文件现在可以正确地进行高亮显示,大部分情况下是这样。
然而,也存在一些限制。因为 nanorc 基于正则表达式匹配来决定要高亮显示的内容,而不会考虑作用域,所以像 // this is an invalid comment
这样的内容也会在 CSS 声明中被高亮显示(例如, <style> … </style>
)。诸如 <!–- HTML Comment -–>
之类的结构也会在 <% .. %>
中被高亮显示为注释,即使这不是 Java 中的有效注释。我还跳过了 CSS 元素或类的语法高亮显示(例如, #myButton
或 .myStyle
),仅仅是因为简单的匹配标准(例如,以井号或点开头)会匹配代码中其他无关的部分,导致最终的 JSP 页面看起来一团糟。改进这一点需要理解 JSP 文件中当前使用的语言类型,并仅在 <style>…</style>
中应用 CSS 高亮显示,或仅在 <% .. %>
中应用 Java 高亮显示,这对于 nanorc 来说过于复杂。
顺便说一下,可以通过 Ctrl-] 实现基本的自动完成(建议当前文件中可以找到的所有单词)。 在上面的例子中,输入 r 并按下 Ctrl-] 将建议 red(来自 CSS 声明),然后是 random(来自 Java 代码)。为了使其工作,您必须先输入几个字符,然后按 Ctrl-],否则 nano 会说“没有单词片段”或“没有匹配项”。显然,我不能期望 Visual Studio 级别的自动完成,但是一个下拉菜单让我能够从当前文件夹中具有相同扩展名的所有文件中选择单词,这将非常有帮助。 别让我开始谈论 vim 或 emacs 的反直觉键盘快捷键,据说它们对自动完成有更复杂的支持。
完整的 jsp.nanorc 文件可以从 这里 下载,供感兴趣的人使用。删除 .txt 扩展名,并将其复制到 /usr/share/nano(或您的发行版上安装 nanorc 文件的位置),以启用 JSP 的语法高亮显示。