Comment inverser une ligne dans Notepad ++?

12

Est-il possible d'inverser une seule ligne dans Notepad ++?

Exemple:

Hello world

Deviendrait

dlrow olleH

Dois-je installer un plugin pour une telle fonctionnalité?

MISE À JOUR : Je voudrais garder le presse-papiers dans son état d'origine. Donc, une [copie] - [transformation externe] - [coller] ne convient pas.

De plus, je voudrais rester dans un environnement de bureau déconnecté, donc toute solution de service en ligne ne convient pas.

Ron Klein
la source

Réponses:

6

Vous pouvez faire une recherche itérée et remplacer pour inverser la chaîne, après avoir marqué le début de la chaîne avec un caractère spécial (j'utilise le signe%% dans l'exemple)

chercher: (%)(.*)(.)

remplacer: \3\1\2

activer les "expressions régulières" dans la recherche et le remplacement.

répétez l'opération jusqu'à ce que la chaîne soit inversée.

gor
la source
2
Cela peut être épuisant pour une longue file d'attente, mais c'est une assez bonne solution car elle est toujours "à l'intérieur" de l'environnement de NPP.
Ron Klein
3

MISE À JOUR: J'ai ajouté un script Python-3 "inverser le texte du presse-papiers".
Ce script Python-3 s'adresse au texte Unicode; c'est à dire. tout le texte ...

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

Puisqu'aucune solution intégrée n'a été présentée (encore), je mentionnerai une solution de contournement des outils Unix.

Téléchargez les utilitaires mentionnés dans la source (ci-dessous) et placez-les dans un dossier PATH.
Insérez le code (ci-dessous) dans un fichier .cmd et appelez-le comme vous voulez. (il doit, bien sûr, être dans un dossier PATH).
Créez un raccourci Windows vers le .cmd (placez-le quelque part dans votre menu Démarrer et définissez-le pour qu'il s'exécute de manière réduite) ... et assignez-lui un raccourci-raccourci.

Vous pouvez ensuite simplement copier le texte de votre choix dans le presse-papiers et appuyer sur votre raccourci clavier ... Terminé! .. le texte inversé remplace le texte sélectionné.

Si vous préférez, vous pouvez configurer une macro NotePad ++ pour sélectionner et copier une ligne entière .. (notez les caractères de nouvelle ligne à la fin du texte.

En outre, comme mentionné dans les notes source. Ce workd pour les jeux de caractères à un octet.

sed.exepeut être capable de gérer Unicode, mais je ne l'ai pas encore tout à fait résolu ... Si vous savez comment faire cela, veuillez poster les informations, ici ou peut-être dans mon message d'une question spécifique à propos de ce problème : can-gnu-sed-pour-windows-handle-unicode

Voici la sed.exeversion:

@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  

Voici la Python-3version:

##==============================================##
## 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
la source
Fonctionne très bien avec python 2.5 sur Windows également. Sucré!
Dennis
Cela modifie l'état du presse-papiers. Je voudrais éviter cela. Cependant, si cela fonctionne, je pourrais l'accepter.
Ron Klein
2

Si vous n'avez pas besoin de le faire aussi souvent, vous pouvez copier la ligne dans cet outil en ligne pour effectuer l'inversion.

Gélatine
la source
Bonne idée, mais le but est de continuer à travailler dans l'environnement Notepad ++, et de ne pas accéder à une ressource externe (un navigateur).
Ron Klein
L'outil est malheureusement hors ligne
Antonio
2

Je me rends compte que cela utilise un autre outil, mais vous pouvez inverser le texte dans Excel, puis le recopier. Créez une feuille de calcul et ajoutez cette macro:

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

Si vous avez l'intention d'utiliser cette fonctionnalité régulièrement, affectez la macro à un bouton de la barre d'outils pour un accès facile. Copiez du texte dans n'importe quelle cellule. Assurez-vous que la cellule est sélectionnée et exécutez la macro. Copiez le texte généré dans Notepad ++.

Étonnant que cette fonctionnalité simple ne soit pas disponible dans Notepad ++ ou via un plugin comme TextFX.

AlainD
la source
1

Le plug-in BinHex version 2.0 de Notepad ++ a une fonction de chaîne inversée implémentée.

Vous pouvez marquer la chaîne qui doit être inversée et appuyer sur Ctrl+ R.

flederohr
la source
0

Une extension de l'idée de gor si votre chaîne est inférieure à dix caractères:
faites-en une macro.
Mettez en surbrillance la zone souhaitée en N ++

chercher:

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

remplacer:

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

remplacer dans la sélection: coché

N ++ ne prend en charge que dix groupes, c'est donc tout ce que vous obtenez, mais au moins il fait dix lettres à la fois.

Hors sujet, le moteur de regex d'IE est différent de celui accepté en ce qui concerne ce type de regex, donc cela pourrait être faisable dans IE sans les itérations.

SamGoody
la source
0
  1. Sélectionnez le texte à inverser.
  2. Divisez-le en plusieurs lignes en utilisant la fenêtre Remplacer par la sélection Dans et l'expression régulière sélectionnée pour Remplacer tout (.) Par \ n \ 1
  3. Sélectionnez à nouveau le texte (pour une raison quelconque, le dernier caractère est omis de la sélection après l'étape 2).
  4. Utilisez la réponse à Inverser l'ordre des lignes dans Notepad ++ pour inverser les lignes.
  5. Recombinez les lignes en utilisant la fenêtre Remplacer par la sélection Dans et Etendu sélectionné pour Remplacer tout \ n par une chaîne vide.
  6. Vous devrez peut-être supprimer les sauts de ligne superflus.
Gnubie
la source