Script.NET V2.2版本快要发布了,下面对2.2版本的编辑器功能做简单的介绍。
集成开发环境概述
任何一种语言如果没有很好的调试手段都是不可能很好的推广的,因为程序复杂之后,我们不可能让编程人员只看到最终结果就可以了。运行过程中的任何细节都应该是可以获取、可以控制,这样才能提供一个良好的开发环境。
集成开发环境(又叫IDE)是将编辑器、编译器、调试器、运行环境、以及一些辅助功能集成在一起的软件开发环境,例如VC的集成开发环境。好的集成开发环境可以给开发人员提供最大的帮助,VC之所以流行,很重要的原因就是其集成开发环境非常优秀。
编辑器
Script.NET 2.2版本对编辑器做了重大改进,使用了功能强大的开源编辑引擎Scintilla,提供的主要功能如下:
- 支持Tcl/Python/Perl/Lua/Ruby/NSIS/PHP...语法,支持关键字、扩展关键字等的特殊显示,可以设置各种语法颜色
- 支持代码折叠、代码行显示、代码行隐藏等功能
- 支持ANSI、UTF-8等多种编码格式,并支持文件格式的转换
- 支持Html等语法的高亮显示配对标签
- 支持单词和关键字的自动完成功能以及部分语言的函数参数输入提示功能
- 支持代码片段功能,常用代码可以通过片段的形式快速输入
- 支持查找和替换操作(可以在单个文件或指定目录查找)
- 支持特殊字符显示、自动换行等功能
- 支持编辑器文字的缩放
- 支持标签功能
- 支持断点设置
- 支持导出为Html和RTF格式的文档,支持RTF格式的拷贝
- 支持解释器名的配置,通过配置解释器名可以实现解释器共享
- 支持Tcl/Python/Perl/Ruby/Lua语言的交互调试
编辑器界面如下:
注意调试相关的菜单只有在打开的是Tcl/Python/Lua/Ruby/Perl等脚本,且安装了相应的脚本开发包的情况下才可以使用。
在系统设置的界面插件配置界面中可以配置编辑器的一些参数,如下:
常用设置
其中解释器名很重要,缺省的是Interp_Script,这和控制台的缺省解释器名是相同的,也就是说编辑器和控制台缺省情况下是共用的一个解释器,这样在编辑器中调试脚本时,就可以在控制台中实时的看到变化,从而实现各种高级的调试。如果不想让这两个模块互相干扰,则可以修改解释器名,使两个地方不一样。由于控制台窗口一般不会关闭,因此控制台中的解释器是长期存在的,而编辑器中的解释器实例只在运行过程中存在,运行完后自动销毁,如果下一次再运行脚本的时候,可能会因为同名的控制台解释器的存在导致解释器没有被销毁,上一次运行的结果会被保留下来,导致影响下一次的运行,为了避免这种影响,可以选择"运行脚本前自动重置控制台解释器"选项,这样在每次运行或调试脚本之前都会把控制台的同名解释器实例重置一次,清除上一次的运行结果。
新建文档设置
用于设置新建文档时候的默认编码和行结束符类型。
语言格式设置
用于设置编辑器的全局颜色、字体设置以及每种语言的颜色、字体设置。
调试窗口
在脚本调试过程中会自动出现变量、对象、过程、堆栈这几个调试窗口,用于显示相应的信息。几个调试窗口的说明如下:
窗口名 | 窗口说明 | 窗口实例 |
变量 | 可以查看全局变量、局部变量,对数组类型的变量双击之后可以展开,看到所有的数组元素,在变量上双击可以弹出对话框显示详细内容 | ![]() |
对象 | 可以显示当前空间中所有定义的类和类的所有实例(对象),可以显示对象的所有方法,用类/对象/方法三个层次来显示,在对象的方法上双击可以直接执行此方法 | ![]() |
过程 | 可以显示所有可以用的过程或函数,在过程上双击则可以展开查看过程的所有参数 | ![]() |
堆栈 | 可以实时查看运行过程中的堆栈空间,按照分层结构来显示,从当前堆栈一直上溯到全局堆栈空间,某些脚本可以显示栈对应的代码行号,并可以双击跳转到相应行 | ![]() |
可以配置Tcl/Python/Lua/Ruby/Perl等解释器和调试器的一些参数,包括重定向、加载库、调试器,如下:
1、配置重定向参数:
重定向是指在TCL脚本中通过puts等命令输出到标准输出的内容在Script.NET到底输出到什么地方,Script.NET目前可以支持输出到平台的某个输出窗口或脚本的标准输出(指TCL解释器的标准result)。注意:不论此处设置输出到平台的哪个窗口,在脚本调试的过程中都会临时输出到平台标准的调试窗口(ID为2),只有在运行脚本(而非调试)的情况下才会输出到此处指定的窗口。
2、配置TCL编译选项
用于将Tcl脚本编译为加密的字节码格式。
3、配置TCL构建选项
用于将Tcl脚本生成为独立的可执行程序。
查找替换
编辑器支持类似于Visual Studio的查找和替换功能,支持当前打开文件中的查找替换以及针对目录和指定类型文件的查找替换,点击查找按钮会出现如下对话框:
在编辑器中选择一段文字,然后点击查找按钮,可以打开查找替换对话框,查找位置显示的是当前选择的文字,位置部分有多个选项,如果选择"Current Document",表示查找当前打开的文档中的内容,也可以选择一个目录,则查找的是这个目录下符合文件类型下拉列表中所列的后缀类型的文件,文件类型列表框可以选择已有的类型,也可以输入自己想查找的类型。按目录查找的情况下,查找和替换的文字也可以支持正则表达式,选择了"支持正则表达式"选项后,一些常见的正则表达式匹配符也可以从查找、替换输入框右边的下拉菜单选择。
点击"查找所有"按钮,查找到的行会显示到如下的查找结果窗口中,双击某一行就可以跳转到对应的编辑位置:
如果要替换查找到的字符串,可以点击替换按钮进行替换,查找结果每一行的右边有一个选择框,表示这一行是否替换,默认查找到的每一行都是选择的,也可以更改选项,替换其中部分行。
断点
编辑器左边的图标区域中点鼠标左键就可以给当前行添加、删除断点标记,在调试菜单或编辑器的工具栏中选则"断点列表",就会出现断点列表窗口:
双击断点列表中某一行可以跳转到相应的断点行。断点标记在编辑器中的显示如下图所示:
书签
通过编辑器中的右键菜单或文件编辑菜单中的书签操作,可以添加、删除书签,查看书签列表,下面是书签列表对话框:
双击书签列表中某一行可以跳转到相应的书签行。书签标记在编辑器中的显示如下图所示:
自动完成与单词帮助
Script.NET为了方便代码的编写,提供了自动完成、函数参数提示、代码片段、单词帮助等辅助开发功能,下面分别进行说明。
自动完成
自动完成是指输入单词或关键字的前几个字符,就可以自动从一个单词或关键字列表中匹配,找到最接近的一些,此时用户可以直接从列表中选择或者按TAB键来自动输入剩余的字符,自动完成功能分为单词自动完成和关键字自动完成,可以从系统设置中打开这个功能,单词自动完成是指自动搜索当前文档中所有单词进行匹配,关键字自动完成是指从关键字库中搜索进行匹配,默认情况下是包含了单词搜索和关键字搜索的,也就是将单词搜索和关键字搜索的结果都列出来供选择,自动完成的界面如下:
用户也可以通过右键菜单中自动完成菜单下面的函数自动完成和单词自动完成两个菜单项对当前编辑的字符串进行单词自动完成和关键字自动完成两种方式的匹配。
关键字自动完成对应的关键字信息存放在Script.NET的plugins/org.owm.scite/APIs目录下,每种类型的文件有对应的一个xml文件,如果想添加新的关键字,可以直接在对应文件中增加。
函数参数提示
函数参数提示的作用是在用户输入一个函数名之后,输入左边的括号,会出现一个提示信息,提示这个函数的所有参数类型,界面如下:
目前此功能只提供了php等少数语言的支持。函数参数提示信息也是存储在文件中的,并且和自动完成的关键字存储在相同的文件中,可以自己进行添加,但自动完成功能仅限于函数后面有括号的语言。
代码片段
代码片段是存储的一些常用代码段,从右键菜单的自动完成菜单中选择代码片段菜单可以看到当前语言的代码片段列表,从中选择就可以把相应的代码段拷贝到当前光标位置,代码片段选择列表如下:
代码片段对应的片段信息存放在Script.NET的plugins/org.owm.scite/snippets目录下,每种类型的文件有对应的一个后缀是snip的文件,如果想添加新的代码片段,可以直接在对应文件中增加。
单词帮助
单词帮助是指光标在某个单词上的时候,按F1键,可以自动在文档库中搜索是否有此单词对应的帮助文件,如果有的话就打开对应的html帮助文件,如果有多个帮助文件,会自动出现一个选择框让用户选择查看哪个帮助文件,选择框界面如下:
单词帮助功能仅支持当前安装的解释器对应的语言类型,因为帮助文件和帮助索引库都是在安装相应脚本开发包时候安装的。
修改标记
Script.NET的编辑器可以在编辑器左边的标记区用不同的颜色标识行内容是否被修改以及是否已经保存修改内容,如下图所示,粉红色标记的行表示被修改未保存的行,淡蓝色标记的行表示被修改已保存的行: