Jak mogę odwrócić wiersz w Notepad ++?

12

Czy w Notepad ++ można odwrócić pojedynczy wiersz?

Przykład:

Hello world

Zmieniłbym się na

dlrow olleH

Czy powinienem zainstalować wtyczkę dla takiej funkcjonalności?

AKTUALIZACJA : Chciałbym zachować schowek w oryginalnym stanie. Zatem [kopia] - [zewnętrzna transformacja] - [wklej] nie jest odpowiednia.

Ponadto chciałbym pozostać w odłączonym środowisku stacjonarnym, więc żadne rozwiązanie usługi online nie jest odpowiednie.

Ron Klein
źródło

Odpowiedzi:

6

Możesz wykonać iterowane wyszukiwanie i zamienić, aby odwrócić ciąg, po oznaczeniu początku ciągu znakiem specjalnym (używam znaku procentu% w przykładzie)

Szukaj: (%)(.*)(.)

zastąpić: \3\1\2

włącz „wyrażenia regularne” w wyszukiwaniu i zamień.

powtarzaj operację, aż łańcuch zostanie odwrócony.

gor
źródło
2
Może to być męczące dla długiej linii, ale to całkiem fajne rozwiązanie, ponieważ wciąż znajduje się w „środowisku” elektrowni jądrowej.
Ron Klein
3

AKTUALIZACJA: Dodałem skrypt „odwróć tekst schowka” w języku Python-3.
Ten skrypt Python-3 obsługuje tekst Unicode; to znaczy. cały tekst ...

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

Ponieważ nie zostało jeszcze zaprezentowane żadne zintegrowane rozwiązanie, wspomnę o obejściu narzędzi uniksowych.

Pobierz narzędzia wymienione w źródle (poniżej) i umieść je w folderze ŚCIEŻKA.
Wklej kod (poniżej) do pliku .cmd i nazwij go jak chcesz. (musi to oczywiście znajdować się w folderze ŚCIEŻKA).
Utwórz skrót systemu Windows do pliku .cmd (umieść go gdzieś w menu Start i ustaw, aby działał w trybie zminimalizowanym) ... i przypisz do niego skrót klawiszowy.

Następnie możesz po prostu skopiować wybrany tekst do schowka i nacisnąć klawisz skrótu ... Gotowe! .. odwrócony tekst zastępuje zaznaczony tekst.

Jeśli wolisz, możesz ustawić makro NotePad ++, aby zaznaczało i kopiowało całą linię. (Zwróć uwagę na znaki nowej linii na końcu tekstu.

Ponadto, jak wspomniano w notatkach źródłowych. Działa to w przypadku zestawów znaków jednobajtowych.

sed.exemoże być w stanie obsłużyć Unicode, ale jeszcze go nie opracowałem ... Jeśli wiesz, jak to zrobić, proszę zamieścić informacje tutaj lub w moim poście na temat konkretnego pytania o tym problemie : can-gnu-sed-for-windows-handle-Unicode

To jest sed.exewersja:

@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  

Oto Python-3wersja:

##==============================================##
## 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() 
Peter.O
źródło
Działa świetnie z Pythonem 2.5 również w systemie Windows. Słodkie!
Dennis
Zmienia to stan schowka. Chciałbym tego uniknąć. Jeśli jednak zadziała, mogę to zaakceptować.
Ron Klein
2

Jeśli nie musisz tego robić tak często, możesz skopiować linię do tego narzędzia online, aby wykonać odwrócenie.

żelatyna
źródło
Fajny pomysł, ale chodzi o to, aby nadal pracować w środowisku Notepad ++, a nie przechodzić do żadnego zewnętrznego zasobu (przeglądarki).
Ron Klein,
Narzędzie jest niestety offline
Antonio,
2

Zdaję sobie sprawę, że używa innego narzędzia, ale możesz odwrócić tekst w programie Excel, a następnie skopiować go z powrotem. Utwórz arkusz kalkulacyjny i dodaj to makro:

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

Jeśli zamierzasz regularnie korzystać z tej funkcji, przypisz makro do przycisku na pasku narzędzi, aby ułatwić dostęp. Skopiuj tekst do dowolnej komórki. Upewnij się, że komórka jest zaznaczona i uruchom makro. Skopiuj wygenerowany tekst z powrotem do Notepad ++.

Zaskakujące, że ta prosta funkcja nie jest dostępna w Notepad ++ ani za pośrednictwem wtyczki TextFX.

AlainD
źródło
1

Wtyczka BinHex w wersji 2.0 Notepad ++ ma zaimplementowaną funkcję String string.

Możesz zaznaczyć ciąg, który powinien zostać odwrócony, i naciśnij Ctrl+ R.

flederohr
źródło
0

Rozszerzenie pomysłu Gor, jeśli Twój łańcuch ma mniej niż dziesięć znaków:
Zrób makro tego.
Podświetl żądany obszar w N ++

Szukaj:

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

zastąpić:

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

zamień w zaznaczeniu: zaznaczone

N ++ obsługuje tylko dziesięć grup, więc to wszystko, co dostajesz, ale przynajmniej robi dziesięć liter jednocześnie.

Poza tematem silnik wyrażeń regularnych IE jest inny niż akceptowany w odniesieniu do tego rodzaju wyrażeń regularnych, więc może to być wykonalne w IE bez iteracji.

SamGoody
źródło
0
  1. Wybierz tekst do odwrócenia.
  2. Podziel go na wiele wierszy, używając okna Zamień na Wybór w i Wyrażenie regularne wybrane na Zamień wszystko (.) Na \ n \ 1
  3. Wybierz tekst ponownie (z jakiegoś powodu ostatni znak nie jest zaznaczony po kroku 2).
  4. Użyj odpowiedzi na Odwróć kolejność linii w Notepad ++, aby odwrócić linie.
  5. Ponownie połącz linie, używając okna Zamień z zaznaczeniem W i rozszerzonym zaznaczonym, aby Zastąp wszystko \ n pustym łańcuchem.
  6. Może być konieczne usunięcie obcych znaków nowej linii.
Gnubie
źródło