¿Cómo puedo revertir una línea en Notepad ++?

12

¿Es posible revertir una sola línea en Notepad ++?

Ejemplo:

Hello world

Cambiaría a

dlrow olleH

¿Debo instalar un complemento para dicha funcionalidad?

ACTUALIZACIÓN : Me gustaría mantener el portapapeles en su estado original. Por lo tanto, una [copia] - [transformación externa] - [pegar] no es adecuada.

Además, me gustaría permanecer en un entorno de escritorio desconectado, por lo que cualquier solución de servicio en línea no es adecuada.

Ron Klein
fuente

Respuestas:

6

Puede hacer una búsqueda iterativa y reemplazar para revertir la cadena, después de haber marcado el comienzo de la cadena con un carácter especial (utilizo el signo de porcentaje% en el ejemplo)

buscar: (%)(.*)(.)

reemplazar: \3\1\2

habilitar "expresiones regulares" en la búsqueda y reemplazar.

repita la operación hasta que la cadena se invierta.

gor
fuente
2
Esto puede ser agotador para una larga cola, pero es una buena solución ya que todavía está dentro del entorno de la central nuclear.
Ron Klein
3

ACTUALIZACIÓN: He agregado una secuencia de comandos "invertir el texto del portapapeles" de Python-3.
Este script Python-3 abastece el texto Unicode; es decir. todo el texto ...

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

Debido a que no se ha presentado una solución integrada (todavía), mencionaré una solución alternativa de herramientas Unix.

Descargue las utilidades mencionadas en la fuente (a continuación) y colóquelas en una carpeta PATH'd.
Introduce el código (a continuación) en un archivo .cmd y llámalo como quieras. (debe hacerlo, por supuesto, debe estar en una carpeta PATH'd).
Cree un acceso directo de Windows al .cmd (colóquelo en algún lugar de su StartMenu y configúrelo para que se ejecute minimizado) ... y asígnele una tecla de acceso directo.

Luego puede copiar el texto de su elección al portapapeles y presionar su tecla de acceso rápido ... ¡Listo! .. el texto invertido reemplaza el texto seleccionado.

Si lo prefiere, puede configurar una macro NotePad ++ para seleccionar y copiar una línea completa ... (tome nota de los caracteres de la nueva línea al final del texto.

Además, como se menciona en las notas de origen. Esto funciona para juegos de caracteres de un solo byte.

sed.exees posible que pueda manejar Unicode, pero aún no lo he resuelto ... Si sabe cómo hacerlo, publique la información, ya sea aquí o tal vez en mi publicación de una pregunta específica sobre este tema : can-gnu-sed-for-windows-handle-unicode

Esta es la sed.exeversión:

@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  

Aquí está la Python-3versión:

##==============================================##
## 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
fuente
Funciona muy bien con Python 2.5 en Windows también. ¡Dulce!
Dennis
Esto cambia el estado del portapapeles. Me gustaría evitar esto. Sin embargo, si funciona, podría aceptar eso.
Ron Klein
2

Si no necesita hacerlo con tanta frecuencia, puede copiar la línea en esta herramienta en línea para hacer la inversión.

Gelatina
fuente
Buena idea, pero el punto es seguir trabajando dentro del entorno Notepad ++, y no ir a ningún recurso externo (un navegador).
Ron Klein
Desafortunadamente, la herramienta está fuera de línea
Antonio
2

Me doy cuenta de que esto usa otra herramienta, pero puede revertir el texto en Excel y luego copiarlo de nuevo. Cree una hoja de cálculo y agregue esta macro:

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

Si tiene la intención de utilizar esta función regularmente, asigne la macro a un botón en la barra de herramientas para facilitar el acceso. Copie algo de texto en cualquier celda. Asegúrese de que la celda esté seleccionada y ejecute la macro. Copie el texto generado de nuevo a Notepad ++.

Sorprendente que esta característica simple no esté disponible en Notepad ++ o mediante un complemento como TextFX.

AlainD
fuente
1

El complemento BinHex versión 2.0 de Notepad ++ tiene una función inversa de cadena implementada.

Puede marcar la cadena que debe invertirse y presionar Ctrl+ R.

Flederohr
fuente
0

Una extensión de la idea de gor si su cadena tiene menos de diez caracteres:
haga una macro de esto.
Resalta el área deseada en N ++

buscar:

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

reemplazar:

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

reemplazar en la selección: marcado

N ++ solo admite diez grupos, así que eso es todo lo que obtienes, pero al menos tiene diez letras a la vez.

Fuera del tema, el motor de expresiones regulares de IE es diferente al aceptado en lo que respecta a este tipo de expresiones regulares, por lo que esto podría ser factible en IE sin las iteraciones.

SamGoody
fuente
0
  1. Seleccione el texto para revertir.
  2. Divídalo en varias líneas utilizando la ventana Reemplazar con la selección In y la expresión Regular seleccionada para Reemplazar todo (.) Con \ n \ 1
  3. Seleccione el texto nuevamente (por alguna razón, el último carácter queda fuera de la selección después del paso 2).
  4. Use la respuesta a Reverse line order en Notepad ++ para invertir las líneas.
  5. Vuelva a combinar las líneas utilizando la ventana Reemplazar con la selección En y Extendida seleccionada para Reemplazar todo \ n con una cadena vacía.
  6. Es posible que deba eliminar nuevas líneas extrañas.
Gnubie
fuente