Como posso reverter uma linha no Notepad ++?

12

É possível reverter uma única linha no Notepad ++?

Exemplo:

Hello world

Mudaria para

dlrow olleH

Devo instalar um plugin para essa funcionalidade?

ATUALIZAÇÃO : gostaria de manter a área de transferência em seu estado original. Portanto, uma [cópia] - [transformação externa] - [colar] não é adequada.

Além disso, gostaria de permanecer em um ambiente de área de trabalho desconectada, para que qualquer solução de serviço online não seja adequada.

Ron Klein
fonte

Respostas:

6

Você pode fazer uma pesquisa iterada e substituir para reverter a sequência, depois de marcar o início da sequência com um caractere especial (eu uso o sinal de porcentagem% no exemplo)

procurar: (%)(.*)(.)

substituir: \3\1\2

ative "expressões regulares" na pesquisa e substitua.

repita a operação até que a corda seja invertida.

gor
fonte
2
Isso pode ser cansativo para uma longa fila, mas é uma solução bastante agradável, pois ainda está "dentro" do ambiente da NPP.
Ron Klein
3

UPDATE: Adicionei um script Python-3 "reverter o texto da área de transferência".
Esse script Python-3 atende a texto Unicode; ie todo o texto ...

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

Como nenhuma solução integrada foi apresentada (ainda), mencionarei uma solução alternativa para as ferramentas do Unix.

Faça o download dos utilitários mencionados na fonte (abaixo) e coloque-os em uma pasta PATH'd.
Coloque o código (abaixo) em um arquivo .cmd e chame-o como quiser. (é claro que deve estar em uma pasta PATH'd).
Crie um atalho do Windows para o .cmd (coloque-o em algum lugar do StartMenu e defina-o para que seja minimizado) ... e atire uma tecla de atalho para ele.

Você pode simplesmente copiar o texto de sua escolha para a área de transferência e pressionar sua tecla de atalho ... Concluído! .. o texto invertido substitui o texto selecionado.

Se preferir, você pode configurar uma macro do NotePad ++ para selecionar e copiar uma linha inteira. (Observe os caracteres da nova linha no final do texto.

Além disso, conforme mencionado nas notas de fonte. Este trabalho para conjuntos de caracteres de bytes únicos.

sed.exepode ser capaz de lidar com Unicode, mas ainda não o resolvi ... Se você souber fazer isso, poste as informações aqui ou talvez na publicação de uma pergunta específica sobre esse problema. : can-gnu-sed-for-windows-handle-unicode

Esta é a sed.exeversão:

@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  

Aqui está a Python-3versão:

##==============================================##
## 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
fonte
Funciona muito bem com o python 2.5 no Windows também. Doce!
Dennis
Isso altera o estado da área de transferência. Eu gostaria de evitar isso. No entanto, se funcionar, eu posso aceitar isso.
Ron Klein
2

Se você não precisar fazer isso com tanta frequência, poderá copiar a linha nesta ferramenta on-line para fazer a reversão.

Gelatina
fonte
Boa ideia, mas o objetivo é continuar trabalhando dentro do ambiente do Notepad ++ e não acessar nenhum recurso externo (um navegador).
Ron Klein
Infelizmente, a ferramenta está offline
Antonio
2

Sei que isso usa outra ferramenta, mas você pode reverter o texto no Excel e copiá-lo novamente. Crie uma planilha e adicione esta macro:

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

Se você pretende usar esse recurso regularmente, atribua a macro a um botão na barra de ferramentas para facilitar o acesso. Copie algum texto para qualquer célula. Verifique se a célula está selecionada e execute a macro. Copie o texto gerado novamente para o Notepad ++.

Surpreendente que esse recurso simples não esteja disponível no Notepad ++ ou através de um plug-in como TextFX.

AlainD
fonte
1

O plug-in BinHex versão 2.0 do Notepad ++ possui uma função de reversão de String implementada.

Você pode marcar a sequência que deve ser revertida e pressionar Ctrl+ R.

flederohr
fonte
0

Uma extensão da idéia de gor se sua string tiver menos de dez caracteres:
faça uma macro disso.
Destaque a área desejada em N ++

procurar:

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

substituir:

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

substituir na seleção: marcado

O N ++ suporta apenas dez grupos, por isso é tudo o que você obtém, mas pelo menos dez letras ao mesmo tempo.

Fora do tópico, o mecanismo de regex do IE é diferente do aceito em relação a esse tipo de regex, portanto, isso pode ser possível no IE sem as iterações.

SamGoody
fonte
0
  1. Selecione o texto para reverter.
  2. Divida-o em várias linhas usando a janela Substituir por Seleção e Expressão regular selecionada para Substituir tudo (.) Por \ n \ 1
  3. Selecione o texto novamente (por algum motivo, o último caractere é deixado de fora da seleção após a etapa 2).
  4. Use a resposta para Inverter ordem das linhas no Notepad ++ para inverter as linhas.
  5. Recombine as linhas usando a janela Substituir por Na seleção e Estendido selecionado para Substituir Tudo \ n por uma sequência vazia.
  6. Pode ser necessário remover novas linhas externas.
Gnubie
fonte