Notepad++中NppExec的使用之一:基本用法
一直用NPP,很长时间了,最近才学习它的各种插件,这篇文章是根据NppExec的用户指南写的。很多地方是翻译的,但不全是翻译,同时也有些东西没有翻译。
一、何为NppExec
简单的说,这个插件可以让用户在NPP中直接运行一些命令和程序,而不用启动这些命令和程序对应的实际工具或编译器。
1. NppExec是...
- NppExec是介于Notepad++和外部工具/编译器之间的一个中间件。它允许用户在NPP中直接运行这些工具/编译器。
- NppExec是一个控制台(Console)窗口,它能展示运行过程的输出结果,并将控制台窗口的输入重新定向(redirect)到运行过程中(有一些限制)。
- NppExec是其内部命令的一个解释器。通过"Execute..."(执行)对话框,它能逐条执行多条NppExec命令(也称为NppExec脚本),也能从控制台窗口直接执行单条命令。
2. NppExec不是...
- NppExec并不是一个控制台模拟器(console emulator)。NppExec的Console不是一个“真正”的控制台窗口,它没有提供控制台屏幕缓冲区(console screen buffer)。我的理解是NppExec的Console窗口中只是输出代码在真正的控制台中运行的结果。
- NppExec并不是一个命令解释器。虽然它能执行NppExec的命令或脚本,但它不能理解诸如'copy'之类的命令。
- NppExec并不是一个编译器。它能执行外部编译器的代码,但它本身不是编译器,执行这些代码不是它自己的功能。
二、安装
在“插件'菜单下打开插件管理器(Plugin Manager),在可以插件(Available)中找到NppExec,选择后点击下方的"Install"就可以了。安装完成后NPP会提示重启,重启后在插件菜单下就能看到NppExec。
三、基本用法
1. 获取帮助
Plugins -> NppExec -> Help/Manual :打开用户指南。
Plugins -> NppExec -> Help/Docs... :打开NppExec.txt和NppExec_TechInfo.txt文件,前者包括NppExec的所有命令、环境变量的语法和说明,后者包括NppExec的一些高级”隐藏“设置。
help:在Console中输入help可以查看以下内容
- 控制台快捷键
- 控制台命令
- 通用命令(General commands)和环境变量
help <command> :help后加上命令的名字(中间用空格隔开)可以直接查看该命令的帮助文档。
2. 简介
NppExec的主要原理与NPP中的“运行”命令(F5)相同:执行给定的命令。通常就是以给定的参数执行一些程序或工具,参数能够以NPP中环境变量的形式来传递。比如,在IE中启动当前文件或者用某个编译器编译当前文件。NppExec提供了额外功能:
- 它有一个控制台窗口显示控制台程序的输出
- 它允许用户逐条执行多条命令
- 它提供了NPP的所有环境变量,也加入了它自己的若干变量
- 它有一些额外命令,只有想不到,没有做不到 :)
- niubility :)
NppExec中执行命令的四种方式: (四种方式)
- 使用NppExec的控制台窗口:输入命令,按Enter执行
- 使用NppExec的“Execute...”对话框:可以输入多条命令,保存为NppExec脚本,执行时逐条执行
- 使用NppExec的"npp_exec <script>"命令:执行脚本
- 使用NppExec的"npp_exec <file>"命令:执行文本文件保存的脚本
BTW,NppExec的菜单项使用第三种方法执行脚本。
有关内部过程和外部过程在下面“小试牛刀”这一节中。
3. 小试牛刀
3.1 以内部过程的方式执行程序
在控制台窗口或Execute窗口直接输入程序的名字(必要时添加路径)就可以按内部过程的方式运行程序,输入时也可以带参数。
比如:输入cmd可以运行windows的命令提示窗口(cmd.exe程序),由于cmd本身是控制台程序,因此它会在NppExec的Console窗口中运行,也就可以接着在Console窗口中直接输入cmd的命令来运行,用exit命令退出cmd。 又,输入calc则运行windows自带的计算器。由于计算器不是控制台程序,因此它独立运行。
可以看到,以内部过程运行程序,不管是控制台程序还是非控制台程序,开始都打印Process started >>>,结束后打印<<< Process finished.(Exit code 0)。括号中的Exit code值可能会改变,表示不同的退出状态。这是NppExec在等待内部过程执行完毕。
下面是cmd中查看系统时间的一个例子(控制台中):
================ READY ================
cmd
cmd
Process started >>>
Microsoft Windows [版本 6.3.9600]
(c) 2013 Microsoft Corporation。保留所有权利。 C:\Users\acton\Desktop>time /t
time /t
00:13 C:\Users\acton\Desktop>exit
exit
<<< Process finished. (Exit code 0)
================ READY ================
也可以在运行程序时带参数,查看时间可以写成:
================ READY ================
cmd /c time /t
cmd /c time /t
Process started >>>
00:16
<<< Process finished. (Exit code 0)
================ READY ================
.cmd和.bat文件也能这样执行,但不能省略扩展名。
3.2 以外部过程的方式执行程序
使用npp_run <command>,如下,会打开cmd窗口,Console中不会输出Process started和Process finished,NppExec不会等待外部过程的执行。
================ READY ================
npp_run cmd
NPP_RUN: cmd
================ READY ================
小结:NppExec能理解的只是它的内部命令和环境变量。
- 当输入其他命令时,比如"copy", "cmd"或"calc",NppExec尝试将其作为子过程来执行,i.e. 它执行CreateProcess(...)直到子过程结束。
- 当输入类似"npp_run cmd"或"npp_run calc"时,NppExec尝试以外部过程的方式执行指定的命令,i.e. 它执行ShellExecute(...),且不关心这个过程。
4. NppExec的子菜单
- Execute...:打开 "Execute..."对话框(默认热键F6)
- Direct Execute Previous:执行之前的脚本(默认Ctrl+F6)
- Show Console dialog:打开或隐藏Console窗口(默认Ctrl+~)
- Toggle Console dialog:激活或取消激活Console窗口(依赖Console的"hide toggled Console"选项,但是找不到这个选项在哪里)
- Console Commands History:Console命令历史是否可用(可用时上下键自动输入历史命令)
- Console Output...:打开Console Output/Input encoding对话框,选择输入输出的编码
- No internal messages:不显示命令确认等内部消息。比较如下,前面没有内部消息,后面有内部消息:
================ READY ================
cmd
Microsoft Windows [版本 6.3.9600]
(c) 2013 Microsoft Corporation。保留所有权利。 C:\Users\acton\Desktop>exit
exit
================ READY ================
cmd
cmd
Process started >>>
Microsoft Windows [版本 6.3.9600]
(c) 2013 Microsoft Corporation。保留所有权利。 C:\Users\acton\Desktop>exit
exit
<<< Process finished. (Exit code 0)
================ READY ================
- Save all files on execute:执行NppExec脚本前始终保存修改过的文件
- Follow $(CURRENT_DIRECTORY):始终以当前目录执行脚本(当前目录用cd命令查看或更改,请help)
- Disable command aliases:命令别名不可用(用NPE_CMDALIAS查看别名)
- Console Output Filters...:显示NppExec Console Filters对话框(Shift + F6)
- Advanced Options...:高级选项(可以添加菜单项,用于执行脚本)
- Change Console Font...:字体
- Help/Manual Help/Docs...
- Help/About
5. NppExec Console
可以用菜单、快捷键和工具栏图标打开,倒数第二个图标就是(反正我的是哈...)。
高级设置中的ToolbarBtn可以选择在工具栏显示Console/Execute/Execute Previous中的一个或不显示任何图标。
主要作用:
- 执行命令(Enter键)
- 当执行内部子过程,且为控制台程序时,显示运行结果(比如Python或cmd的运行结果)
- 显示内部消息
- help
- ...(有一个没看懂)
6. "Execute..."
打开方式:F6、菜单或工具栏(需要设置)。
用于执行脚本。
可以在<temporary script>中执行,也可以点击Save保存脚本。保存后可以在高级选项中设置为NppExec的菜单项,分配热键。 比如以下脚本:
// save current file
NPP_SAVE
// copy current file to C:\Backup
cmd /c copy "$(FULL_CURRENT_PATH)" "C:\Backup\$(FILE_NAME)" /Y
首先保存当前文件,然后用cmd中的copy命令复制到C:\Backup下,其中//开始的是注释。
7. NppExec脚本
NppExec脚本是一个命令集。
- 可以是NppExec的内部命令,比如"cls", "npp_save", "npe_debuglog"等
- 也可以是可执行的一些外部程序或命令,比如"cmd", "calc", "C:\tools\tcc\tcc.exe" 。
- 每条命令都可以带参数。比如以下几条命令:
INPUTBOX "Input something:" : something
NPP_EXEC "script name" "param 1" "param 2"
cmd /c copy /?
"C:\tools\tcc\tcc.exe" "$(FULL_CURRENT_PATH)" -run
注意:
- 一条命令书写在一行中。
- 注释以//开始。
- 脚本可以保存为txt文件,用npp_exec执行。
- 脚本存储在插件配置目录下,该目录存储在环境变量$(PLUGINS_CONFIG_DIR)中。
- 保存的脚本在npes_saved.txt中,从其中可以查看脚本保存的格式。临时脚本在npes_temp.txt中。
重点是执行脚本的四种方式、两类过程(内部和外部)和脚本基础知识,下次介绍环境变量。
Notepad++中NppExec的使用之一:基本用法的更多相关文章
- Notepad++ 使用nppexec插件配置简易开发环境
notepad++ 采用nppexec插件来配置简易开发环境,而不需要笨重的IDE以及麻烦.重复的命令行.控制台输入: 以下为本人最近用到的脚本配置: //编程语言脚本中$(NAME_PART).x ...
- [No000010]Ruby 中一些百分号(%)的用法小结
#Ruby 中一些百分号(%)的用法小结 #这篇文章主要介绍了Ruby 中一些百分号(%)的用法小结,需要的朋友可以参考下 what_frank_said = "Hello!"#% ...
- Notepad++中调用cl.exe编译器(Windows)
Notepad++中调用cl.exe编译器(Windows) 近来在notepad++中写代码,写完后总是习惯性的想去VS里面编译一下,看看代码是否有误.但有时候一些零碎的小文件总是懒得再VS中打开, ...
- Notepad++中代码格式化插件NppAStyle
本文以图片和说明,手把手教大家怎么让Notepad++中的代码风格看起来更美观. 工具/原料 Windows7 Notepad++ NppAStyle(Notepad++的一个插件) 方法/步骤 直 ...
- 在notepad++中运行python代码
#在notepad++中运行python代码 ''' 1.安装插件pyNPP, 2.允许插件pyNPP中的第一个和第二个选项即可,如果代码过少代码执行一闪而过,可能无法看到,可加入少量sleep时间即 ...
- zen-Coding在Notepad++中的使用
zen-Coding是一款快速编写HTML,CSS(或其他格式化语言)代码的编辑器插件,这个插件可以用缩写方式完成大量重复的编码工作,是web前端从业者的利器. zen-Coding插件支持多种编辑器 ...
- [转载]Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: ...
- C++中public、protected及private用法
转自:http://www.jb51.net/article/54224.htm 初学C++的朋友经常在类中看到public,protected,private以及它们在继承中表示的一些访问范围,很容 ...
- [转载]C#中as和is关键字的用法
这篇文章主要介绍了C#中as和is关键字的用法的相关资料,需要的朋友可以参考下. 原文链接:http://www.jb51.net/article/80944.htm#comments 在程序中,进 ...
随机推荐
- JavaScript的作用域和闭包
首发于:https://mingjiezhang.github.io/ 闭包和作用域有着千丝万缕的联系. js的作用域 具体的作用域我就不展开叙述了.其中很重要的两点就是:js的作用域链机制和函数词法 ...
- idoc 和 bapi 和 rfc 之间的区别
se37 写出来的叫function,其中可以远程调用的叫rfc,remote-enabled function,abap语法和输入输出参数就会有一些限制.bapi是sap做好的实现特定业务操 ...
- 基本完成了一个SEGY扫描程序
利用Seismic.NET编写了一个SEG-Y文件的扫描程序,可以自动判断道头字中主测线号.横测线号.X坐标和Y坐标的位置,自动快速扫描地震数据体中的拐点坐标.10GB多的数据体几十秒全部扫描完成! ...
- android XMl 解析神奇xstream 四: 将复杂的xml文件解析为对象
前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...
- Iterator 迭代器(一)
迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址.迭代器修改了常规指针的接口,所谓迭代器是一种概念上的抽象:那些行为 ...
- Struts2(十二)使用验证框架验证数据较验
一.数据验证 1.1.为什么要进行数据验证 对数据的合法性进行检查,只允许合法的数据进入应用程序 1.2.在哪里实现数据验证 客户端验证: 数据提交前在客户端验证 可使用JavaScript或者JQu ...
- iOS 抽象工厂模式
iOS 抽象工厂模式 什么是抽象工厂模式 简单了解一下 按照惯例,我们先了解一下什么是抽象工厂模式.抽象工厂模式和工厂方法模式很相似,但是抽象工厂模式将抽象发挥的更加极致,是三种工厂模式中最抽象的一种 ...
- Android直方图递增View
继上次分析实现Android自定义View之扇形图之后,自己又画了下面的这个递增直方图,本来是想做个静态的直方图就完了,结果想想静态的没啥趣味,于是就加了递增 1 从分析最终效果 界面上要展现的东西有 ...
- C语言-08-预处理器
C预处理器,C Preprocessor简称CPP.C预处理器不是编译器的一部分,它是一个单独的文本替换工具,指示编译器在实际编译之前需要完成的工作. 常用的预处理器指令 #include 包含头文件 ...
- Winpcap
Winpcap网络开发库入门