我想让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),但它似乎不起作用..
答案 0 :(得分: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
答案 1 :(得分:6)
在Windows上运行的notepad ++ 6.2版中,只需使用带引号的“$(FULL_CURRENT_PATH)”,即可使用与该文件关联的默认程序打开该文件。因此,请确保“使用记事本++编辑”是不默认的双击操作。
答案 2 :(得分: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 ++中进行快速语法检查。
答案 3 :(得分:1)
您可以使用以下脚本尝试npp_exec:
NPP_SAVE
SET Executer = execute$(EXT_PART)
NPP_EXEC "$(Executer)"
然后使用名为execute.rb的脚本:
perl $(FULL_CURRENT_PATH) //or something like that
此方法描述为here
答案 4 :(得分:1)
有一个名为RunMe的插件可以在默认程序中打开当前文件。它是比“$(FULL_CURRENT_PATH)”命令更好的解决方案,因为它将当前目录更改为文件路径,并且该命令在N ++路径中运行该文件。