我在用着 nano 在服务器上通过SSH;在该系统上, nano 默认情况下没有启用语法颜色。所以我复制了这些 纳米法 文件(有关替代方案,另请参阅 @craigbarnes的答案)在服务器上,并设置了 ~/.nanorc 作为:

include "~/nanosyntax/syntax-nanorc/php.nanorc"
include "~/nanosyntax/syntax-nanorc/php2.nanorc"
include "~/nanosyntax/syntax-nanorc/sh.nanorc"
include "~/nanosyntax/syntax-nanorc/python.nanorc"
include "~/nanosyntax/syntax-nanorc/html.nanorc"
include "~/nanosyntax/syntax-nanorc/perl.nanorc"
include "~/nanosyntax/syntax-nanorc/ruby.nanorc"
include "~/nanosyntax/syntax-nanorc/js.nanorc"

现在,这就是事情;如果我只是打电话:

nano somefile.php

... 不 php 语法着色已完成。如果我试图强迫:

nano --syntax=php somefile.php

...仍然没有语法着色(如纯文本所示)。但是,如果我这样做:

nano ~/.nanorc

... 然后我 获得语法着色(对应于 .nanorc 键入文件)?!

因此,很明显,语法着色是这样的作品(即外壳和 nano 具有它的能力) - 除了某些语言似乎被忽略了,例如在这种情况下 php ?!

因此,有人知道发生了什么吗?我如何获得语法着色 php 文件?

谢谢,
干杯!

有帮助吗?

解决方案

我只是遇到了同样的问题,我在其中的一些问题上摆弄了一些问题。令人惊讶的是,事实证明,更改纳入顺序解决了问题:

这起作用:

include "~/.nano/nanorc.nanorc"
include "~/.nano/sh.nanorc"
# more includes...

这未能突出显示SH文件:

include "~/.nano/sh.nanorc"
include "~/.nano/nanorc.nanorc"
# more includes...

所以我想这可能是一个错误(在nano 2.2.2中;在nano 2.1.7中工作正常)

其他提示

嗯...好吧,看来我正在使用的服务器上有升级。起初, nano 默认没有语法着色,这就是为什么我使用自己的独立 ~/.nanorc.

但是,现在,在升级的服务器上, nano 似乎默认使用PHP语法着色 - 我有自己的独立 ~/.nanorc 似乎已经冲突了;因为,一旦我评论了私人的所有条目 ~/.nanorc (带着 #),PHP语法着色回来了!

Wholdathunkit?! :)
干杯!


编辑:只是添加一些有关Nano的注释:

如上所述,语法着色被迫 --syntax 转变;查看哪些语法可用:

grep 'include' /etc/nanorc |       # find lines containing 'include' in nanorc
  grep -v '^#' |                   # don't process lines that start with '#'
    sed 's_.*/\(.*\)\.nanorc"_\1_' # extract plain filenames

此命令的结果类似:

nanorc
c
css
debian
gentoo
html
...

因此,要强制“ nanorc”语法着色,您可以使用:

nano --syntax=nanorc /usr/share/nano/nanorc.nanorc

..或强制“ bash” shell脚本语法着色(特别有用 bashrc) 将会:

nano --syntax=sh ~/.bashrc

Google代码上的那些“纳米数字”文件几乎与Nano随附的文件一样糟糕。

Nano的突出显示引擎比具有嵌套上下文的东西(例如GTKSourceView)更为基础,但是您不必为糟糕的突出显示:

https://github.com/craigbarnes/nanorc

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top