Notepad ++ Lorsque vous enregistrez un fichier, pouvez-vous exécuter automatiquement un programme sur ce fichier?


1

Je veux exécuter un linter sur mon code source lorsque je sauvegarde un fichier (CTRL-S). Est-il possible d'exécuter une commande externe sur un fichier lorsqu'il est enregistré?

Réponses:


2

Autant que je sache, au sens le plus strict du terme, il n’existe aucune option directe permettant de lancer un programme directement après la sauvegarde. Cela dit, vous pouvez probablement obtenir un comportement similaire (du point de vue fonctionnel) lorsque vous appuyez sur Ctrl+ Savec les étapes ci-dessous ...

Enregistrer et exécuter avec Ctrl + S

Installer NppExec

Normalement, une macro régulière Notepad ++ associée à un élément du menu Exécuter constituerait probablement le chemin le plus simple vers le comportement souhaité. Toutefois, les commandes du menu Exécuter ne semblent pas être autorisées comme actions de macro par défaut.

Pour contourner ce problème, nous avons besoin d’un plugin appelé NppExec. Ce plugin nous permet d’écrire des macros (scripts de commande) moyennement améliorés pour l’exécution de programmes à partir de Notepad ++. Cela nous permet notamment de combiner l’enregistrement d’un document et l’exécution d’un programme (ce qui n’est normalement pas possible, comme indiqué).

Pour installer NppExec:

  • Ouvrez le gestionnaire de plugins ( PluginsGestionnaire de pluginsAfficher le gestionnaire de plugins ).

  • Trouvez NppExecdans la liste des plugins et marquez le.

  • Cliquez sur Install.

Après l’installation, vous devrez redémarrer Notepad ++ comme indiqué.

Créer un script de commande

Une fois que Notepad ++ a été redémarré, ouvrez la fenêtre PluginsNppExecExecute ... ( F6). Dans le champ de texte, placez les commandes que vous souhaitez exécuter (dans l'ordre) sur des lignes distinctes:

NPP_SAVE
# ... Another command here ...
# ... Another command here ...

En passant, je ne vois pas très bien ce que vous souhaitez faire avec le fichier (en ce qui concerne votre processus de formation de peluches). Je vous prie de m'excuser que l'exemple ci-dessus ne soit pas plus complet.


Notez que chacun # ... Another command here ...est simplement un espace réservé pour cet exemple. Fait important, les #signes ne représentent pas réellement les commentaires dans NppExec ... ceci est juste mon raccourci. =)


Commandes disponibles

Étant donné que nous savons que nous souhaitons sauvegarder en premier, nous pouvons utiliser NPP_SAVEle script de commande pour le lancer. NPP_SAVEest une NppExeccommande spécifique qui demande à Notepad ++ d’enregistrer le document actuel.

En général, pour les commandes restantes, vous invoquerez probablement ces commandes directement (en supposant qu’il s’agit de NppExeccommandes ou d’éléments enregistrés sur la ligne de commande, dont la sortie importe peu), ou vous utiliserez par exemple NPP_RUN cmd /k somecommand.exe(ou d’autres variantes sur NPP_RUN cmd) pour générer une nouvelle cmdfenêtre (qui peut souvent être préférable).

Tout ce qui peut être exécuté à partir de la ligne de commande (y compris les fichiers de commandes et les scripts) constitue probablement une option viable pour vos commandes. Les variables d'environnement Notepad ++ sont également disponibles. Le plus courant que vous êtes susceptible d’utiliser est $(FULL_CURRENT_PATH)(mieux référencé avec des guillemets "$(FULL_CURRENT_PATH)"), qui donne le chemin complet de Windows vers la version enregistrée de votre document actuel.

Il convient de noter que, comme Rundans la boîte de dialogue normale Exécuter ... , OKla fenêtre Exécuter ... exécutera immédiatement vos commandes. Cela vous permet de tester leurs fonctionnalités avant de les enregistrer. De même, le Command(s)champ est persistant entre les exécutions.

Une fois que vous êtes satisfait du script de commande, vous devez choisir Save..., attribuer un nom approprié au script et le sélectionner à Savenouveau pour le conserver pour une utilisation ultérieure. Fermez la fenêtre Exécuter ... lorsque vous avez terminé.

Ajout du script de commande à un menu

Nous pouvons maintenant ajouter notre NppExecscript de commande à un menu Notepad ++ afin qu’on lui attribue un raccourci:

  • Aller à PluginsNppExecOptions avancées ... .

  • Sélectionnez le script de commande dans le Associated script:menu déroulant en bas à gauche.

  • Cliquez Add/Modifypour l'ajouter au Menu itemschamp juste au-dessus.

  • Si vous le souhaitez, cochez la case en regard de Place to the Macros submenupour ajouter le script de commande au menu principal Macro . Sinon, il apparaîtra comme une option sous PluginsNppExec .

  • Cliquez OKpour finir.

Redémarrez Notepad ++ comme indiqué et vérifiez que le script de commande apparaît maintenant en tant qu'entrée de menu au bas du menu Macro ou de PluginsNppExec .

Ajout de raccourcis au script de commande

Enfin, pour réaffecter Ctrl+ S:

  • Ouvrez ParamètresRaccourci Mapper ... .

  • Dans l' onglet du menu principal , mettez en surbrillance l'entrée pour "Enregistrer". Cliquez Clearau bas de la fenêtre pour effacer les paramètres de raccourci clavier pour cet élément ( Ctrl+ S).

  • Sélectionnez l' onglet Commandes du plug- in. Faites défiler la liste et mettez en surbrillance l'entrée de votre NppExecscript de commande (identifiée par son nom). Ce sera probablement le dernier élément du bloc pour les NppExec.dllentrées.

  • Cliquez sur Modifyet définissez les options de raccourci clavier appropriées (marquez Ctrlet choisissez Sdans le menu déroulant).

  • Cliquez OKpour enregistrer les nouveaux paramètres de raccourci et Closele Mapper raccourci ... .

Votre script de commande devrait maintenant être déclenché par Ctrl+ S(aucun redémarrage nécessaire).


Notez que, quelle que soit la combinaison de raccourcis clavier que vous affectez, la version normale de Savesera toujours associée à l'élément de menu Fichier → Enregistrer et à l'icône de la barre d'outils (la seule disquette bleue).


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.