题
我在用着 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)更为基础,但是您不必为糟糕的突出显示: