4

nano通过 ssh 在服务器上使用;在该系统上,nano默认情况下没有启用语法颜色。所以我在服务器上复制了这些nanosyntax文件(另见@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类型文件)?!

很明显,语法着色作为这样的作品(即shell并且nano能够做到) - 除了,它似乎被某些语言忽略了,就像在这种情况下php?!

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

谢谢,
干杯!

4

3 回答 3

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

于 2011-07-11T08:19:13.030 回答
1

嗯...好吧,我使用的那台服务器似乎已经升级了;最初,nano默认情况下没有语法着色,这就是我使用自己单独的~/.nanorc.

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

Whowouldathunkit?!:)
干杯!


编辑:只是添加一些关于纳米的注释:

如上所述,语法着色是通过--syntaxswitch 强制执行的;查看可用的语法:

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
于 2011-01-20T15:40:33.060 回答
1

Google Code 上的那些“nanosyntax”文件几乎与默认情况下带有 nano 的文件一样糟糕。

nano 的高亮引擎比嵌套上下文(例如 GtkSourceView)更基本,但你不必满足于糟糕的高亮:

https://github.com/craigbarnes/nanorc

于 2012-06-19T18:41:10.540 回答