Текстовый редактор nano
Редактор nano
вполне может сыграть роль своего рода амортизатора для начинающего пользователя. Да, это не Vim, не emacs
, и даже не joe
. Но с задачей конфигурирования справляется успешно. А в освоении и`обращении -- прост, как грабли. Не случайно во многих дистрибутивах Linux он по умолчанию предлагается в качестве общесистемного.
В Gentoo Linux, где при установке необходимость в ручном редактировании конфигурационных файлов возникает весьма часто -- так это просто единственный редактор, доступный на стадии инсталляции системы. В CRUX и Archlinux он, правда, во время установки соседствует с vim
-- имитирующем тот самый, первозданный vi
, и потому тоже может оказаться предпочтительным.
Не след забывать о nano
и пользователям юзерофильных дистрибутивов вроде Ubuntu или Fedora. Конечно, с одной стороны, они имеют штаные, мощные и удобные, инструменты редактирования в соответствующих интегрированных средах, с другой -- и Vim'ом эти системы не обделены. Но, как мы увидим позднее, даже в этих "борброжелательных" дистрибутивах иногда возникает потребность в чисто консольном редакторе, а многие ли из начинающих пользователей способны сразу же смотреть на Vim без содрогания?
Столь длинное вступление направлено к тому, что затратить толику времени на освоение nano
-- дело стоящее для многих линуксоидов. Тем более, что, как уже было сказано, в освоении он прост, а возможностей у него больше, чем может показаться на первый взгляд. Правда, не намного больше...
Итак, представляю: редактор nano
, или, точнее, GNU nano. Официальным местопребыванием имеет сайт pico
-- текстовым редактором, входящим в почтовый пакет pine
, но, в отличие от него, распространяется на условиях лицензии GPL (и, что немаловажно, не тянет за собой почтовой системы -- возможно, не всем нужной). Характеризуется авторами как маленький и дружелюбный. Что в целом соответствует истине.
Редактор nano
чисто консольный и запускается из строки шелла одноименной командой, можно -- с указанием имени файла, существующего или нового (в последнем случае, как обычно, файл с таким именем будет создан). Поддерживается несколько опций командной строки, как то: -T #
, устанавливающей величину (в символах) табуляции, -i
, включающей автоматические отступы, -w
, отключающей режим переноса строк на границе экрана (что очень важно при редактировании конфигурационных файлов), и так далее. Полный их список можно посмотреть посредством
$ man 1 nano
После запуска nano
перед глазами возникает нечто вроде следующего (рис. 1). Вверху -- титульная строка, в которой выводятся номер версии программы, имя открытого файла и, в правом углу, сообщение о том, что файл был изменен. В нижней части экрана можно видеть зону подсказки -- список основных из управляющих клавишных последовательностей (образованных сочетанием Control+литера) с пояснениями на языке установленной локали.
Область между титульной строкой и зоной подсказки -- рабочая, в ней осуществляется ввод и редактирование текста. В nano
предусмотрен (в отличие, например, от vi
и vim
) только один режим работы. То есть текст вводится обычным образом, а для вызова команд предусмотрены управляющие последовательности. Ознакомиться с ними можно, вызвав встроенную систему помощи клавишей F1.
В nano
существуют два вида управляющих последовательностей -- обственно управляющие, Control+литера, и мета-последовательности, Meta+литера. Посредством первых осуществляется редактирование текста и операции с файлами. Управляющие последовательности частично дублируются функциональными клавишами F1-F16 (вызов F13-F16 -- посредством сочетания Shift+F1-F4). Meta-последовательности предназначены для изменения настроек редактора (тот же результат достигается и опциями командной строки).
Напомню, что на клавиатуре PC роль Meta-клавиши выполняет обычно нажатие клавиши Alt (в некоторых раскладках -- конкретно Alt'а правого, или, напротив, левого), или нажатие и отпуск клавиши Escape.
Control-последовательности -- следующие (в скобках -- дублирующие функциональные клавиши и, иногда, Meta-последовательности):
- Control+G(F1) -- вызов меню полной подсказки;
- Control+X(F2) -- выход из программы;
- Control+O(F3) -- запись текущего файла;
- Control+R (F5) -- вставка файла в текущий;
- Control+W(F6) -- поиск текста в текущем файле;
- Control+\(F14 или Meta+R) -- замена текста в текущем файле; сначала вводится замещающий текст, потом, после нажатия Enter -- заменяемый;
- Control+Y (F7 или PgUp) -- перемещение на предыдущий экран;
- Control+V (F8 или PgDwn) -- перемещение на следующий экран;
- Control+K (F9) = удаление (Cut, вырезать) строку в позиции курсора (или группы выделенных посредством Control+^ строк) с сохранением ее в буфере (cutbuffer);
- Control+U -- (F10) -- вставка содержимого cutbuffer'а в строку в позиции курсора; если последняя не менялась -- выполняет роль Undo (отмены), штатно не предусмотренной; может также использоваться для неограниченного клонирования строки (или группы ранее
вырезанных посредством Control+K строк) в прозвольной части текста -- достаточно после удаления переместить курсор в нужное место; - Control+C (F11) -- вывод информации о положении курсора в форме вроде
[ строка 4 из 81 (4%), символ 117 из 3092 (3%) ]
- Control+T (F12) -- проверка орфографии (посредством внешней программы спеллинга, если она установлена и включена соответствующая опция в конфиге, см. ниже);
- Control+P -- перемещение курсора на одну строку вверх;
- Control+N -- перемещение курсора на одну строку вниз;
- Control+F -- перемещение курсора на один символ вперед;
- Control+B -- перемещение курсора на один символ назад;
- Control+A -- перемещение курсора в начало текущей строки;
- Control+E -- перемещение курсора в конец текущей строки;
- Control+L -- перерисовка текущего экрана;
- Control+^ (Meta+A) -- выделение текста, начиная с текущей позиции курсора, с целью
последующего удаления (комбинацией Control+K) и переноса в другое место
(комбинацией Control+U ); снятие выделения -- повторным нажатием Control+^; - Control+D -- удаление символа в позиции курсора;
- Control+H -- удаление символа слева от курсора;
- Control+I -- вставка символа табуляции;
- Control+J (F4) автозаполнение текущего абзаца;
- Control+M вставка символа перевода строки (CR) в позиции курсора;
- Control+_ (F13 или Meta+G) -- переход на указанный номер строки.
Meta-последовательности работают обычно как переключатели. С их помощью выполняются следующие действия:
- Meta+C -- включение/выключение постоянного положения курсора;
- Meta+I -- включение/выключение автоотступов;
- Meta+Z -- включение/выключение приостановки;
- Meta+X -- включение/выключение вывода зоны подсказки;
- Meta+P -- включение/выключение режима эмуляции редактора pico;
- Meta+W -- включение/выключение режима переноса слов;
- Meta+M -- включение/выключение поддержки мыши (только при сборке с поддержкой gpm);
- Meta+K -- разрешить/запретить вырезание до конца;
- Meta+E -- включение/выключение использования регулярных выражений (regexp).
Кроме того, в nano
предусмотрено еще и внешнее средство конфигурирования -- пользовательский конфиг ~/.nanorc
. Выполнив в нем некоторые манипуляции, можно несколько расширить функциональность редактора, в частности, обеспечить подсветку синтаксиса.
Правда, по умолчанию этот файл не устанавливается, и сам собой, при запуске редактора, не образуется. Пример его (nanorc.sample.gz
) следует отыскать в файловом древе (например, в Kubuntu -- в каталоге /usr/share/doc/nano/examples/
) и поместить в свой домашний каталог:
$ zcat /usr/share/doc/nano/examples/nanorc.sample.gz ~/.nanorc
после чего отредактировать по собственному усмотрению. Правда, для этого редактор должен быть перед сборкой конфигурирован с опцией with --enable-nanorc
, но, насколько я знаю, в большинстве современных дистрибутивов так оно и есть (если нет -- nano
придется пересобрать самому).
Описывать подробно устройство ~/.nanorc
не буду -- остановлюсь только на моментах, представляющихся мне самыми важными. По умолчанию все опции настройки закомментированы -- чтобы сделать их действенными, с соответствующих строк требуется снять символ #
. И первый кандидат на раскомметирование -- строка
set nowrap
запрещающая перенос слов по достижении границы экрана. Это очень важно в том случае, если nano
используется преимущественно для редактирования конфигурационных файлов, обычно болезненно реагирующих на разрывы строк в произвольных местах. Хотя того же эффекта можно достичь, запуская nano
с опцией -w
-- я, тем не менее, предпочитаю перестраховаться.
Далее -- проверка орфографии, Для обеспечения оной нужно снять комментарий со строки
set speller "aspell -x -c"
В результате по комбинации Control+T (или по F12) для спеллинга будет вызываться программа aspell
-- если она, конечно, установлена и снабжена словарем для требующегося языка. Разумеется, aspell
можно заменить ispell
'ом -- но в Kubuntu это делать не рекомендуется (ispell так до сих пор и не научился работать с кодировкой UTF8).
И, наконец, подсветка синтаксиса. В nano
она предусмотрена для нескольких языков программирования (Си, Java, Perl) и таких языков разметки, как HTML, TeX, Groff, нужно только снять комментарии с соответствующих строк. В частности, если раскомментировать всю секцию за строкой
## Here is a short example for HTML
то есть:
syntax "HTML" ".html$"color cyan start="" end=""
color red "&[^;[[:space:]]]*;"
то будут подсвечиваться теги HTML. А если внести в ~/.nanorc
такие строки:
# Generic conf/rc/sh file syntax highlighting#############################################
syntax "conf/rc/sh" "conf$|rc$|sh$"
color white ".+"
color green "^#.*"
то колоризуются конструкции шелл-скриптов (в "образцовом" ~/.nanorc
таких строк нет).Собственно, это и все. Функциональные возможности nano
отнюдь не производят впечатления исключительно богатых. Однако со своей ролью -- несложной правкой небольших конфигурационных файлов, -- он вполне вполне справляется. А способность подключать программы проверки орфографии позволяет использовать его и для сочинения просто текстов.
Теперь остается сделать nano
редактором по умолчанию -- чтобы использовать его в командах типа sudoedit
и visudo
(а также в ряде других случаев). Для чего воспользуемся им самим же, открыв в нем конфигурационный файл командной оболочки (в виртуальной консоли или терминальном окне konsole
:
$ nano ~/.bashrc
Теперь вписываем в него такую вот строку:
export EDITOR=nano
определяющую переменную оболочки EDITOR
. Теперь редактор nano будет вызываться при редактировании системных конфигов, например, командой sudoedit
.
Теги: editor