вторник, 22 сентября 2009 г.

Боевая раскраска YAML в консоле

Иногда возникает необходимость редактировать YAML-файлы прямо в shell. Если Вы пользуетесь консольным редактором nano, то его можно легко настроить на подсветку синтаксиса. В стандартной инсталляции есть уже готовые конфиги для многих файлов. Нужно просто включить подсветку синтаксиса.

Подготовка:


Смотрим список доступных расширений:
> ls /usr/share/nano

asm.nanorc css.nanorc gentoo.nanorc java.nanorc mutt.nanorc ocaml.nanorc php.nanorc ruby.nanorc tex.nanorc awk.nanorc debian.nanorc groff.nanorc man-html nanorc.nanorc patch.nanorc pov.nanorc sh.nanorc xml.nanorc c.nanorc fortran.nanorc html.nanorc man.nanorc objc.nanorc perl.nanorc python.nanorc tcl.nanorc


Скорее всего yaml.nanorc в этом списке нет. Создаем конфиг для yaml:
> nano -w ~/yaml.nanorc


Добавляем и сохраняем следующие строчки:

syntax "yaml" "\.(yml|yaml)$"

color brightcyan "\<(true|false|null)\>"

icolor magenta "[[:alnum:]]*:"
icolor brightgreen "^[[:space:]]*[.0-9A-Z_]*:"

color green "\:\s\&.*\s.*"
color green "\:\s\*.*$"

color brightyellow ""(\\.|[^\"])*"" "'(\\.|[^'])*'"

color ,green "[[:space:]]+$"
color brightred "#.*$"
color brightblue "\-|\.|;|:|\{|\}|\|"

color brightmagenta "\s[[:digit:]]*$"



Включаем подсветку:


> nano -w ~/.nanorc


Добавляем строчки и сохраняем файл:

include /usr/share/nano/c.nanorc
include /usr/share/nano/php.nanorc
include /usr/share/nano/css.nanorc
include /usr/share/nano/gentoo.nanorc
include /usr/share/nano/html.nanorc
include /usr/share/nano/nanorc.nanorc
include /usr/share/nano/xml.nanorc
include /usr/share/nano/sh.nanorc
include /usr/share/nano/python.nanorc
include /usr/share/nano/patch.nanorc
include /usr/share/nano/java.nanorc
include /usr/share/nano/groff.nanorc
include /your/path/to/yaml.nanorc
Если это не заработает, переместите строчку
include /your/path/to/yaml.nanorc
в начало

 

 Результаты:



Создадим тестовый файл:
nano -w ~/nanotest.yaml


#
# Default value test
#

default_value: &DEF_VAL 1234

#
# Using DEF_VALUE
#

hosts:
  localhost: { ip: "127.0.0.1", port: *DEF_VAL }
  devel: { ip: "192.168.1.200", port: *DEF_VAL }

#
# More tests
#
#

profiles:

 #devel
 -
  id: "devel"
  description: "My test profile"
  enabled: true
  data: "foo:bar"




Комментариев нет:

Отправить комментарий