Как я могу перевернуть строку в Notepad++?

Можно ли перевернуть одну строку в Notepad++?

Пример:

Hello world

Изменится на

dlrow olleH

Должен ли я установить плагин для такой функциональности?

ОБНОВЛЕНИЕ: я хотел бы сохранить буфер обмена в его первоначальном состоянии. Поэтому [копия]-[внешнее преобразование]-[вставка] не подходит.

Кроме того, я хотел бы остаться в автономной среде рабочего стола, поэтому любое решение для онлайн-обслуживания не подходит.

7 ответов

Вы можете выполнить итеративный поиск и заменить, чтобы перевернуть строку, после того как вы пометили начало строки специальным символом (я использую знак процента% в примере)

поиск: (%)(.*)(.)

заменить: \3\1\2

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

повторяйте операцию, пока строка не перевернется.

ОБНОВЛЕНИЕ: я добавил Python-3 сценарий "реверса буфера обмена".
Этот скрипт Python-3 обслуживает текст Unicode; то есть. весь текст...

# original # Ĥĕłłō ŵōŗłđ in Unicode  
# reversed # edocinU ni đłŗōŵ ōłłĕĤ  

Поскольку ни одно интегрированное решение не было представлено (пока), я упомяну обходной путь Unix-tools.

Загрузите утилиты, упомянутые в источнике (ниже), и поместите их в папку PATH'd.
Вставьте код (ниже) в файл.cmd и назовите его как угодно. (это, конечно, должно быть в папке PATH'd).
Создайте ярлык Windows для.cmd (поместите его где-нибудь в StartMenu и установите для него минимизированный запуск)... и назначьте ему горячую клавишу быстрого доступа.

Затем вы можете просто скопировать текст по вашему выбору в буфер обмена и нажать горячую клавишу... Готово! .. перевернутый текст заменяет выделенный текст.

Если вы предпочитаете, вы можете настроить макрос NotePad++ для выделения и копирования всей строки.. (обратите внимание на символы новой строки в конце текста.

Также, как указано в примечаниях источника. Это работает для однобайтовых наборов символов.

sed.exe может быть в состоянии справиться с Unicode, но я еще не совсем решил этот вопрос... Если вам случится знать, как это сделать, пожалуйста, опубликуйте информацию, либо здесь, либо, возможно, в моем сообщении о конкретном вопросе об этой проблеме: can-gnu-sed-for-windows-handle-unicode

Это sed.exe версия:

@echo off
  ::==============================================::
  :: FUNCTION: Reverse the text in the clipboard. ::
  ::    8-bit characters only (ANSI).             ::
  :: It removes all \r and \n characters, because ::
  :: because sed.exe adds a trailing line-feed    ::
  :: Four `NIX utilities are used.                ::
  ::    2 gclip.exe  (GNU)                        ::
  ::    1 pclip.exe  (GNU)                        ::
  ::    3 gsed.exe   (GNU)                        ::
  ::    4 tr.exe (is `NIX, but maybe not GNU)     ::
  ::==============================================:: 
  >   "%temp%\%n0.sed" echo /\n/!G
  >>  "%temp%\%n0.sed" echo s/\(.\)\(.*\n\)/^&\2\1/
  >>  "%temp%\%n0.sed" echo //D
  >>  "%temp%\%n0.sed" echo s/.//
  pclip.exe | sed.exe -f "%temp%\%n0.sed" | tr.exe -d "\r\n" | gclip.exe  
  del "%temp%\%n0.sed"
goto :eof  

Здесь Python-3 версия:

##==============================================##
## FUNCTION: Reverse the text in the clipboard. ##
##           The text is handled as unicode.    ##
## Using Python-3.1.2                           ##
##  with Python-Win32-extensions for Python-3.1 ##
##==============================================##
import win32clipboard as w
w.OpenClipboard() 
## CF_UNICODETEXT == 13
s=w.GetClipboardData(13)
w.SetClipboardData(13,s[::-1]) 
w.CloseClipboard() 

Если вам не нужно делать это так часто, вы можете скопировать строку в этот онлайн-инструмент для изменения.

Я понимаю, что для этого используется другой инструмент, но вы можете перевернуть текст в Excel и затем скопировать его обратно. Создайте электронную таблицу и добавьте этот макрос:

Sub ReverseText()
    Cells(Selection.Row, Selection.Column + 1) = StrReverse(Selection.Value)
End Sub

Если вы собираетесь использовать эту функцию регулярно, назначьте макрос кнопке на панели инструментов для быстрого доступа. Скопируйте текст в любую ячейку. Убедитесь, что ячейка выбрана, и запустите макрос. Скопируйте сгенерированный текст обратно в Блокнот ++.

Удивительно, что эта простая функция недоступна в Notepad++ или через такой плагин, как TextFX,

В плагине BinHex версии 2.0 для Notepad++ реализована функция перестановки строк.

Вы можете отметить строку, которая должна быть перевернутой, и нажать Ctrl+R.

Расширение идеи Гора, если ваша строка меньше десяти символов:
Сделайте макрос этого.
Выделите нужную область в N++

поиск:

(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?)

заменить:

\9\8\7\6\5\4\3\2\1

заменить в выборе: проверено

N++ поддерживает только десять групп, так что это все, что вы получаете, но, по крайней мере, он делает десять букв одновременно.

Не по теме, механизм регулярных выражений IE отличается от принятого в отношении такого рода регулярных выражений, поэтому это может быть осуществимо в IE без итераций.

  1. Выберите текст для реверса.
  2. Разбейте его на несколько строк, используя окно "Заменить" с выбором "В" и выбрав Регулярное выражение, чтобы заменить все (.) На \n\1
  3. Выделите текст еще раз (по какой-то причине последний символ остается вне выделения после шага 2).
  4. Используйте ответ на Обратный порядок строк в Notepad++, чтобы повернуть строки.
  5. Перекомбинируйте строки, используя окно "Заменить" с выделенным "В" и "Расширенное", чтобы заменить все \ n пустой строкой.
  6. Возможно, вам придется удалить посторонние переводы строк.
Другие вопросы по тегам