如何使Notepad ++基于其名称运行脚本?

问题描述 投票:16回答:5

我想让notepad ++运行“ruby {filename_here}”命令,如果当前文件名以.rb结尾,“perl {filename_here}”则以.pl结尾。我试过使用NppExec插件,但它不能做有条件的东西,所以我写了一个蝙蝠

@echo off

if /i %~sx1 == .pl perl "%~f1"
if /i %~sx1 == .rb ruby "%~f1"
if /i %~sx1 == .php php "%~f1"

现在我可以从命令行使用它,如C:\ Program Files \ Notepad ++> runscript“D \ pl.pl”,它工作正常。现在我如何将Notepad ++中的某些键绑定到“runscript $(FULL_CURRENT_PATH)”?我试过使用Run-> Run菜单(F5),但它似乎不起作用..

cmd notepad++
5个回答
21
投票

您需要将文件名放在命令的末尾。在运行(F5)对话框中,尝试以下操作:

runscript $(FULL_CURRENT_PATH)

如果你想测试它,你可以在最后放一个& pause,只是为了看它是否有效。

您还可以通过使用带有文件扩展名标签的可怕GOTO命令来稍微调整脚本,以便每个文件都不会测试每个扩展名:

@echo off
GOTO %~sx1
:.pl
  perl "%~f1"
  GOTO end
:.rb
  ruby "%~f1"
  GOTO end
:.php
  php "%~f1"
  GOTO end
:end

6
投票

在Windows上运行的notepad ++ 6.2版中,只需使用带引号的“$(FULL_CURRENT_PATH)”,因此将使用与该文件关联的默认程序打开该文件。因此,请确保“使用notepad ++编辑”不是默认的双击操作。


5
投票

我有问题使它工作,以便在我看看它做了什么时保持shell窗口打开。 将“&pause”放在最后并没有帮助,直到我在开头添加cmd /c

cmd /c c:\php\php.exe -l "$(FULL_CURRENT_PATH)" & pause

为了将命令结果保留在屏幕上,您可以使用/ k开关,如George:cmd /k c:\php\php.exe -l "$(FULL_CURRENT_PATH)"所建议的那样

这很好用,我用它在Notepad ++中进行快速语法检查。


1
投票

您可以使用以下脚本尝试npp_exec:

NPP_SAVE
SET Executer = execute$(EXT_PART)
NPP_EXEC "$(Executer)"

然后使用名为execute.rb的脚本:

perl $(FULL_CURRENT_PATH) //or something like that

这种方法被描述为here


1
投票

有一个名为RunMe的插件可以在默认程序中打开当前文件。它是比“$(FULL_CURRENT_PATH)”命令更好的解决方案,因为它将当前目录更改为文件路径,并且该命令在N ++路径中运行该文件。

© www.soinside.com 2019 - 2024. All rights reserved.