Как визуализировать синтаксис в nano

Posted by

Файлы → это файлы описания подсветки синтаксиса используемого в текстовом документе.

Местонахождение данных файлов — это каталог /usr/share/nano

Сперва на всякий случай делаю бекап дефолтного каталога /usr/share/nano:

ekzorchik@srv-mail:~$ sudo tar cPf usr_share_nano.tar /usr/share/nano/

Чтобы использовать подсветку синтаксиса нужно объявить данные этих файлов в профиле домашнего каталога файла ~/.nanorc, к примеру для языка Python:

ekzorchik@srv-mail:~$ nano ~/.nanorc

include /usr/share/nano/python.nanorc

Содержимое же файлы python.nanorc представляет из себя:

ekzorchik@srv-mail:~$ cat /usr/share/nano/python.nanorc | head -n 5

syntax "python" "\.py$" "jhbuildrc$"

header "^#!.*/(env +)?python[-0-9._]*( |$)"
KEYWORD: "\<(as|assert|break|class|continue|def|del|elif|else|except)\>"

KEYWORD: "\<(exec|finally|for|from|global|if|import|lambda)\>"

На заметку: Изменения по добавления файлов подсветки синтаксиса документа применяются сразу же, не нужно делать Logoff/Logon или переоткрывать консоль командной строки.

Теперь если создать python скрипт:

ekzorchik@srv-mail:~$ nano test

#!/usr/bin/python

print "Hello ekzorchik.ru\n"

ekzorchik@srv-mail:~$ chmod +x test

ekzorchik@srv-mail:~$ nano test

Пример подсветки синтаксиса python скрипта дефолтными шаблонами

Вот теперь в таком ракурсе на скрипт наглядно видно код.

По умолчанию в профиле пользователя нет файла ~/.nanorc и все настройки по подсветки синтаксиса в текстовом файле предопределены в файле для всех пользователей системы: /etc/nanorc так что можно либо делать это централизованно либо же индивидуально.

Также можно прописать множеством скриптов описания подсветки синтаксиса:

ekzorchik@srv-mail:~$ rm .nanorc

ekzorchik@srv-mail:~$ wget https://github.com/nanorc/nanorc/archive/master.zip

ekzorchik@srv-mail:~$ sudo apt-get install unzip -y

ekzorchik@srv-mail:~$ unzip master.zip

ekzorchik@srv-mail:~$ sudo cp nanorc-master/*.nanorc /usr/share/nano/

Вывожу все файлы .nanorc в общем каталоге /usr/share/nano:

ekzorchik@srv-mail:~$ ls -l /usr/share/nano/ | awk '{print $9}'

А теперь прописываю их в профиле текущего пользователя:

ekzorchik@srv-mail:~$ nano ~/.nanorc

include /usr/share/nano/python.nanorc

asm.nanorc

awk.nanorc

c.nanorc

cmake.nanorc

coffeescript.nanorc

colortest.nanorc

csharp.nanorc

получилось так, но не для каждой же строки вручную добавлять include /usr/share/nano/, сперва выясню количество определенных байтов файла опытным путем:

ekzorchik@srv-mail:~$ head -c24 ~/.nanorc

include /usr/share/nano/

Не знаю правда зачем я это делал, но так мне виделось решение проблемы, конечно же это не понадобилось и родилась следующая строка:

ekzorchik@srv-mail:~$ line="include /usr/share/nano/" ; for a in $(cat ~/.nanorc); do echo "${line}${a}" > .nanorc; done

Хотя уже лучше использовать вот эту строку:

ekzorchik@srv-mail:~$ find /usr/share/nano/ -iname "*.nanorc" -exec echo include {} \; >> ~/.nanorc

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

ekzorchik@srv-mail:~$ sudo find /usr/share/nano -newermt "Dec 28" -exec /bin/rm {} \;

Также можно установить данные файлы .nanorc в систему и способ который идет в комплекте распакованного архива: master.zip

ekzorchik@srv-mail:~$ sudo apt-get install make -y

ekzorchik@srv-mail:~$ cd nanorc-master/

ekzorchik@srv-mail:~/nanorc-master$ make

ekzorchik@srv-mail:~/nanorc-master$ sudo make install-global

Installed: /usr/local/share/nano/*.nanorc

ekzorchik@srv-mail:~/nanorc-master$ cd ~

ekzorchik@srv-mail:~$ nano ~/.nanorc

Include /usr/local/share/nano/ALL.nanorc

или же для всех пользователей системы:

ekzorchik@srv-mail:~$ sudo nano /etc/nanorc

Include /usr/local/share/nano/ALL.nanorc

Теперь если вернуться к созданному выше python скрипту то его визуализированное представление будет следующим:

ekzorchik@srv-mail:~$ nano test

Подсветка синтаксиса python скрипта через текстовый редактор nanoИз этого следует вывод, если хочется то можно использовать дефолтное, а если хочется тут труд многих можно применить и для себя; не зачем тратить время на изобретаемый велосипед если такая мысль посетит Вас при собственном описании подсветки содержимого текстового файла. Все уже давным давно проделано многими. А я разобрал то что хотел и мне пора прощаться, до новых заметок, с уважением автор блога Олло Александр aka ekzorchik.