一直用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的使用之一:基本用法的更多相关文章

  1. Notepad++ 使用nppexec插件配置简易开发环境

    notepad++  采用nppexec插件来配置简易开发环境,而不需要笨重的IDE以及麻烦.重复的命令行.控制台输入: 以下为本人最近用到的脚本配置: //编程语言脚本中$(NAME_PART).x ...

  2. [No000010]Ruby 中一些百分号(%)的用法小结

    #Ruby 中一些百分号(%)的用法小结 #这篇文章主要介绍了Ruby 中一些百分号(%)的用法小结,需要的朋友可以参考下 what_frank_said = "Hello!"#% ...

  3. Notepad++中调用cl.exe编译器(Windows)

    Notepad++中调用cl.exe编译器(Windows) 近来在notepad++中写代码,写完后总是习惯性的想去VS里面编译一下,看看代码是否有误.但有时候一些零碎的小文件总是懒得再VS中打开, ...

  4. Notepad++中代码格式化插件NppAStyle

    本文以图片和说明,手把手教大家怎么让Notepad++中的代码风格看起来更美观. 工具/原料 Windows7 Notepad++ NppAStyle(Notepad++的一个插件) 方法/步骤  直 ...

  5. 在notepad++中运行python代码

    #在notepad++中运行python代码 ''' 1.安装插件pyNPP, 2.允许插件pyNPP中的第一个和第二个选项即可,如果代码过少代码执行一闪而过,可能无法看到,可加入少量sleep时间即 ...

  6. zen-Coding在Notepad++中的使用

    zen-Coding是一款快速编写HTML,CSS(或其他格式化语言)代码的编辑器插件,这个插件可以用缩写方式完成大量重复的编码工作,是web前端从业者的利器. zen-Coding插件支持多种编辑器 ...

  7. [转载]Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结

    本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: ...

  8. C++中public、protected及private用法

    转自:http://www.jb51.net/article/54224.htm 初学C++的朋友经常在类中看到public,protected,private以及它们在继承中表示的一些访问范围,很容 ...

  9. [转载]C#中as和is关键字的用法

    这篇文章主要介绍了C#中as和is关键字的用法的相关资料,需要的朋友可以参考下. 原文链接:http://www.jb51.net/article/80944.htm#comments  在程序中,进 ...

随机推荐

  1. js填写银行卡号,每隔4位数字加一个空格

    1.原生js写法 !function () { document.getElementById('bankCard').onkeyup = function (event) { var v = thi ...

  2. 身份证校验(c++实现)

    描述: 我国国标[GB 11643-1999]中规定:公民身份号码是18位特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码 ...

  3. 【使用 DOM】使用事件

    1. 使用简单事件处理器 可以用几种不同的方式处理事件.最直接的方式是用事件属性创建一个简单事件处理器(simple event handler).元素为它们支持的每一种事件都定义了一个事件属性.举个 ...

  4. SET UPDATE TASK LOCAL

    SET Effect Switches on the local update task. This means that when you specify CALL FUNCTION ... IN ...

  5. 使用Python给要素添加序号

    在ArcGIS的属性表中,由于编辑修改的原因,默认的FID或OID并不连续,经常需要给要素添加连读的序号,可使用Python代码完成. rec=-1 def autoIncrement(): glob ...

  6. 操作集合的工具类:Collections

    Java提供了一个操作Set.List和Map等集合的工具类:Collections,该工具类提供了大量方法对集合进行排序.查询和修改等操作,还提供了将集合对象置为不可变.对集合对象实现同步控制等方法 ...

  7. 【读书笔记】iOS-GCD-多线程编程

    一,现在一个物理的CPU芯片实际上有64个(64核)CPU,如果1个CPU核虚拟为两个CPU核工作,那么一台计算机上使用多个CPU核就是理所当然的事了.尽管如此,“1个CPU核执行的CPU命令为一条无 ...

  8. C语言中的自定义函数

    C语言中可以使用系统函数也可以使用自己的函数,就是自定义函数 自定义函数分为四种 第一种:无参无返回值的 函数的声明 void sayH(); 函数的实现 void sayH(){ printf(&q ...

  9. 再也不用管UIImagePicker的代理了

    EasyImagePicker 闲暇之余对UIImagePicker做了封装,将代理调用的方式封装成block回调的方式,这样一行代码就能够搞定UIImagePicker的使用,包括选择图片,取消选择 ...

  10. Eclipse Svn 取消某些文件或文件夹的版本控制

    SVN提交时,我们有时候需要将一些文件忽略掉,例如:maven项目中的target文件夹,可以将这些文件或文件夹设置成ignore来忽略这些文件或文件夹 1. 将文件夹或文件从Eclipse中删除.记 ...