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

184

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

Oxwivi
источник
1
Большое спасибо за файлы синтаксиса в git-репо, я использую это на всех своих серверах ... продолжайте в том же духе!
1
@TheGene Комментируйте и благодарите за ответ. Репо зачисляется на него, а не на меня, тот, кто задает вопрос.
Oxwivi

Ответы:

175

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

Нитин Венкатеш
источник
1
Эти строки не закомментированы /etc/nanorc- глобальные настройки перезаписываются ~/.nanorc? Как мне отключить .nanorc?
Oxwivi
13
Ой, подождите, у меня даже нет ~/.nanorcфайла.
Oxwivi
1
Подожди, подожди, почему глобальные настройки со всеми includeстроками не включают подсветку синтаксиса, хотя у меня нет .nanorc?
Oxwivi
9
ls -1 /usr/share/nano/*.nanorc | sed 's/^\//include \//' >> ~/.nanorcдобавьте их все в ваш файл .nanorc или создайте его, если он не существует.
Том Портер
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 теряется на черном фоне моего терминала
Том Басби
5
На самом деле есть проблема, часть цветного текста черный! Если фон нашего терминала черный, эти слова невидимы!
Dukevin
9
У вас есть неработающая ссылка
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.

NotoriousPyro
источник
2

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

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

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

а также

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

Эрик Лещинский
источник
2

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

include "/usr/share/nano/*.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
user170859
источник
22
Было бы полезно, если бы вы могли объяснить, почему это полезный ответ для новых пользователей. Что делает команда? Что это меняет? Случайно предлагать запустить командную строку не полезно.
Кевин Боуэн
1

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

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

cd /tmp
git clone https://github.com/tech4david/nano-highlight.git
cd nano-highlight/
make install
echo "include ~/.nano/syntax/ALL.nanorc" >> ~/.nanorc
Raveren
источник
Решение хорошее, но я бы использовал другую папку для git clone. Содержимое /tmpпапки будет удаляться при каждом запуске системы, и поэтому вы никогда не сможете запустить git pull.
AB
Ваш языковой тег неверен. jsнет bashили shell-scriptя разместил ссылку за словом here. В чем проблема?
AB
1
@AB это не имеет значения , если эта папка исчезла , так как , когда вы make installвсе синтаксические файлы копируются в безопасное место , где они принадлежат: ~/.nano/syntax.
Пабло А
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)\>"
(...)
dmvianna
источник
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
some_random_guy
источник
Практически так же, как askubuntu.com/a/865425/158442 и askubuntu.com/a/538674/158442 do
muru