服务器上的Nano忽略了某些语法着色

时间:2011-01-20 07:46:50

标签: syntax-highlighting nano

我通过ssh在服务器上使用nano;在该系统上,nano默认情况下未启用语法颜色。因此,我在服务器上复制了这些nanosyntax文件(替代方案,另请参阅@CraigBarnes' answer ),并将~/.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类型文件)?!

很明显,语法着色就像这样工作(即shell和nano能够实现) - 除了,它似乎被某些语言忽略了,比如在这种情况下php?!

那么,有没有人知道发生了什么 - 我怎样才能为php文件获得语法着色?

谢谢,
干杯!

3 个答案:

答案 0 :(得分:6)

我遇到了同样的问题,我在包含中找到了错误。令人惊讶的是,事实证明改变包含顺序解决了这个问题:

这有效:

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中运行良好)

答案 1 :(得分:1)

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

然而,现在,在升级后的服务器上,默认情况下nano似乎与php语法着色一起使用 - 而且我自己单独的~/.nanorc似乎有冲突;因为,一旦我评论了私有~/.nanorc中的所有条目(带有#),php语法着色就回来了!!

Whowouldathunkit?! :)
干杯!


编辑:只是添加一些关于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

答案 2 :(得分:1)

Google Code上的那些“nanosyntax”文件几乎与默认使用nano的文件一样糟糕。

nano的突出显示引擎比嵌套上下文(例如GtkSourceView)更基本,但你不必满足于蹩脚的突出显示:

https://github.com/craigbarnes/nanorc