如何在 nano 中启用语法高亮?

Oxw*_*ivi 216 nano syntax-highlighting

nano 可以像 gedit 和 vim 那样做语法高亮吗?我怎样才能启用它?我至少需要 bash 和 python 语法亮点。

Nit*_*esh 206

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
Run Code Online (Sandbox Code Playgroud)

它们链接到你的用户的纳米配置文件(出席~/.nanorc${XDG_CONFIG_HOME}/nano/nanorc或者~/.config/nano/nanorc,无论先遇到哪个)有类似的东西,以这条线:

nits@nits-excalibur:~$ cat ~/.nanorc
include /usr/share/nano/sh.nanorc
Run Code Online (Sandbox Code Playgroud)

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

语法高亮截图

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

如果您对 bash 突出显示不满意,还有其他解决方案。可以在此处找到此类示例之一

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

  • 哦等等,我什至没有`~/.nanorc` 文件。 (17认同)
  • `ls -1 /usr/share/nano/*.nanorc | sed 's/^\//include \//' >> ~/.nanorc` 将它们全部附加到您的 .nanorc 文件中,或者如果它不存在则创建它。 (13认同)
  • ```include /usr/share/nano/*``` 不起作用 (12认同)
  • 等等,等等,为什么即使我没有“.nanorc”,所有“include”行的全局设置也没有启用语法高亮? (3认同)
  • 要在编辑具有无法识别的文件扩展名(例如“~/.bashrc”)的文件时启用语法突出显示,可以使用“--syntax”选项。例如:`nano --syntax=sh ~/.bashrc` (2认同)

小智 91

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

要安装,请运行:

git clone https://github.com/scopatz/nanorc.git
cd nanorc
make install
Run Code Online (Sandbox Code Playgroud)

将这些行添加到 ~/.nanorc

include ~/.nano/syntax/html.nanorc
include ~/.nano/syntax/css.nanorc
include ~/.nano/syntax/php.nanorc
include ~/.nano/syntax/ALL.nanorc
Run Code Online (Sandbox Code Playgroud)

指定要为其着色的颜色,您必须根据自己的喜好调整这些颜色。在ALL.nanorc所有尚未归类文件介绍的一些功能。这些是您入门所需的工具,而不是最终抛光的产品。

  • 你有一个死链接 (13认同)
  • 我刚刚在 Mac OSX 上安装了你的语法定义。我只需要注意一件事,那就是 python 中开括号的黑色在我终端的黑色背景下丢失了 (5认同)
  • 其实有一个问题,有的彩色文字是黑色的!如果我们的终端背景是黑色的,这些字是看不见的! (5认同)
  • 我的 *.js 文件不起作用...编辑 /etc/nanorc 以删除任何其他语法包括根据常见问题解答 https://github.com/nanorc/nanorc#why-does-syntax-highlighting-only-work -for-a-subset-of-supported-files。♥ 纳米♥ 纳米 (3认同)
  • 感谢您的辛勤工作!你应该将其放入[上游存储库](https://bugs.launchpad.net/ubuntu/+source/nano),恕我直言 (2认同)

Dre*_*pin 63

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

find /usr/share/nano/ -iname "*.nanorc" -exec echo include {} \; >> ~/.nanorc
Run Code Online (Sandbox Code Playgroud)

如其他答案/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
Run Code Online (Sandbox Code Playgroud)

还提到,要启用语言的突出显示,include您需要在~/.nanorc文件中添加要启用的语言定义的路径。因此,例如,要启用 C/C++,您需要添加这一行。

include /usr/share/nano/c.nanorc
Run Code Online (Sandbox Code Playgroud)

find命令在指定目录中搜​​索文件或目录。

  • -iname标志告诉它只查找名称以.nanorc.
  • 这些-exec标志定义了对找到的每个文件执行的命令。
  • {}得到的文件名替换。
  • \;用于表示要执行到find命令的命令的结束。
  • 最后,>> ~/.nanorc将输出附加到您的~/.nanorc文件中。


Not*_*yro 8

这应该包括默认包含的所有语法突出显示插件,以及您添加到 /usr/share/nano 的任何插件:

find /usr/share/nano -name '*.nanorc' -printf "include %p\n" > ~/.nanorc
Run Code Online (Sandbox Code Playgroud)

或者,编辑 /etc/nanorc 并查看是否可以取消对包含的注释。

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

每次添加额外的 .nanorc 颜色配置时,只需运行此行。


小智 6

您可以使用它来包含所有内容:(将其添加到~/.nanorc文件中)

include "/usr/share/nano/*.nanorc"
Run Code Online (Sandbox Code Playgroud)

快乐编码!

  • 这不起作用:( (2认同)

Tho*_*ler 5

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