nano 可以像 gedit 和 vim 一样进行语法高亮吗?我该如何启用它?我至少需要 bash 和 python 语法高亮。
答案1
nano 编辑器本身为一些语言和脚本提供了语法高亮功能。查看/usr/share/nano/
nits@nits-excalibur:~$ ls /usr/share/nano/
asm.nanorc fortran.nanorc man.nanorc ocaml.nanorc ruby.nanorc
awk.nanorc gentoo.nanorc mgp.nanorc patch.nanorc sh.nanorc
c.nanorc groff.nanorc mutt.nanorc perl.nanorc tcl.nanorc
cmake.nanorc html.nanorc nano-menu.xpm php.nanorc tex.nanorc
css.nanorc java.nanorc nanorc.nanorc pov.nanorc xml.nanorc
debian.nanorc makefile.nanorc objc.nanorc python.nanorc
将它们链接到您的用户的 nano 配置文件(存在于~/.nanorc
、${XDG_CONFIG_HOME}/nano/nanorc
或~/.config/nano/nanorc
,以先遇到的为准),使用类似于以下行的内容:
nits@nits-excalibur:~$ cat ~/.nanorc
include /usr/share/nano/sh.nanorc
现在,无论你链接什么文件,nano 中都会启用语法高亮显示(你也可以链接多个文件)
注意:有时,segmentation fault
在编辑~/.nanorc
文件后,您可能会收到一个错误。如果出现此类错误,请取消设置 语言环境变量会有所帮助。您可以在终端中取消设置它unset LANG
。(解决方案来自这里)
如果你对 bash 的高亮不满意,还有其他解决方案。其中一个例子可以找到这里
include /usr/share/nano/*
如果您的 nano 版本支持,您还可以写入~/.nanorc 文件以启用所有语言的突出显示。
答案2
是的,你可以,但是默认的语法定义相当差且不完整。我正在维护一组更准确的定义这里,适合任何认为它们有用的人。
要安装,请运行:
git clone https://github.com/scopatz/nanorc.git
cd nanorc
make install
将这些行添加到 ~/.nanorc
include ~/.nano/syntax/html.nanorc
include ~/.nano/syntax/css.nanorc
include ~/.nano/syntax/php.nanorc
include ~/.nano/syntax/ALL.nanorc
指定您想要着色的文件,然后您必须根据自己的喜好调整这些颜色。ALL.nanorc
描述所有尚未分类的文件的功能。这些是您入门所需的工具,而不是最终的精致产品。
答案3
我使用此命令快速启用所有可用语言。
find /usr/share/nano/ -iname "*.nanorc" -exec echo include {} \; >> ~/.nanorc
正如其他答案中提到的,/usr/share/nano/
包含不同语言的定义。
$ ls /usr/share/nano
asm.nanorc fortran.nanorc man-html ocaml.nanorc ruby.nanorc
awk.nanorc gentoo.nanorc man.nanorc patch.nanorc sh.nanorc
cmake.nanorc groff.nanorc mgp.nanorc perl.nanorc tcl.nanorc
c.nanorc html.nanorc mutt.nanorc php.nanorc tex.nanorc
css.nanorc java.nanorc nanorc.nanorc pov.nanorc xml.nanorc
debian.nanorc makefile.nanorc objc.nanorc python.nanorc
还提到,要启用语言突出显示,您include
需要将要启用的语言定义路径添加到文件中~/.nanorc
。例如,要启用 C/C++,您需要添加此行。
include /usr/share/nano/c.nanorc
该find
命令在指定目录中搜索文件或目录。
- 该
-iname
标志告诉它只查找名称以 结尾的文件.nanorc
。 - 标志
-exec
定义了对找到的每个文件执行的命令。 - 被
{}
文件名替换。 \;
用于表示对该命令执行的结束find
。- 最后,
>> ~/.nanorc
将输出附加到您的~/.nanorc
文件。
答案4
您可以使用它来包含所有内容:(将其添加到~/.nanorc
文件)
include "/usr/share/nano/*.nanorc"
祝你编码愉快!