13

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

Пример:

Hello world

Изменится на

dlrow olleH

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

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

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

7 ответов7

5

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

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

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

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

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

3

ОБНОВЛЕНИЕ: я добавил 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() 
2

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

2

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

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

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

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

1

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

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

0

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

поиск:

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

заменить:

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .