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.