Как включить подсветку синтаксиса для файлов YAML (YML) в GNU Nano

GNU nano — это простой текстовый редактор на основе терминала. Хотя он не такой мощный, как Emacs или Vim, его легко освоить и использовать. Многие разработчики предпочитают этот редактор, так как он очень прост в использовании и довольно полезен, когда вы хотите быстро отредактировать один файл на вашем сервере.

Один из тех файлов, которые вам нужно часто менять в редакторе такого типа, — это файл конфигурации, например, файлы yaml. Nano предлагает подсветку синтаксиса для многих типов файлов, но не для файлов yaml. Если вы хотите выделить и этот тип файлов, вам нужно будет выполнить дополнительный шаг. В этой статье мы покажем вам, как выделить файлы yaml на nano в Ubuntu.

1. Перечислите доступные файлы подсветки синтаксиса Nano

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

ls /usr/share/nano/

Это перечислит все файлы подсветки синтаксиса нано в данном каталоге:

root@server:~$ 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

Если вы не нашли файл yaml.nanorc, вы можете установить его следующим шагом.

2. Создайте файл выделения синтаксиса YAML Nano

Чтобы обеспечить подсветку синтаксиса для вашего файла, если файл по умолчанию не существует, вам необходимо создать файл подсветки синтаксиса для этого языка. Этот файл является yaml.nanorc файл, и вам нужно создать его в указанном каталоге. Запустите nano, чтобы создать файл:

sudo nano /usr/share/nano/yaml.nanorc

и вставьте следующее содержимое:

# Supports `YAML` files
syntax "YAML" "\.ya?ml$"
header "^(---|===)" "%YAML"
## Keys
color magenta "^\s*[\$A-Za-z0-9_-]+\:"
color brightmagenta "^\s*@[\$A-Za-z0-9_-]+\:"
## Values
color white ":\s.+$"
## Booleans
icolor brightcyan " (y|yes|n|no|true|false|on|off)$"
## Numbers
color brightred " [[:digit:]]+(\.[[:digit:]]+)?"
## Arrays
color red "\[" "\]" ":\s+[|>]" "^\s*- "
## Reserved
color green "(^| )!!(binary|bool|float|int|map|null|omap|seq|set|str) "
## Comments
color brightwhite "#.*$"
## Errors
color ,red ":\w.+$"
color ,red ":'.+$"
color ,red ":".+$"
color ,red "\s+$"
## Non closed quote
color ,red "['\"][^['\"]]*$"
## Closed quotes
color yellow "['\"].*['\"]"
## Equal sign
color brightgreen ":( |$)"

Посетите официальный репозиторий Nano Highlight, элегантная коллекция файлов подсветки синтаксиса нано для получения дополнительной информации и языков, доступных для нано. Этот файл будет автоматически добавлен в nano и выделит файлы yaml. Сохраните изменения и перейдите к последнему шагу.

3. Создайте тестовый файл Yaml, чтобы увидеть результаты

В качестве последнего шага, вам нужно проверить, работает подсветка или нет. Перейдите к созданию тестового файла с помощью nano и напишите на нем несколько YAML, например:

# app/config/config_prod.yml
imports:
- { resource: config.yml }
monolog:
handlers:
main:
type:         fingers_crossed
action_level: critical
handler:      grouped
grouped:
type:    group
members: [streamed, deduplicated]
streamed:
type:  stream
path:  '%kernel.logs_dir%/%kernel.environment%.log'
level: debug
deduplicated:
type:    deduplication
handler: swift
swift:
type:       swift_mailer
from_email: 'from_email@test.com'
# Or multiple receivers:
# to_email:   ['to_email1@site.com', 'to_email2@site.com']
to_email:   'to_email@site.com'
subject:    'An Error Occurred! %%message%%'
level:      debug
formatter:  monolog.formatter.html
content_type: text/html

Сохраните файл, отредактируйте его снова, и вы увидите выделенный код YAML.

Ссылка на основную публикацию