Только что я попытался показать мощь неинтерактивного редактирования, доступную благодаря потоковому редактору sed
. Однако, как бы силён он не был, иногда при всякого рода конфигурировании возникает необходимость и в настоящем текстовом редакторе, интерактивном. Причём желательно способном работать и в терминальном окне графического сеанса, и в «чёрной» консоли.
Записные линуксоиды обычно в таких случаях советуют начинающим применителям Vim
или Emacs
, в зависимости от собственной религиозной ориентации. Напрочь забывая о том, что эффективная работа в обоих этих редакторах возможна только при доведённых до автоматизма навыках, и к тому же навыках, постоянно тренируемых — иначе они утрачиваются очень быстро. При необходимости же поправить пару строк в конфиге раз или два в месяц приобретать такие навыки просто не имеет смысла.
А вот редактор Nano
вполне может сыграть роль своего рода амортизатора для начинающего применителя. Да, это не Vim
, не Emacs
, и даже не joe
. Но с задачей конфигурирования справляется успешно. А в освоении и обращении — прост, как грабли. Не случайно во многих дистрибутивах Linux он по умолчанию предлагается в качестве общесистемного. В том числе и в таких юзерофильных, как семейство Ubuntu
, представители которого, с одной стороны, имеют штатные, мощные и удобные, инструменты редактирования в своих интегрированных средах, с другой — и Vim'ом эти системы не обделены, да и Emacs им устанавливать не возбраняется. Но даже в этих «борброжелательных» дистрибутивах иногда возникает потребность в простом и лёгком консольном редакторе. А многие ли из начинающих применителей способны сразу же смотреть на Vim
и Emacs
без содрогания?
Столь длинное вступление направлено к тому, что затратить толику времени на освоение Nano
— дело стоящее для многих линуксоидов, в том числе и начинающих применителей Mint
. Тем более, что, как уже было сказано, в освоении он прост, а возможностей у него больше, чем может показаться на первый взгляд.
Итак, представляю: редактор Nano
, или, точнее, GNU nano
. Характеризуется авторами как маленький и дружелюбный. Что в целом соответствует истине. Официальным местопребыванием имеет сайт http://www.nano-editor.org, где его текущая стабильная версия (2.2.6) доступна в виде тарбалла исходников и бинарников в форматах rpm
и deb
.
Впрочем, применителям Mint
заботиться о скачивании бинарников и тем более исходников не придётся: Nano
имеется в официальном репозитории этого дистрибутива и, более того, устанавливается по умолчанию с инсталляционного Live-носителя, после чего немедленно готов к работе.
Запускается Nano
из командной строки консоли или терминального окна одноименной командой, можно — с указанием имени файла, существующего или нового (в последнем случае, как обычно, файл с таким именем будет создан). Поддерживается несколько опций командной строки, как то: -T #
, устанавливающей величину (в символах) табуляции, -i
, включающей автоматические отступы, -w
, отключающей режим жёсткого переноса строк на границе экрана (что очень важно при редактировании конфигурационных файлов), -$
, напротив, включающей режим переноса «мягкого» (так называемый softwrap), при котором визуальный перенос осуществляется без разрыва строки, и так далее. Полный список стартовых опций можно посмотреть посредством
Кроме того, практически все эти опции могут быть прописаны в конфигурационном файле в качестве умолчальных.
Общесистемный конфигурационный файл редактора — /etc/nanorc
. Его можно скопировать в свой домашний каталог
$ cp /etc/nanorc ~/.nanorc
После чего редактировать в своё удовольствие. Кроме того, в каталоге /usr/share/nano
имеется большое количество примеров конфигов, адаптированных для разных языков программирования и разметки, а также специально для некоторых дистрибутивов (Gentoo
, Debian
).
Впрочем, умолчальный конфиг кажется мне вполне соответствующим своим задачам. Единственное вносимое мной в него изменение — это включение режима «мягких» переносов по умолчанию. Для чего нужно снять комментарий со строки
И, напротив, закрыть комментарием строку
После этого Nano
становится равно пригодным и для редактирования конфигурационных файлов (которые, как известно, не любят произвольных разрывов строк), и для сочинения «мирных» текстов, в которых уходящие за горизонт экрана строки очень мешают, а жёсткие их разрывы также не полезны, ибо затрудняют в дальнейшем поиск.
Поиск, кстати, осуществляется комбинацией клавиш Control+w
с последующим нажатием на Enter
, повторямыми, сколько требуется. А для замены, в том числе глобальной, используется комбинация Control
плюс обратный слэш (\
) или Meta+R
.
После запуска Nano
с указанием существующего файла в качестве аргумента (например, его собственного «домашнего» конфига) перед глазами возникает примерно такая картина:
Вверху — титульная строка, в которой выводятся номер версии программы, имя открытого файла и, в правом углу, сообщение о том, что файл был изменен. В нижней части экрана можно видеть зону подсказки — список основных управляющих клавишных последовательностей (образованных сочетанием Control+литера
) с пояснениями на языке установленной локали.
Главнейшей из управляющих последовательностей на первых порах знакомства с редактором будет Control+g
(литерные клавиши последовательностей к регистру не чувствительны). Она вызывается весьма подробную справку, в том числе и о тех последовательностях, которые не уместились в двух нижних строках рабочей области. Та же самая справка вызывается и клавишей F1
— если она не перехватывается средой, как это имеет место быть в GNOME Terminal
'е, который Cinnamon
юзает вместо отсутствующего родного.
Вообще поначалу удобно разместить рядом два терминальных окна, и в одном открывать текст для набора или редактирования, а в другом — вызвать справку и постоянно с ней сверяться:
Потому что, повторяю, управляющих последовательностей в Nano
довольно много — больше, чем можно запомнить с одного просмотра, и все они полезны в практической работе.
А ещё они бывают двух видов — в сочетании с клавишей Control
и с клавишей Meta
. Последней на современных клавиатурах не найти — она эмулируется либо нажатием клавиши Alt
, либо нажатием и отпусканием клавиши Escape
, хотя поледний способ и не всегда срабатывает..
Собственно управляющие последовательности, Control+литера
, предназначены в основном для редактирования текста и операций с файлами. Управляющие последовательности частично дублируются функциональными клавишами F1–F16
. Отсутствующие на клавиатуре функциональные клавиши с F13
по F16
вызываются посредством сочетания Shift+F1–F4
.
Meta-последовательности
(то есть сочетания Meta+литера
) теоретически предназначены в основном для временого изменения настроек редактора (тот же результат достигается и опциями командной строки). Однако порою клавиша Meta
выступает в роли «усилителя» Control-последовательности
.
К слову сказать, в «голой» консоли и Control-
, и Meta-последовательности
работают при любой раскладке клавиатуры, что латинской, что русской. А вот в терминальных окнах Cinnamon
Meta-последовательности при русской раскладке клавиатуры выполнять свои функции отказываются.
Описывать все управляющие и Meta-последовательности
не буду — это сделано в той самой экранной подсказке, да в тому же в локализованной системе — на русском языке. Замечу только, что ничего страшного в них нет. Кейбиндинги для навигации по тексту и его редактирования — так называемые Emacs-подобные
, примерно такие же, как в шеллах типа Bash
или Zsh
. И применителю любой из Sh-подобных
командных оболочек могут показаться непривычными только те последовательности, которые отражают специфические функции Nano
как редактора. Вот эти-то функции рассмотреть стоит.
Как нетрудно догадаться, текстовый редактор может вводить и редактировать тексты, и Nano
тут не исключение. Причём он умеет делать это в нескольких документах параллельно — каждый из них открывается в собственном так называемом буфере. Для чего сначала нужно включить мультибуферный режим — делается это meta-последовательностью
Meta+F
. Затем каждый новый буфер открывается с помощью комбинации Control+R
, либо введя имя файла непосредственно в появившейся строке, либо, нажав Control+T
, перейти в режим визуального выбора файла:
Число открытых буферов вроде бы ничем не ограничено — разве что объёмом памяти. Переключение между ними — с помощью Meta+>
(вперёд) и Meta+<
(назад).
Если при задйствовании нескольких буферов отключить мультибуферный режим (это делается повторением комбинации Meta+F
), то открытые буфера никуда не деваются, и переключаться между ними можно по прежнему, но вот открыть новый буфер уже не получится до повторного включения мультибуферного режима. А в днобуферном режиме комбинация Control+R
после выбора файла вместо открытия втсавит его содержимое в позиции курсора текущего документа.
Между буферами возможен обмен данными. Так, строка, скопированная (посредством Meta+6
) или вырезанная (комбинацией Control+K
) в одном буфере, может быть вставлена (с помощью Control+U
) в другом. Ну и в «родном», разумеется, тоже.
Надо заметить, что в Nano
есть и другой способ одновременного редактирования нескольких файлов. Комбинация клавиш Meta+Z
приостанавливает работу редактора (точнее, переводит его в фоновый режим), возвращая приглашение командной строки, в которой Nano
можно запустить заново. Но это будет уже другой его экземпляр, и обмен между ними через буфер невозможен — это можно сделать только «мышиным» выделением и вставкой кликом средней её кнопкой. Однако в этой временной командной строке можно выполнить какие-либо команды, а результаты через то же «мышиное» выделение поместить в редактируемый документ. Возврат в который из командной строки — по команде fg
.
Очень полезная особенность Nano
— возможность включения режима мягкого переноса слов (точнее, символов — softwrap
), о которой я уже говорил. Здесь же добавлю, что это можно сделать не только через конфиг или опцию запуска Nano
, но и прямо в его сеансе — последовательностью Meta+$
. Я уделяю этому вопросу столько внимания, потому что такая, казалось бы, мелочь очень важна для сочинителя нарративных текстов — и не только при доводке их в word-процессоре или программе вёрстки, где лишние разрывы строк — вечный повод для головной боли. Не меньше они мешаются при поиске в архивах собственной нетленки по смутно запомнившимся её фрагментам.
Думаю, важность подстветки синтаксиса понимают не только программисты и профессиональные web-разработчики. Ибо мода сочинять конфиги в XML-формате затронула многие рабочие среды. А разобраться в XML-файле без подсветки — проще удавиться. Да и сочинителям нарративных текстов, не брезгующим одновременно их разметкой (в HTML
ли, или в TeX
) это тоже лишним не покажется. И Nano поддерживает оную с давних пор, а с некоторого времени эта фича включена в нём по умолчанию. Список поддерживаемых языков программирования и разметки, а также дистрибутив-специфичных файлов можно посмотреть так:
И выглядит он следующим образом:
asm.nanorc groff.nanorc nanorc.nanorc ruby.nanorc
awk.nanorc html.nanorc objc.nanorc sh.nanorc
cmake.nanorc java.nanorc ocaml.nanorc tcl.nanorc
c.nanorc makefile.nanorc patch.nanorc tex.nanorc
css.nanorc man.nanorc perl.nanorc xml.nanorc
debian.nanorc mgp.nanorc php.nanorc
fortran.nanorc mutt.nanorc pov.nanorc
gentoo.nanorc nano-menu.xpm python.nanorc
Правда, возможно, цветовая гамма в них не всем покажется идеальной. Но, как известно, на цвет товарищей нет, и никто не мешает отредактировать её вкусу своих фломастеров.
Далее — проверка орфографии, которая одинаково важна для всех применителей, даже тех, кто, подобно автору этих строк, ею подчас манкирует. Для обеспечения оной в файле ~/nanorc
нужно снять комментарий со строки
set speller "aspell -x -c"
После чего по комбинации Control+T
(или по клавише F12
, если та не задействована для других целей, например, вызова выпадающего терминала) для спеллинга будет вызываться программа aspell
— если она, конечно, установлена и снабжена словарем для требующегося языка. В Mint
пакет aspell
устанавливается по умолчанию, но сопровождается только английским словарём. Так что для обеспечения проверки орфографии в русскоязычных текстах надо установить пакет aspell-ru
.
И, наконец, остается только сделать Nano
редактором по умолчанию — чтобы использовать его по умолчанию в командах типа sudoedit
и visudo
(а также везде, где потребуется впредь). Для чего воспользуемся им самим же, открыв в нем конфигурационный файл своей пользовательской командной оболочки. Например, для Bash
— так:
И вписав в него такую вот строку:
определяющую переменную среды EDITOR
. Теперь редактор nano будет вызываться при редактировании системных конфигов, например, командой sudoedit
.
Функциональные возможности Nano
на фоне Vim
или Emacs
не производят впечатления исключительно богатых. Однако это — не только минус, но и плюс: ограниченный набор функций легче освоить и особенно — держать в голове при эпизодическом применении. Тем более, что их хватает не только на несложную правку мелких конфигов, но и на сочинение не слишком масштабных нарративных текстов.
| Текстовый редактор nano |