Я не люблю nano и предпочитаю vim. Однако, в отсутствии vim, выбирая между vi и nano, я всё-таки предпочту nano, ибо как говорится в старой поговорке, «у vi есть два режима: бибикать и всё портить».
Кроме того, идёт активная замена vi на nano во многих дистрибутивах. Например, в новых версиях Debian и Ubuntu по-умолчанию vi устанавливается в самом куцем виде. А главное, его больше нет в busybox install/initrd этих ОС, что однозначно заставляет задуматься об изучении nano, не из любви к нему, а по необходимости.
Я понимаю, что сидеть и зубрить список комбинаций кнопок бесполезно, так что вместо этого я думаю сделать маленькие nano-уроки — по 8 комбинаций или фич за урок (я и сам их планирую изучать по мере публикации).
Nano не имеет «режима команд» как vim, и этим похож на oldschool-редакторы из консоли DOS/Windows (NC, Far Manager, DN, hiew/biew, внезапно втесавшегося в список mcedit и т.д.). Все команды отдаются нажатием комбинаций клавиш — функциональными кнопками или комбинацией Ctrl-буква, Alt-буква.
Важное отличие от 'generic editor' — это поддержка эмуляции Ctrl'а и Alt'а.
Alt эмулируется одинарным нажатием на Esc, Ctrl — двойным. Вместо Alt-X можно набрать Esc X, вместо Ctrl K можно набрать Esc Esc K.
Сначала очевидные комбинации (не зачитываем из за «выученные») Стрелки вверх-влево-вправо-вниз делают ровно то, что должны. Начало строки — Home Конец строки — End Страница вниз — PgDn Страниц вверх — PgUp
На этом очевидности заканчиваются и, собственно, начинаются наши сегодняшние 8 комбинаций:
На слово вперёд — Ctrl-Space На слово назад — Alt-Space (курсор встаёт в начале слова) В начало файла — Alt-| или Alt-\ (короче, Alt- и «эта» кнопка) В конец файла — Alt-/ или Alt-? (аналогично, Alt «эта» кнопка) До первой пустой строки вниз — Alt-0 (или Alt-)) До первой пустой строки вверх — Alt-9 (или Alt-() (в терминах nano текст, отделённый пустыми строками называется «параграф», так что последние две команды называются «предыдущий параграф», «следующий параграф»)
Включить выключить перенос строк — Alt-L Переход на строку с указанным номером — Alt-G
Комбинации для запоминания: undo/redo, поиск/замена.
Отмена действий по-умолчанию не работает и требует запуска редактора с опцией «поддержка отмены» (да, nano по-умолчанию не поддерживает undo). Ключ командной строки -u.
Заметим, что в справке (Ctrl-G) оно появляется тоже, только если запустить nano с опцией -u.
Если nano запущен без -u, то единственной формой undo является отмена вырезанных по Ctrl-K строк обратным их вставлением — Ctrl-U.
С поиском чуть лучше.
поиск — Ctrl-W Хотя заявлена поддержка регэкспов, мне её не удалось добиться, так что поиск просто по подстроке. Повторный поиск (без появления диалога) — Alt-W
Замена Ctrl-\
Повторной замены нет, так как при замене выдаётся запрос «да/нет, отмена, всё».
Многобуфферность (возможность иметь несколько открытых файлов).
Включается командой Alt-F. После этого работают кнопки Alt-< и Alt-> (или они же без шифта: Alt-., Alt-, (альт точка, альт запятая)).
Последняя фича: возможность вводить текст по коду: Esc 255 — вставляет заданный десятичный код (255), а для ввода младших кодов ASCII можно использовать комбинацию Alt-V нужная кнопка, например, Alt-VCtrl-Z.
NANO: работа с выделением, копирование и удаление кусков текста.
Для понимания принципов команд работы с текстом нужно сначала понять принцип выделения текста. Он осуществляется либо мышью, либо с клавиатуры. С клавиатуры выделение происходит так: сначала отмечается начало выделение: Alt-A или Ctrl-^. Далее следует навигация — и до момента выполнения действия над текстом в буффере, выделение сохраняется (обратите внимание, выделение сохраняется даже при вводе текста, в этом оно сильно отличается от выделения в gui-приложениях windows и ближе к persistent blocks в TurboC, DN и соответствующей опции Far Manager'а).
Обратите внимание, применимы все функции навигации, включая переход по номеру строки или поиск (в следующих выпусках).
Далее выделенный текст можно удалить или скопировать в буффер. Это делает комбинация Ctrl-K (или F9).
Выделенный текст можно скопировать в буффер обмена — комбинация Alt-6 (да, мы ЛЮБИМ nano).
Далее мы можем вставить текст из буффера обмена — Ctrl-U или F10. Обратите внимание — в подсказке снизу написана неправда, это не отмена удаления, это вставка.
Кроме этого, для удобства редактирования, Ctrl-K при отсутствии выделения удаляет строку. Либо целиком, либо от курсора до конца строки. Поведение переключается комбинацией Alt-K (по-умолчанию стоит режим удалять строку целиком, а Alt-K переключает его туда-сюда).
Обратите внимание — удалённая строка в буффере, так что её можно вставить с помощью Ctrl-U.
Ещё одна комбинация для лентяев — Alt-T, стирающая всё от курсора и до конца файла (команда trunkate).
Для вставки текста из другого файла используется кнопка Ins (думаю, все пользователи vim хорошо знают поведение этой кнопки в nano).