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

151

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

    
задан Oxwivi 23.12.2011 в 16:20
источник

11 ответов

150

Редактор nano обеспечивает подсветку синтаксиса для нескольких языков и скриптов. Проверьте /usr/share/nano/

[email protected]:~$ 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 , с чем-то похожим на эту строку:

[email protected]:~$ cat ~/.nanorc
include /usr/share/nano/sh.nanorc

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

Примечание.Иногдавыможетеполучитьsegmentationfaultпослетого,каквыотредактировалифайл~/.nanorc.Есливозникаеттакаяошибка,помогаетсместитьпеременнуюсредыLANG.ВыможетеотключитьегоспомощьюunsetLANGвтерминале.(Решениеполученоиз здесь )

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

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

    
ответ дан Nitin Venkatesh 23.12.2011 в 17:07
источник
70

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

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

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

    
ответ дан Craig Barnes 27.08.2012 в 18:17
38

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

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 .
ответ дан Drew Chapin 18.10.2014 в 20:22
6

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

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

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

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

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

    
ответ дан NotoriousPyro 28.12.2016 в 15:23
2

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

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

и

    
ответ дан Eric Leschinski 03.05.2015 в 08:57
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
    
ответ дан user170859 28.06.2013 в 05:08
1

Самые полные и современные синтаксические hilighters для nano поддерживаются здесь .

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

cd /tmp
git clone https://github.com/tech4david/nano-highlight.git
cd nano-highlight/
make install
echo "include ~/.nano/syntax/ALL.nanorc" >> ~/.nanorc
    
ответ дан Raveren 29.07.2015 в 12:21
1

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

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

Счастливое кодирование!

    
ответ дан Norbert Mezei 12.02.2016 в 05:00
0

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

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

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

    
ответ дан Forrest Erickson 06.07.2015 в 01:21
0

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

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

#!/bin/bash

for i in 'ls /usr/share/nano'
  do
    echo "include /usr/share/nano/$i" >> ~/.nanorc
  done
    
ответ дан some_random_guy 04.02.2016 в 11:35