Comment écrire une macro pour Notepad++?

j'aimerais écrire une macro pour le bloc-notes++ qui devrait remplacer char1, char2, char3 par char4, char5, char6, respectivement. Merci

30
demandé sur Igor Drincic 2008-12-12 13:43:28

8 réponses

Les Macros

de Notepad++ ne sont qu'un tas d'opérations encodées: on commence à enregistrer, on opère sur le buffer, on active peut-être des menus, on arrête d'enregistrer puis on joue la macro.

Après enquête, j'ai découvert qu'ils sont enregistrés dans le fichier de raccourcis.xml dans la section Macros. Par exemple, j'ai là:

<Macro name="Trim Trailing and save" Ctrl="no" Alt="yes" Shift="yes" Key="83">
    <Action type="1" message="2170" wParam="0" lParam="0" sParam=" " />
    <Action type="1" message="2170" wParam="0" lParam="0" sParam=" " />
    <Action type="1" message="2170" wParam="0" lParam="0" sParam=" " />
    <Action type="0" message="2327" wParam="0" lParam="0" sParam="" />
    <Action type="0" message="2327" wParam="0" lParam="0" sParam="" />
    <Action type="2" message="0" wParam="42024" lParam="0" sParam="" />
    <Action type="2" message="0" wParam="41006" lParam="0" sParam="" />
</Macro>

Je n'ai pas regardé la source, mais du regard, je dirais que nous avons des messages envoyés à Scintilla (la composante d'édition, peut-être tapez 0 et 1), et de noter Le Padd++ lui-même (probablement en activant des éléments de menu).

Je ne pense pas qu'il enregistrera des actions dans les dialogues (comme search/replace).

regardant Scintilla.iface , nous pouvons voir que 2170 est le code de ReplaceSel(i.e. insérer une chaîne de caractères est rien n'est sélectionné), 2327 est Onglet commande, et Resource Hacker (juste l'avoir à portée de main...) montre que 42024 est l'article de menu " couper L'espace de fuite "et 41006 est"enregistrer".

Je suppose que le type d'action 0 est pour les commandes Scintilla avec params numériques, le type 1 pour les commandes avec paramètre string, le type 2 pour les commandes Notepad++.

problème: Scintilla n'a pas la commande" Replace all": c'est la tâche du client de faire l'itération, avec ou sans confirmation, etc.

Un autre problème: il semble que l'action de type 1 soit limitée à 1 char (j'ai édité manuellement, à la sortie de N++ Il était tronqué).

J'ai essayé quelques trucs, mais je crains que cette tâche dépasse les capacités macro.

peut-être que C'est là que SciTE avec sa capacité de script Lua (ou bloc-notes du programmeur qui semble être scriptable avec Python) a un avantage... :- )

[EDIT] ressemble à j'ai obtenu la macro ci-dessus de ce fil ou un endroit similaire... :-) Je suppose que les premières lignes sont inutiles (effet de bord ou l'enregistrement), mais ils en sont de bons exemples code de macro de toute façon.

47
répondu PhiLho 2018-04-30 10:19:03

j'ai trouvé ' Python Script ' plugin for Notepad++ plus utile car avec le plugin, je pourrais écrire des macros simples sous la forme de python et il a aussi une très bonne documentation et des macros d'échantillon écrites en python aussi bien. Si vous êtes tout à fait à l'aise avec python, alors je pense que 'Python Script' apportera la justice. Pour plus d'informations, voir: http://npppythonscript.sourceforge.net /

12
répondu Sandeep 2013-11-29 07:20:36

j'ai enregistré une macro et je l'ai trouvée dans %APPDATA%\Notepad++\shortcuts.XML. Il ressemble à posté dans le premier post de ce thread.

j'utilise NPP Ver. 5.9.6.2 avec Win7.

7
répondu Wolli 2013-08-13 17:44:09

Ce post peut vous aider comme un peu liés :

Utilisant RegEX Pour Préfixer Et Ajouter Dans La Notepad++

en supposant des mots alphanumériques, vous pouvez utiliser:

Search = ^([A-Za-z0-9]+)$ Remplacer = able: "\1"

ou, si vous voulez simplement mettre en surbrillance les lignes et utiliser "remplacer tous" & "dans la sélection" (avec le même remplacer):

Search = ^(.+ ) $

^ indique le début de la ligne. $ points à la fin de la ligne.

\1 sera la correspondance source entre parenthèses.

1
répondu Samiksha 2017-05-23 12:09:57

mon expérience personnelle est que raccourcis.xml est remplacé par les macros initialement chargées + plus tard enregistrées et les paramètres lorsque Notepad++ sort. Vous ne pouvez donc pas utiliser Notepad++ lui-même pour éditer ce fichier.

fermer le bloc-notes++, éditer les raccourcis.xml par un autre outil, enregistrez-le et redémarrez le bloc-notes++.

0
répondu Lerin Sonberg 2014-12-30 08:23:47

Je ne suis pas sûr que cela aide, mais j'avais besoin de créer une macro pour tenir un fragment, donc je me suis simplement enregistré en insérant les éléments et en y mettant un raccourci. D'accord, je n'utilise pas la version 5.9 donc il pourrait y avoir quelques légères différences de version. Pour accéder à l'enregistreur macro, allez à Macro > Démarrer L'enregistrement. Ensuite, vous exécuterez votre action et vous passerez à Macro > arrêt de L'enregistrement. Je vous recommande de la relire pour vous assurer qu'elle est correcte, puis de sauvegarder et de régler votre raccourci.

l'Espoir de l'aide.

-1
répondu JimP 2011-05-12 18:04:57

je viens de faire ça en v5.9.1. Allez simplement dans le Menu Macro, cliquez sur "Démarrer L'enregistrement", exécutez vos 3 remplacez toutes les commandes, puis arrêtez l'enregistrement. Vous pouvez ensuite sélectionner "Save Current Recorded Macro", et le lire aussi souvent que vous le souhaitez, et il effectuera les remplacements que vous attendez.

-1
répondu N West 2011-08-03 12:13:41

en fait, les raccourcis.le fichier xml ne stocke pas les macros générées par l'utilisateur et aucun candidat évident ne contient cette information. Ces instructions sont périmées.

Contrairement aux conseils de divers sites web, le stockage de macros générées par l'utilisateur n'est pas activé pour v. 5.4.2. Ce fichier XML est là, mais votre macro ne le stocke pas.

je suppose que c'est un bug qui sera corrigé par la prochaine version.

-2
répondu svend 2010-02-11 17:47:00