artem
06.12.2018
1066

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

В данной статье будет рассматриваться такой популярный текстовый редактор как Nano, его настройка и использование подсветки синтаксиса для работы с конфигурационными фалами Asterisk.

  1. Установка и запуск
  2. Назначение редактора по умолчанию
  3. Настройка
  4. Управление
  5. Подсветка синтаксиса

1.Установка и запуск

Установим nano в CentOS:

yum -y install nano

Открыть файл с помощью nano:

nano <имя_файла>

 С опцией -v можно запустить нано в режиме просмотра (без редактирования)

nano -v <имя_файла>

 С опцией -B можно открыть файл с предварительным созданием бэкап файла в той же папке. Бэкап будет иметь имя как и у оригинала, но со знаком  (~)  на конце.

nano -B <имя_файла>

 Запуск без подсказки по управлению (не показывает 2 строчки внизу). Удобно в случае если хочется видеть больше полезного пространства окна

nano -x <имя_файла>

Рис. 2

2.Назначение редактора по умолчанию

Для того что бы узнать какой используется редактор по умолчанию:

echo $EDITOR

Поменяем редактор по умолчанию на nano

export EDITOR=nano

Во время входа в систему запускается ряд сценариев для настройки среды. В CentOS используется файл для каждого объекта. Они хранятся в каталоге системного профиля, /etc/profile.d/. Тем самым для crontab может отдельно использоваться другой редактор по умолчанию в не зависимости от общих настроек.Существует двe переменных среды, которые определяют, какой редактор использовать.

cat <<EOF >>/etc/profile.d/nano.sh
export VISUAL=”nano”
export EDITOR=”nano”
<EOF

 Если пользователь хочет установить для себя редактор по умолчанию, он может быть выполнен в профиле пользователя bash

cat <<EOF >>~/.bash_profile
export VISUAL=”nano”
export EDITOR=”nano”
EOF

Некоторые из внесенных изменений не вступят в силу для текущего сеанса. Выйдите из системы (exit) и войдите в нее, чтобы активировать изменения.

3.Настройка

Настройки редактора производятся в файле /etc/nanorc

Вкл.Выкл. фукнкций определяется раскомментированием строк. Т.е. достаточно просто стереть символ #

Далее мы рассмотрим некоторые основные настройки:

Nano, по умолчанию, включает перенос слов. Хотя это удобно для просмотра обычных документов, но это может быть нежелательно для файлов конфигурации. Функция переноса строк:

set nowrap

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

set autoindent

 Резервное копирование файлов. Имя файла будет иметь вид ~. :

set backup

 Указать определенную папку/директорию для бэкап файлов (указывается к кавычках):

set backupdir “”

 Символы обозначающие закрытие кодовой части (перечисляются в кавычках):

set brackets “”‘)>]}”

 Используйте пустую строку под заголовком в качестве дополнительного пространства для редактирования:

set morespace
Рис. 3Разница между скриншотом выше:

 
Рис. 4.
Включить поддержку мыши для удобного перемещения курсора (выделение текста проиходит с задержкой):

set mouse

 Включить плавную прокрутку:

set smooth

 Включить сохранение без подтверждения:

set tempfile

 

4.Управление

  • Alt+L – Вкл.Вык. перенос строк
  • Alt+Y – Вкл.Вык. подсветку синтаксиса (если таковая имеется для данного типа файлов)
  • Alt+M – Вкл.Вык. поддержку мыши для удобного перемещения курсора (выделение текста проиходит с задержкой):
  • Ctrl+G (F1) – вызов меню полной подсказки
  • Ctrl+X (F2) – выход из программы
  • Ctrl+O (F3) – запись текущего файла
  • Ctrl+J (F4) – автозаполнение текущего абзаца
  • Ctrl+R (F5) – вставка файла в текущий
  • Ctrl+W (F6) – поиск текста в текущем файле
  • Ctrl+Y (F7 или PgUp) – перемещение на предыдущий экран
  • Ctrl+V (F8 или PgDwn) – перемещение на следующий экран
  • Ctrl+^ (Alt+A) –  выделение (и помещение в буфер) текста, начиная с текущей позиции курсора
  • Ctrl+_ (Alt+G) – Перейти на строку с определенным номером
  • Ctrl+ (Alt+R) – замена текста в текущем файле. Сначала вводится замещающий текст, потом, после нажатия Enter – заменяемый
  • Ctrl+K (F9) – удаление (Cut, вырезать) строку в позиции курсора с сохранением ее в буфере
  • Ctrl+U (F10) – вставка содержимого из буфера в строку в позиции курсора. Если последняя не менялась – выполняет роль отмены, штатно не предусмотренной
  • Ctrl+T (F12) – проверка орфографии (посредством внешней программы спеллинга, если она установлена и включена соответствующая опция в конфиге)
  • Ctrl+P – перемещение курсора на одну строку вверх
  • Ctrl+N – перемещение курсора на одну строку вниз
  • Ctrl+F – перемещение курсора на один символ вперед
  • Ctrl+B – перемещение курсора на один символ назад
  • Ctrl+A – перемещение курсора в начало текущей строки
  • Ctrl+E – перемещение курсора в конец текущей строки
  • Ctrl+L – перерисовка текущего экрана
  • Ctrl+D – удаление символа в позиции курсора
  • Ctrl+H – удаление символа слева от курсора

Ctrl+I – вставка символа табуляции 

 

При сохранении файла (Ctrl+X) nano запрашивает подтверждение (Y/N) . На данном этапе файл все же не пересохраняется и можно отменить сохранение командой Ctrl+C. После же nano запрашивает имя файла и куда сохранить – после подтверждения этого этапа, без бэкап файла изменения уже не отменить

5.Подсветка синтаксиса

 По умолчанию подсветка синтаксиса у редактора nano выключена. Что бы включить откроем известный нам уже файл /etc/nanorc

nano /etc/nanorc

 И раскоментируем следующие строки:

include “/usr/share/nano/nanorc.nanorc”
include “/usr/share/nano/c.nanorc”
include “/usr/share/nano/html.nanorc”
include “/usr/share/nano/tex.nanorc”
include “/usr/share/nano/mutt.nanorc”
include “/usr/share/nano/patch.nanorc”
include “/usr/share/nano/man.nanorc”
include “/usr/share/nano/groff.nanorc”
include “/usr/share/nano/perl.nanorc”
include “/usr/share/nano/python.nanorc”
include “/usr/share/nano/ruby.nanorc”
include “/usr/share/nano/java.nanorc”
include “/usr/share/nano/asm.nanorc”
include “/usr/share/nano/sh.nanorc”
include “/usr/share/nano/pov.nanorc”

Данные строки скорее всего уже будут помечены дополнительными коментариями – к каким языкам относится какой файл посветки. Поэтому ненужные можно оставить закоментированными.
Увы, стандартной подсветки для .conf файлов asterisk’a по умолчанию не имеется. Но можно исправить данное недоразумение, создав собственный тип.

Для этого создадим файл asterisk.nanorc  в папке /usr/share/nano/ :

nano /usr/share/nano/asterisk.nanorc

 Вставим туда следующий код:

 ## Asterisk syntax highlighting

 

syntax “conf” “/.*/asterisk/.*.conf$”

 

icolor brightwhite “^[[:space:]]*((un)?set|include|syntax|i?color).*$”

 

## Дополнительная подсветка некоторых знаков
color  green “(:|/|(|)|]|[|`|\|$|<|>|!|=|&||)”
color   red   “({|})”
#color green “(.+)”
 
## IP адреса
icolor brightgreen “<((([0-9]([0-9]([0-9])))|([0-9]([0-9]))|([0-9]))+.(([0-9]([0-9]([0-9])))|([0-9]([0-9]))|([0-9]))+.(([0-9]([0-9]([0-9])))|([0-9]([0-9]))|([0-9]))+.(([0-9]([0-9]([0-9])))|([0-9]([0-9]))|([0-9])))>”
 
## Порты
icolor  green      “^(s)*(port|bindport)*(s)*=(s)*([0-9]*(.)?)”
icolor green   “(10000|20000|36600|39999|39989)”
 
## Комменты для exten & same
icolor brightblue  “^(s)*same*(s)*(=>|=)(s)*([0-9]|n)([A-Za-z0-9_-]+)”
icolor brightblue  “^(s)*exten(s)*(=>|=)(s)*((s|t|a|i|o|fax)|([0-9A-Za-z_.!*?-]*(.)?)|[0-9*#]+|_([XZN0-9*#]*([[XZN0-9*#]*])*[XZN0-9*#]*)*(.)?),([0-9]|n)([A-Za-z0-9_-]+)”
 
## Приоритеты
icolor magenta           “^(s)*exten*(s)*(=>|=)(s)*([0-9A-Za-z_.!*?-]*(.)?),(1|[02-9]|n|hint)”
icolor magenta           “^(s)*same*(s)*(=>|=)(s)*(1|[02-9]|n|hint)”
 

## Параметры SIP
#icolor      brightred   “^(s)*([0-9A-Za-z_!@#%,:$*?-])*([=])”
#icolor      brightred   “^(s)*([0-9A-Za-z_!@#%,:$*?-])*(s)*([=])”
icolor  brightred       “^(s)*([0-9A-Za-z_!@#%,:$*?-])+*(s)*(=)”
 
## Высветление запятых
icolor white “^(s)*exten(s)*(=>|=)(s)*([0-9A-Za-z_!*?-]*(.)?),”
 
## Extensions
icolor green “^(s)*exten(s)*(=>|=)(s)*((s|t|a|i|o|fax)|[0-9A-Za-z_.!*?-]+|_([+XZN/0-9*#]*([.+])*([[+XZN/0-9*#]*])*[+XZN/0-9*#]*)*(.)?)”
icolor green “^(s)*exten*(=>|=)(s)*((s|t|a|i|o|fax)|[0-9A-Za-z_.!*?-]+|_([+XZN/0-9*#]*([.+])*([[+XZN/0-9*#]*])*[+XZN/0-9*#]*)*(.)?)”
 
## ‘exten’ и ‘same’
color  red   “^(s)*exten(s)*=” “^(s)*exten(s)*=>”
color  cyan  “^(s)*same(s)*=” “^(s)*same(s)*=>”
 
## Включаемые в файл конфиги
icolor green “^(s)*include*(s)*=(s)*<.+>”
icolor  cyan “^(s)*include*(s)*(=>|=)(s)*([0-9A-Za-z_!*?-]*(.)?)”
color   brightyellow    “#include.*”
 
## ‘include’ в диалплане
color  green “^(s)*include(s)*(=>|=)”
 
## Условные выражения
icolor cyan  “$[.+]”
 
## Контексты
icolor brightmagenta     “^[.+]”
 
## Технологии
icolor yellow      “(SIP/|IAX2/|Zap/|Local/)”
 
## Комментированные строки для <NoOp>
#icolor      cyan  “,<NoOp>.*”
icolor cyan  “(==.+==)”
 
## Переменные
icolor red   “${?[0-9A-Za-z_!@#%,:$*?-]+([[A-Za-z0-9_${}()/!@%:,#*?]])?}?”
 
## Приложения
icolor yellow      “,<(A(DSIProg|gent(((Callback)?Login)|MonitorOutgoing)|GI|larmReceiver|MD|nswer|ppendCDRUserField|uthenticate))>”
icolor yellow      “,<(B(ackground(Detect)?|usy))>”
icolor yellow “,<(C(han(geMonitor|IsAvail|nelRedirect|Spy)|on(gestion|t(inueWhile|rolPlayback))))>”
icolor yellow      “,<(D(ateTime|Bdel(tree)?|eadAGI|i(al|ctate|rectory)|ISA|umpChan))>”
icolor yellow      “,<(E(AGI|cho|ndWhile|x(ec(If|While)?)|itWhile|te(nSpy|rnalIVR)))>”
icolor yellow      “,<(F(astAGI|estival|lash|orkCDR))>”
icolor yellow      “,<(G(etPEID|o(sub(if)?|to(If(Time)?)?)))>”
icolor yellow      “,<(Ha(ngup|s(New)?Voicemail))>”
icolor yellow      “,<(I(AX2Provision|CES|mportVar))>”
icolor yellow      “,<(Lo(g|okup(Blacklist|CIDName)))>”
icolor yellow      “,<(M(a(cro((Ex(clusive|it))?|(If)?)|ilboxExists)|eetMe(Admin|Count)?|illiwatt|o(nitor|rseCode)|P3Player|usicOnHold))>”
icolor yellow      “,<(N(BScat|o(CDR|Op)))>”
icolor yellow      “,<(P(a(ge|rk(AndAnnounce|edCall)?|use(Monitor|QueueMember))|ickUp|lay(back|tones)|r(ivacyManager|ogress)))>”
icolor yellow      “,<(Queue(Log)?)>”
icolor yellow      “,<(R(andom|e(a((d(File)?)lTime(Update)?)|cord|moveQueueMember|setCDR|t(ryDial|urn))|inging))>”
icolor yellow “,<(S(ay(Alpha|Digits|Number|Phonetic|UnixTime)|e(nd(DTMF|Image|Text|URL)|t(AMAFlags|Caller(ID|Pres)|CDRUserField|GlobalVar|MusicOnHold|TransferCapability)?)|IP(AddHeader|DtmfMode)|LA(Station|Trunk)|oftHangup|t(a(ckPop|rtMusicOnHold)|op(MixMonitor|Monitor|PlayTones|MusicOnHold))|ystem))>”
icolor yellow      “,<(Tr(ansfer|y(Exec|System)))>”
icolor yellow      “,<(U(npause(Monitor|QueueMember)|serEvent))>”
icolor yellow      “,<(V(erbose|MAuthenticate|oiceMail(Main)?))>”
icolor yellow      “,<(W(ait(Exten|For(Ring|Silence)|MusicOnHold)?|hile))>”
icolor yellow      “,<(Zap(ateller|Barge|RAS|Scan))>”
 
## something else
icolor brightgreen “^[0-9A-Z_]+()”
 
## Фигурные скобки
#color blue  “[{}]”
 
## Комментированные строки
color  brightblue  “;.*”

Выходим и сохраняемся.

В конец файла /etc/nanorc допишем:

## Asterisk
include “/usr/share/nano/asterisk.nanorc”
 

Теперь проверим в работе на примере любого .conf фала asterisk:

Рис. 5

Было:
Рис. 6

Стало:
Рис. 7

 
avatar
  Подписаться  
Уведомление о

Остались вопросы?

Я - Першин Артём, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices