Как включить подсветку синтаксиса в нано?
Может ли 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), выполните следующие действия:
- Откройте файл ~/.nanorc и найдите фрагмент «javascript», используя ctrl+w в редакторе nano.
- Вы должны найти что-то вроде
include /Users/youruser/nanorc/javascript.nanorc
, откройте этот файл .nanorc - В первой строке отредактируйте
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