Nano для меня one love инструмент повышения продуктивности работы в консоли, не больше, не меньше. Спорить о достоинствах и недостатках смысла не вижу. Одни защищают Emacs, превращая его в полноценную операционную систему с календарём, почтой и встроенным браузером. Другие восхищаются Vim, где можно писать код, не отрывая рук от клавиатуры, но ведь не даром, дядя, самый популярный запрос про vim в Google до сих пор - «how to exit Vim».
Nano в этом шуме выглядит почти аскетом. Он не требует зубрёжки, всё нужное видно внизу экрана, и вы можете начать редактировать файл, даже если впервые видите консоль.
Из реальных недостатков я за длительное время использования слышал лишь о мелочи: при удалённой работе по ssh стрелки вправо и влево иногда ведут себя странно - не по вине nano, а из-за несовпадений в настройках терминала.
Однако работу с редактором можно сделать еще удобнее, если немного поработать с конфигурационным файлом, чему и посвящена данная статья.
Раздел для тех, кто не знаком с GNU nano
Давным-давно, когда Unix ещё казался чем-то суровым и академическим, для электронных писем использовали почтовый клиент Pine, внутри которого прятался скромный текстовый редактор Pico - простой, понятный, с подсказками прямо на экране. Именно он стал первым редактором, где рядовые пользователи почувствовали себя уверенно: не нужно было гадать, какая комбинация клавиш сохранит файл или как выйти без жертв.
Когда Linux начал массово захватывать университетские лаборатории и серверные, Pico стал любимцем студентов и админов. Но у него была проблема - лицензия. Один из базовых дистрибутивов Linux - Debian, с его принципиальным подходом к свободному софту, просто не включал Pico в систему. Пришлось искать альтернативу.
Тогда, в конце 1999 года, один студент - Крис Аллегретта - решил сделать полностью свободный аналог Pico. За один уикенд он наколдовал первую версию, назвав её TIP (Tip Isn’t Pico). Версия была почти бесполезной: не сохраняла файлы и даже не имела справки. Но зато она была свободной, и поэтому проект получил развитие
Когда выяснилось, что в Unix уже существует утилита tip, редактор переименовали в nano - шутливо расшифровая как Nano’s ANOther text editor. В 2001 году сам Ричард Столлман включил nano в список официальных GNU-программ, и с тех пор редактор прочно поселился в каждом Linux-дистрибутиве.
Файл .nanorc: точка, где начинается уют
Все настройки nano хранятся в файле ~/.nanorc. Это ваша личная конфигурация, где можно адаптировать работу с ним под себя.
Если его нет в текущем каталоге (проверьте командой ls -la!), то просто создайте его:
touch ~/.nanorc
nano ~/.nanorc
Основные настройки: комфорт с первых строк
Чтобы nano стал по-настоящему удобным, достаточно нескольких строк в ~/.nanorc. Эти настройки не превращают редактор в чудо-IDE, но делают его более отзывчивым и тёплым в повседневной работе.
Нумерация строк и отступы
set linenumbers
set tabsize 4
set autoindent
set tabstospaces
Теперь у вас есть номера строк, удобные отступы и автоматическое выравнивание при переходе на новую строку. Nano будет использовать пробелы вместо табов - полезно при работе с YAML и Python.
Управление курсором и прокруткой
set smooth
set mouse
set positionlog
set rebinddelete
set rebindkeypad
smoothделает прокрутку плавной;mouseпозволяет ставить курсор щелчком, выделять текст с Shift и даже устанавливать метку двойным кликом;positionlogзапоминает, где вы остановились, и при следующем открытии файла возвращает курсор на то же место;rebinddeleteиrebindkeypadпомогают корректно обрабатывать клавиши Delete, стрелки и NumPad - особенно полезно при работе через SSH или в графических терминалах вроде iTerm2, XTerm или Windows Terminal.
Перенос длинных строк
set softwrap
set atblanks
Эти параметры делают чтение и редактирование длинных строк комфортным:
nano переносит текст не посередине слова, а по пробелам - особенно удобно в Markdown и конфигурациях.
Визуальная ориентация
set indicator
indicator добавляет тонкий вертикальный «скроллбар» справа - помогает понять, где вы находитесь в длинном файле, без прокрутки наугад.
Поиск и история
set historylog
set casesensitive
set regexp
Nano будет помнить последние запросы поиска и замены, различать регистр и - при включённой опции regexp - позволит использовать регулярные выражения для поиска и замены (Ctrl + \).
Пров��рка орфографии и интеграция с внешними утилитами
Nano поддерживает орфографию, но не навязывает встроенный инструмент - можно выбрать любой внешний, например aspell или hunspell.
set speller "aspell -x -c"
Теперь при нажатии Ctrl + T nano запустит проверку орфографии через aspell. Удобно, если вы ведёте заметки, документацию или статьи прямо в терминале.
Резервные копии и безопасность
Чтобы не потерять изменения, достаточно включить резервное копирование:
set backup
set backupdir "~/.nano_backups/"
Теперь старые версии файлов будут сохраняться отдельно - без бардака в текущих каталогах. Отлично подходит для редактирования конфигов на сервере, где каждое изменение может быть критичным.
Форматирование и автоперенос строк
Nano может автоматически переносить строки при достижении определённой длины:
set fill 80
set breaklonglines
Это превращает nano в аккуратный инструмент для написания документации, README или Markdown - файлов, текст всегда будет выглядеть ровно и читаемо.
Режим только чтения
Если вы часто открываете системные конфиги и боитесь случайно что-то стереть, можно включить защитный режим:
set view
Редактор откроет файл в режиме просмотра, без возможности вносить изменения - чтобы редактировать, нужно будет запустить nano -w filename.
Подсветка синтаксиса: nano тоже может быть красивым
Nano умеет подсвечивать код для десятков языков, просто об этом мало кто знает. В/usr/share/nano/ лежат готовые файлы вроде python.nanorc, html.nanorc, bash.nanorc. Их можно подключить выборочно или все сразу:
include "/usr/share/nano/python.nanorc"
include "/usr/share/nano/html.nanorc"
include "/usr/share/nano/bash.nanorc"
Если добавить строку
include "/usr/share/nano/*.nanorc"
- nano автоматически активирует подсветку для всех известных языков.
Темизация nano
По умолчанию nano использует базовую цветовую схему, но её легко сделать приятнее для глаз. Например, для тёмного терминала подойдёт:
set titlecolor white,black
set statuscolor brightcyan,black
set errorcolor brightred,white
set selectedcolor black,cyan
set numbercolor green,black
Можно пойти дальше - создать тему под себя и подключать её как отдельный файл:
include "~/.nano/themes/dark.nanorc"
А если вы любите светлую схему, просто инвертируйте фон и подберите мягкие оттенки.
Nano поддерживает 16 базовых цветов, а в современных терминалах - и 256-цветные палитры.
Переназначение клавиш: делаем nano ещё удобнее
Nano позволяет переназначать горячие клавиши под свои привычки. Это делается с помощью команд bind и unbind прямо в .nanorc.
Формат простой:
bind ^S writeout main
unbind ^K main
Первая строка назначает Ctrl+S для сохранения файла (вместо стандартного Ctrl+O).
Вторая убирает действие Ctrl+K в основном меню.
main - это контекст (меню), в котором действует команда. Можно также использовать all, чтобы переназначение работало везде.
Примеры полезных переназначений
Комбинация |
Функция |
Пример команды в |
|---|---|---|
|
Сохранить файл |
|
|
Выйти из редактора |
|
|
Отменить последнее действие |
|
|
Повторить действие |
|
|
Поиск |
|
|
Подсветить помощь |
|
|
Сохранить файл (альтернатива) |
|
Некоторые клавиши (стрелки, Home/End, PgUp/PgDn) не всегда можно переназначить, потому что они обрабатываются терминалом напрямую.
Кроме того, можно назначать комбинации для конкретных меню - например, в справке или окне поиска:
bind ^N nextpage help
bind ^P prevpage help
Теперь в меню помощи (Ctrl + G) можно листать страницы привычными клавишами.
Нетривиальный nano
Дочитав до этого раздела, Вы показали свой интерес к теме, поэтому хотелось бы рассказать о паре нетривиальных возможностях редактора, которые и для меня стали приятными открытиями в свое время.
Вставка вывода команд прямо в файл
Команда Ctrl + R (вставить файл), а затем Ctrl + X позволяет вставить результат shell-команды. Например:
Ctrl + R → Ctrl + X → date
вставит текущую дату в документ. Так можно подставлять результаты ls, git log, шаблоны из скриптов - и вообще использовать nano как “терминал в терминале”.
Работа с макросами (да, nano умеет!)
С версии 6+ nano поддерживает запись макросов. Это неочевидно, но очень полезно, если нужно повторять однотипные действия.
Начать запись:
Alt + ( (левая скобка)Закончить запись:
Alt + )Воспроизвести:
Alt + ^
Можно, например, за пару секунд проставить одинаковые комментарии или форматировать список.
Итог
Nano не притворяется IDE и не требует зубрёжки, но умеет гораздо больше, чем принято думать. Он тихий, честный и гибкий - можно работать с орфографией, автоматическими переносами, резервными копиями и даже создавать свои подсветки. Когда мне нужно просто открыть файл и что-то быстро поправить, я не запускаю Vim - я запускаю nano.
Если у вас есть дополнения к статье или пару полезных настроек, буду благодарен, если поделитесь в комментариях.
sT331h0rs3
Стоит дополнительно упомянуть до сих пор полезный, хоть и немного устаревший https://github.com/scopatz/nanorc.