nano для самых маленьких
Итак, в вашей жизни случилось так, что вам нужно отредактировать какой-нибудь файл конфигурации, заполнить комментарий коммита git или написать подобную заметку с использованием разметки markdown . И в вашем распоряжении оказался редактор nano .
Прежде всего сохраняйте спокойствие! Дело в том, что в редакторе nano по умолчанию в нижней части экрана отображаются подсказки клавиатурных сочетаний для выполнения различных действий в зависимости от контекста и режима работы редактора. Именно поэтому в его использовании нет ничего сложного.
Условные обозначения, используемые для клавиатурных команд:
M- – удержание Alt или одинарное нажатие Esc ;
^ – удержание Ctrl или двойное нажатие Esc .
Некоторые действия помимо клавиатурных сочетаний доступны по нажатию на функциональные клавиши.
Многие клавиатурные сочетания для выполнения действий можно быстро уточнить, нажав ^G или просто нажав клавишу F1 . Там же приводится информация об условных обозначениях.
Стоит отметить, что ряд клавиатурных сочетаний могут не работать, если они конфликтуют с клавиатурными сочетаниями окружения, в котором запущен nano . Например, в эмуляторе терминала konsole уже занята комбинация Alt+6 (т.е. M-6 в nano ) для переключения на 6-ю вкладку. Поэтому в данном случае, чтобы использовать именно эту комбинацию (без переобозначения её в nano ) можно освободить её использование в konsole . Также некоторые сочетания клавиш могут конфликтовать с сочетаниями клавиш midnight commander , если nano запущен внутри его рабочего окружения. В этом случае придётся использовать альтернативный вариант вызова действия в nano .
Если вы запустили nano без указания имени файла как параметра запуска, то для добавления содержимого файла в текущий буфер экрана используется команда ^R . Чтобы открыть файл в новом буфере (см. также команду set multibuffer ), находясь в этом режиме можно воспользоваться командой M-F . Файловый браузер в этом режиме будет открываться по нажатию ^T . Открыть файл можно и нажатием клавиши Insert .
- Переключаться между буферами экрана можно с помощью команд M-. (или M-▸ ) к следующему и M-, (или M-◂ ) к предыдущему.
Не забывайте, если что, посматривать в меню с подсказками в нижней части экрана.
- Закрыть текущий файл и выйти из редактора можно с помощью команды ^X (или F2 ), если файл был изменён, то появится запрос на сохранение изменений;
- Быстро сохранить изменения в текущем файле можно командой ^S .
- Сохранение текущего файла с запросом на указание имени файла выполняется командой ^O (или F3 ).
Непосредственно при редактировании текста, помимо прочего, доступны следующие действия:
- начать/отменить выделение фрагмента теста – M-A (или ^6 );
- копировать текущую строку или выделенный фрагмент в буфер хранения – M-6 ;
- вырезать и поместить текущую строку или выделение в буфер хранения – ^K ( F9 );
- удалить строку без помещения в буфер хранения – M-Del ;
- вставить содержимое из буфера хранения в позицию курсора – ^U ( F10 );
- отменить действие Undo ( M-U ) и «отменить отмену» действия Redo ( M-E );
- выполнить команду и вставить результат выполнения в текст – ^T ;
- поиск ^W ( F6 ) в тексте, нажатие M-R в этом режиме включает/отключает режим использования регулярных выражений;
- перейти к следующему следующему ( M-W ) или предыдущему ( M-Q ) вхождению искомой строки;
- поиск с заменой – ^\ ( M-R ), нажатие или повторное нажатие M-R включает/отключает режим использования регулярных выражений;
- закомментировать/раскомментировать текущую строку или выделенный блок – M-3 .
Дополнительными полезными командами (см. быструю справку F1 ) могут оказаться:
- отключение/включение подсветки синтаксиса ( M-Y );
- включение/отключение отображения пробельных символов ( M-P );
- включение/отключение режима преобразования символов табуляции в пробелы ( M-O ).
Не все об этом подозревают, но у nano есть файл конфигурации, в котором можно указать дополнительные настройки, чтобы они всегда применялись при запуске редактора. Список допустимых команд настроек и описания к ним приводятся в ман-странице man nanorc , там же сообщается, что глобальные настройки хранятся в файле /etc/nanorc , а пользовательские в файлах ~/.nanorc , $XDG_CONFIG_HOME/nano/nanorc или ~/.config/nano/nanorc .
Среди прочих полезных можно выделить несколько из них (в скобках указана команда быстрого включения/отключения соответствующего режима):
- set constantshow – всегда показывать позицию курсора в строке состояния ( M-C );
- set multibuffer – открывать по умолчанию новый файл в новом буфере;
- set linenumbers – отображать номера строк в колонке слева ( M-N );
- set indicator – отображать справа индикатор полосы прокрутки, чтобы видеть положение отображаемого текста относительно всего буфера;
- set tabstospaces – преобразовывать нажатия Tab в пробелы ( M-O );
- set tabsize – задать количество колонок, используемых для символа табуляции (по умолчанию 8);
- set autoindent – автоматическое выравнивание новой строки ( M-I );
- set smarthome – при нажатии клавиши Home курсор возвращается в позицию перед первым непробельным символом, вместо начала строки ( M-H );
- set guidestripe – отображать вертикальную границу в заданной колонке (для задания цветов см. описание команды set stripecolor );
- set minibar – скрыть заголовок и отображать минибар внизу экрана с информацией об имени файла и положении курсора относительно всего текста.
Update
Небольшое дополнение.
Редактор nano не поддерживает сортировку строк, но её всё равно можно выполнить для выделенных строк. Для это потребуется произвести следующие действия:
- выделить нужный блок строк командой M-A ;
- вызвать режим «вставки результата выполнения внешней команды» ^T ;
- ввести команду |sort (можно добавить свои параметры) и выполнить её.
Да, это просто передача выделенного текстового блока на вход конвейера для выполнения команды сортировки.
Nano: И всё-таки его придётся выучить [2]
Продолжаем. Предыдущий топик (навигация по тексту): тут.
Сегодняшняя тема — работа с выделением, копирование и удаление кусков текста.
Для понимания принципов команд работы с текстом нужно сначала понять принцип выделения текста. Он осуществляется либо мышью, либо с клавиатуры. С клавиатуры выделение происходит так: сначала отмечается начало выделение: 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).
Copy (only copy, not cutting) in Nano?
I need to copy some text in Nano, so I searched using Google and found a few posts here on Stack Exchange and other sites in which the OP asks «How can I copy?» and people usually answer «You can use ctrl + K «. The person asks how to copy and they are told how to cut. Other answers mention alt + 6 but in my testing it doesn’t work. Is there no option to copy text in Nano? Is there a workaround?
8 Answers 8
- Position the cursor at the beginning of the character from which you want to copy. Press Alt + Shift + A to set mark. ( Alternatively, set mark with Ctrl + 6 )
- Use arrow keys to highlight the text to copy.
- Use Alt + Shift + 6 to copy (Alternatively, Alt + 6 )
- Navigate to the place you want to paste. Release paste with Ctrl + U
Where is reference to these keybindings
All of these are defined under the documentation, which you can access with Ctrl + G at any point. Note that leading ^ stands for Ctrl and M for Alt in the documentation, since this is traditional way of Unix defining meta characters. Lines from documentation:
^^ (M-A) Mark text starting from the cursor position
M-^ (M-6) Copy the current line and store it in the cutbuffer
@user973810 Last time I checked, Apple laptops and desktops all have Alt key. If you’re talking about Macintosh from way way back in the day from 1998 or so, well . . . I’m not familiar with those so can help you. Probably learn VI editor — it’s far better than nano
@user973810 if you look closely at the option key, you may notice that it also says alt on it. nedbatchelder.com/pix/mackeyboard.jpg
I’m using 14.04 and when use ALT-SHIFT-6 I get «uknown command» and I’m still in marking mode (which I have to abort using ALT-SHIFT-6 again).
@SergiyKolodyazhnyy, Sorry, Now I realized the character «^» is the character on keyboard and not a notation of Ctrl key. Pressing Alt + Shift + 6 will do it.
Workaround: cut, then uncut, and uncut again in the place where you want to copy the text.
I move the cursor to the end and Ctrl + U again
unicorns rainbows line4 unicorns
Yes copying text is a bit strange in nano, and somewhat confusing due to conflicting reports on the webs and lack of clarity (or common sense. ) both in the way it was implemented (IMHO) and in the official docs.
4.3 The Cutbuffer
Text can be cut from a file, a whole line at a time, by using the ’Cut Text’ command (default key binding: ^K). The cut line is stored in the cutbuffer. Consecutive strokes of ^K will add each cut line to this buffer, but a ^K after any other keystroke will overwrite the entire cutbuffer.
The contents of the cutbuffer can be pasted back into the file with the ’Uncut Text’ command (default key binding: ^U).
A line of text can be copied into the cutbuffer (without cutting it) with the ’Copy Text’ command (default key binding: M-6).
Since basically, you use CTRL + K to cut, CTRL + U to paste, and the cut line stays in the cutbuffer, you can do a quick cut and paste to replace, and then paste again to achieve a «copy.»
But I don’t like this «workaround».
The last part of the docs, says how to copy: using ALT + 6 (to copy) ad then pasting using CTRL + U to paste.
(Docs actually say «M» key, which means the Meta key, as mook765 said: «the Meta -key which does not exist». and is usually just the ALT on modern keyboards.)
You can also select multiple lines using ALT + 6 and moving the section with your arrow keys.