Как включить подсветку синтаксиса в нано?

Может ли nano делать подсветку синтаксиса как gedit и vim? Как я могу включить это? Мне нужно как минимум подсветка синтаксиса bash и python.

17 ответов

Решение

Нано-редактор обеспечивает подсветку синтаксиса для нескольких языков и сценариев самостоятельно. Проверять, выписываться /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

Свяжите их с файлом нано-конфигурации вашего пользователя на ~/.nanorc с чем-то похожим на эту строку:

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

Теперь подсветка синтаксиса включена в nano для любого файла, который вы связали (вы также можете связать несколько файлов)

снимок экрана с подсветкой синтаксиса

Примечание: иногда вы можете получить segmentation fault после того как вы отредактировали ~/.nanorc файл. В случае возникновения такой ошибки помогает сброс переменной среды LANG. Вы можете сбросить его с unset LANG в терминале. (Решение получено отсюда)

Есть и другие решения, если вас не устраивает подсветка bash. Один пример такого можно найти здесь

Вы также можете написать include /usr/share/nano/* в файл ~/.nanorc, чтобы включить подсветку всех языков, если ваша нано версия поддерживает это.

Да, вы можете, однако определения синтаксиса по умолчанию довольно скудны и неполны. Здесь я поддерживаю более точный набор определений для тех, кто считает их полезными.

Чтобы установить, запустите:

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 описывает функции для всех еще не классифицированных файлов. Это инструменты, которые вам нужны для начала, а не конечный полированный продукт.

Я использовал эту команду для быстрого включения всех доступных языков.

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 flags определяет команду для выполнения в каждом найденном файле.
  • {} заменяется именем файла.
  • \; используется для обозначения конца команды для выполнения find команда.
  • И, наконец, >> ~/.nanorc приводит к добавлению вывода к вашему ~/.nanorc файл.

Это должно включать все плагины подсветки синтаксиса, включенные по умолчанию, и все, что вы добавляете в / usr / share / nano:

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

Или отредактируйте / etc / nanorc и посмотрите, можете ли вы раскомментировать включенные файлы.

Это работает, если у вас есть версия nano, которая отказывается принимать подстановочные знаки в файле.nanorc.

Просто запускайте эту строку каждый раз, когда добавляете дополнительную конфигурацию цвета.nanorc.

Вы можете использовать это, чтобы включить все: (добавить это в файл ~/nanorc)

include "/usr/share/nano/*.nanorc"

Удачного кодирования!

Я случайно отключил подсветку с помощью сочетания клавиш Alt+Y. Его можно включить снова с помощью того же сочетания клавиш.

Я подумал, что мог бы предложить что-то более свежее и современное почти к 2020 году:

Nanorc Scopatz на Git имеет все, что вам нужно. это все еще регулярно обновляется.

и поставляется с довольно аккуратным руководством по установке и документированным установщиком, который позволяет быстро, чисто и легко работать.

Примечание. Возможно, вам придется удалить некоторые маркеры из файла nanorc или закомментировать их (etc-host, html и html.j2), так как они кажутся неисправными, но это не так уж сложно.

У меня есть некоторые нано-подсветка синтаксиса на моем github.

Вот примеры скриншотов в реальном времени для html и php:

введите описание изображения здесь

а также

введите описание изображения здесь

Я знаю, что это старая тема, но, может, мое решение поможет

отредактируйте файл в /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, эти изменения исчезнут.

Для тех, у кого возникли проблемы после выполнения приведенных выше инструкций, также проверьте наличие дублирующих определений. Это отключит подсветку всех синтаксисов для всех файлов. Я столкнулся с этим после добавления 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)\>"
(...)

Наиболее полный и современный синтаксис хайлайтеров для нано поддерживается здесь.

Чтобы установить все маркеры для вашего пользователя, просто запустите:

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

Чтобы добавить поддержку файлов TypeScript JSX (.tsx), выполните следующие действия:

  1. Откройте файл ~/.nanorc и найдите фрагмент «javascript», используя ctrl+w в редакторе nano.
  2. Вы должны найти что-то вродеinclude /Users/youruser/nanorc/javascript.nanorc, откройте этот файл .nanorc
  3. В первой строке отредактируйтеsyntax "JavaScript" "\.(js|ts)$"кsyntax "JavaScript" "\.(js|ts|jsx|tsx)$"включить расширения файлов .jsx и .tsx

нано ~/.нанорк

просто напишите ниже код я

      include "/usr/share/nano/*.nanorc"

set linenumbers

Я нашел подсветку синтаксиса для JS здесь.

Я добавил его в свой файл пользователя на ~/.nanorc

Однако, чтобы получить файл, в который я мог бы добавить, мне пришлось сначала скопировать из /usr/share/nano/nanorc.nanorc в мою локальную папку сначала как ~/.nanorc,

Для тех, у кого работает и включено*.nanorcфайлы, но по-прежнему видите монохромный текст (или, может быть, обычный и полужирный, используйте Alt+Yпри редактировании, чтобы переключить подсветку синтаксиса), возможно, ваша переменная среды TERM не распознана. у меня было установленоxterm-256colorно на этом конкретном хосте это значение не использовало цвет в nano по какой-либо причине.$ TERM=screenработал на меня.
Вы можете увидеть, что это в настоящее время с$ echo $TERM.

Я только что сделал этот скрипт, чтобы добавить цвета к nano: Но, конечно, у вас должны быть цветовые коды в /usr/share/nano, чтобы это работало. Если есть ошибки: просто отредактируйте файл ~/.nanorc вручную и удалите строки, которые дают ошибки.

#!/bin/bash

for i in `ls /usr/share/nano`
  do
    echo "include /usr/share/nano/$i" >> ~/.nanorc
  done
Другие вопросы по тегам