Nano вставить новую строку в поиск и заменить

По сути, мне нужно удвоить часть текста. Я знаю, что могу сделать это с помощью:

sed G

но было бы здорово, если бы я мог сделать это прямо в Nano.

Я попытался найти конец строки ($), а затем заменить его такими вещами, как \n или [:newline:], но кажется, что RegExp распознается только для поиска, а не для замены - он всегда вставляет буквальное выражение.

Однако этот вопрос предполагает, что это возможно. Хотя не могу понять как. И да, у меня есть:

set regexp

в моем .nanorc


person Tom Karger    schedule 21.09.2014    source источник


Ответы (3)


set regexp в вашем конфигурационном файле будет:

Выполнять расширенный поиск по регулярным выражениям по умолчанию.

Вы также можете активировать его интерактивно с помощью Meta + R*

Но это все! Поиск с использованием RegEx, но в качестве замены Nano принимает только строки, кроме захваченных групп, на которые есть ссылки от \1 до \9 .

Вариант Nano RegEx является реализацией POSIX, и, что может вас заинтересовать, он не вычисляет [:newline:], но принимает \s, [:cntrl:] (управляющие символы) и [:space:] (все пробельные символы, включая разрывы строк), а также отрицает классы POSIX: [^[:graph:]]

Отвечать

Не получается, ничего не работает, пробовал:

  • Переключение отображения пробелов Meta + Pбез видимых изменений
  • Дословный ввод Meta + Shift + V, затем нажатие Enter преобразуется в видимый ^M кодировка (но работает для ввода Tab)
  • "Специальные функции" Esc + < kbd>Esc, затем последовательность из 3 цифр — управляющие символы не принимаются (но допускаются видимые символы 013 на самом деле будут интерпретироваться так, как если бы пользователь нажал Enter< /кбд>)
  • Ввод Unicode Ctrl + Shift + U — управляющие символы не принимаются (но допускаются видимые символы)

Коды ASCII для некоторых управляющих символов:

      DEC   HEX   
(\t)    9  0x09   Horizontal Tab
(\n)   10  0x0a   New Line
(\r)   13  0x0d   Carriage Return
 ( )   32  0x20   Space

Нано команды:

  • Поиск Ctrl + W
  • Найти следующую Meta + W*
  • Переключение замены при поиске Ctrl + R
  • Поиск и замена Ctrl + \

*Мета обычно представляет собой клавишу Alt


PS: "иногда ответом является неудача, или кто-то должен доказать я ошибаюсь"
PPS: пожалуйста

person CSᵠ    schedule 29.03.2015
comment
Вау, спасибо за подробное расследование! По крайней мере, теперь я могу быть уверен :) - person Tom Karger; 29.03.2015
comment
На самом деле, второй пункт бюллетеня неверен. Вместо видимого ^M он преобразуется в ASCII 13 или символ CR. Однако переводы строки Unix вместо этого ^J. К сожалению, meta-V + ctrl-J тоже не работает. - person Antti Haapala; 03.02.2016

В настоящее время это не только невозможно сделать в nano, но и мой запрос функции также был помечен как «несправедливо, слишком сложно» в системе отслеживания ошибок.

person Antti Haapala    schedule 18.02.2016
comment
Это уже не так. Благодаря внешним командам и макросам nano стал мощным инструментом редактирования текста. - person MarkWeston; 03.07.2018
comment
@MarkWeston мой ответ указывает на то, что сам редактор его не поддерживает и не будет из-за своей внутренней структуры, и ваш ответ - единственный, который работает. - person Antti Haapala; 18.12.2018

  1. Выберите текстовый блок.
  2. Нажмите команду вставки.
  3. Нажмите команду flipexecute.
  4. Нажмите команду флиппайпа.
  5. Нажмите команду flipnewbuffer.
  6. Выполните любую внешнюю команду, которую вы хотите. Команда будет передавать выбор на стандартный ввод, а выбор будет заменен на стандартный вывод команды.

Кроме того, вы можете автоматизировать это, записывая и запуская макросы. Вы также можете привязать клавиши к макропоследовательности.

person MarkWeston    schedule 03.07.2018