我通过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
文件获得语法着色?
谢谢,
干杯!
答案 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)更基本,但你不必满足于蹩脚的突出显示: