如何在nano中启用语法突出显示?


184

nano可以像gedit和vim一样突出显示语法吗?如何启用它?我至少需要bash和python语法突出显示。


1
非常感谢git repo中的语法文件,我现在在所有服务器上都使用它...保持良好的工作状态!

1
@TheGene评论并感谢答案。这个回购被记在问他这个问题的那个人身上,而不是我身上。
Oxwivi 2014年

Answers:


175

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,该文件类似于此行:

nits@nits-excalibur:~$ cat ~/.nanorc
include /usr/share/nano/sh.nanorc

现在,nano中为链接的任何文件启用了语法高亮显示(您也可以链接多个文件)

语法突出显示的屏幕截图

注意:有时,segmentation fault编辑~/.nanorc文件后可能会出现一个。如果发生此类错误,则取消设置LANG环境变量会有所 帮助。您可以unset LANG在终端中使用取消设置。(从这里获得的解决方案)

如果您对bash突出显示不满意,还有其他解决方案。这样的一个例子可以在这里找到

include /usr/share/nano/*如果您的nano版本支持,您还可以写入〜/ .nanorc文件以突出显示所有语言。


1
这些行没有注释/etc/nanorc-全局设置是否被覆盖~/.nanorc?如何禁用.nanorc
Oxwivi 2011年

13
哦,等等,我什至没有~/.nanorc文件。
Oxwivi 2011年

1
等待,等等,include即使我没有启用所有行的全局设置也不能启用语法高亮显示.nanorc呢?
Oxwivi 2011年

9
ls -1 /usr/share/nano/*.nanorc | sed 's/^\//include \//' >> ~/.nanorc将它们全部添加到您的.nanorc文件,如果不存在则创建它。
Thom Porter

9
include /usr/share/nano/*不工作
亚雷克雅库博夫斯基

74

是的,您可以,但是默认语法定义非常差且不完整。我保持一个更准确的定义集在这里,任何人谁发现它们非常有用。

要安装,请运行:

git clone https://github.com/nanorc/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介绍所有尚未归类文件的功能。这些是您入门所需的工具,而不是最终抛光的产品。


6
感谢您在GitHub中保留这些漂亮的语法定义。
鲁本斯·马里努佐

3
我的* .js文件不工作...编辑的/ etc / nanorc删除任何其他语法包括按常见问题github.com/nanorc/...。♥Nano♥nanorc
卡尔顿

5
我刚刚在Mac OSX上安装了语法定义。我只需要注意一件事,那就是python的开放式括号的黑色在我的终端的黑色背景下丢失了
Tom Busby 2014年

5
其实有问题,某些彩色文字是黑色的!如果我们的终端背景为黑色,则这些单词是不可见的!
dukevin 2014年

8
您的链接
无效-not2qubit

52

我使用此命令快速启用了所有可用的语言。

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文件中。

很好的提示和解释,非常感谢!;)
daveoncode

谢谢,看起来您不需要iname标志。以下似乎也可以找到/usr/share/nano/*.nanorc
Milind

非常感谢!
VIX

7

这应该包括默认情况下包括的所有语法高亮插件,以及您添加到/ usr / share / nano的所有插件:

find /usr/share/nano -name '*.nanorc' -printf "include %p\n" > ~/.nanorc

或者,编辑/ etc / nanorc并查看是否可以取消注释其中的内容。

如果您使用的Nano版本拒绝接受.nanorc文件中的通配符,则此方法有效。

每当您添加其他.nanorc颜色配置时,只需运行此行即可。




1
wget -r -nH --cut-dirs=3 --no-parent --reject="index.html*" https://nanosyntax.googlecode.com/svn/trunk/syntax-nanorc/ -P ~/.nano-syntax
for i in `ls --color=never -1 ~/.nano-syntax/*.nanorc` ; do echo "include $i" >> ~/.nanorc ; done

22
如果您可以解释为什么这对于新用户来说是有用的答案,那将很有帮助。命令在做什么?它会发生什么变化?随机建议运行命令行没有帮助。
凯文·鲍文

1

纳米的最完整和最新的语法hilighters保持在这里

要为您的用户安装所有荧光笔,只需运行:

cd /tmp
git clone https://github.com/tech4david/nano-highlight.git
cd nano-highlight/
make install
echo "include ~/.nano/syntax/ALL.nanorc" >> ~/.nanorc

解决方案很好,但是我将使用另一个文件夹git clone。该/tmp文件夹中的内容otf 将在每次系统启动时删除,因此您永远无法运行git pull
AB

您的语言标签有误。js不是bashshell-script并且我已将链接放置在单词的后面here。问题出在哪儿?
AB

1
@AB并不重要,因为您将make install所有语法文件都复制到了它们所属的安全位置后,该文件夹是否消失了~/.nano/syntax
Pablo A

1

对于遵循上述说明后仍遇到问题的人员,还请检查是否有重复的定义。这将禁用所有的语法高亮显示所有文件。我在添加nanorc.nanorc文件后遇到了这个问题,但没有意识到我~/.nanorc已经有一个相同的部分,即:

## Here is an example for nanorc files.
##
syntax "nanorc" "\.?nanorc$"
## Possible errors and parameters
icolor brightwhite "^[[:space:]]*((un)?set|include|syntax|i?color).*$"
## Keywords
icolor brightgreen "^[[:space:]]*(set|unset)[[:space:]]+(autoindent|backup|$
icolor green "^[[:space:]]*(set|unset|include|syntax)\>"
(...)

0

我在这里找到了js的语法高亮。

我将其附加到我的用户文件中 ~/.nanorc

但是,要获取可以追加到其中的文件,我必须先将拷贝/usr/share/nano/nanorc.nanorc到本地文件夹~/.nanorc


0

我不小心使用键盘快捷键Alt+ 禁用了突出显示Y。可以使用相同的键盘快捷键再次将其打开。


0

我知道这是一个旧线程,但也许我的解决方案可以帮助您

在/ etc / nanorc中编辑文件

在第243行,您可以找到很多包含文件。只需取消注释您需要,保存和完成的内容即可。

## Nanorc files
include "/usr/share/nano/nanorc.nanorc"

## C/C++
include "/usr/share/nano/c.nanorc"

## Makefiles
include "/usr/share/nano/makefile.nanorc"

## Cascading Style Sheets
include "/usr/share/nano/css.nanorc"

## Debian files
include "/usr/share/nano/debian.nanorc"

## Gentoo files
# include "/usr/share/nano/gentoo.nanorc"

我不确定如果您更新nano,这些更改是否会消失。


-1

我只是编写了此脚本,以将颜色添加到nano:但是,当然,您必须在/ usr / share / nano中具有颜色代码才能起作用。如果有错误:只需手动编辑〜/ .nanorc文件并删除出现错误的行。

#!/bin/bash

for i in `ls /usr/share/nano`
  do
    echo "include /usr/share/nano/$i" >> ~/.nanorc
  done

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.