EverEdit是一个来自中国的现代化的纯文本编辑器,它小巧精致,美观大方,性能好,拥有极高的可自定义性和扩展性。在EverEdit中没有复杂的配置文件,它是完全GUI化的,即使是最初级的用户也能很快的找到友好的设置界面;高手也可以通过脚本、插件、模式等配置快速的自定义出符合自己口味的独特的编辑器。 基础篇EverEdit是一款共享软件,有30天的试用期。在试用期间内您可以仔细评估它的各项功能!下面为大家介绍一下它的各种基础功能和设置。 下载和安装EverEdit下载:http://www./soft/13412.html 界面元素EverEdit的界面元素非常的简约,如下图所示,它拥有传统的菜单、工具条、多文档选择条、状态栏。 简约而不简单,如果您认为EverEdit就仅仅是这么简单的话,那么您就错了!后续我们将会看到它强大、方便的诸多功能。 菜单主菜单分门别类一字排开了常用的功能,建议您依次点开主菜单看一下各个菜单的大致意思,在鼠标经过菜单项目的时候,状态栏的左侧区域会显示出该项目的详细信息,该信息可以让您知道这个功能的大约意思。 在打开某些绑定模式的文件的时候,会显示出一个基于该模式的特定的菜单,该菜单一般在帮助的左侧。该菜单的项目仅在这种类型的文件中出现,切换到其它类型的话,它会动态的消失。 EverEdit为所有的菜单准备了贴心的小剪刀,点击它可以把该菜单的功能以对话框的形式一字排开。当您需要频繁地点击某个条目的时候,这个功能会极大节约您在菜单中穿梭的时间。当然如果您不喜欢这把剪刀的话,可以在设置中关闭。 菜单中的每个条目如果绑定了快捷键的话,会在右侧显示出快捷键。需要注意的是有的快捷键会显示诸如Ctrl+K→D,这种带有箭头的快捷键是二级快捷键,需要您按下Ctrl+K之后,再按下D;在您按下第一个按键的时候,如果EverEdit发现这是多级快捷键中的第一个,则会在状态栏闪烁信息提醒您:正在等待您下一次按键,在5秒钟的时间内如果按下下一次按键,才会构成完整的命令;5秒钟之后快捷键会被取消并回复到初始状态。通过这种多级按键的组合可以极大避免快捷键不足的情况!还在等什么,赶紧试试吧! 工具条在笔者的眼里,一个通用的文本编辑器如果没有方便的工具条,是不可想象的!很多人不会挨个菜单去翻那些隐藏很深功能的,甚至复制、粘贴,他们也不会用Ctrl+C,Ctrl+V这些快捷键的,而是直接去点击工具条上对应的按钮。 默认的工具条排列了常用的绝大多数功能,常用的操作都可以在上面找到,比如查找、替换、宏还有各种停靠窗口。如果您想更改这个工具条的话,在EverEdit中也是一件非常简单的事情。打开设置对话框,您可以随意添加或删除常用的按钮。 某些模式也会有专属于该模式的工具条,模式的工具条不可在EverEdit中设置,只能手工修改模式文件。 技巧:右键点击工具条,会出现常用的菜单。您可以设置常见的功能,比如在retina屏幕下使用更大的图标,使图标多行显示等等。 状态栏状态栏显示当前文档所处的编辑状态、文本信息等非常有帮助的信息,下面看看默认的情况下,状态栏的各个区域是什么意思。 1:在鼠标经过菜单项目的时候,该区域会显示出一段长文本说明该功能友好的、具体的信息 2:当前选区的字符个数和行数。注意:如果选择多行文本的话,那么换行符的个数也会被包含在内。PC格式的换行符是2个字符。 3:当前文档的着色类型。可以单击此区域,快速的切换文档的着色类型。 4:当前文档制表符的大小。您可以单击此区域,快速设定文档制表符的大小和切换是否使用软空格。注意:当您更改此处的值的时候,如果当前编辑的文件是一个着色文件的话,EverEdit会自动修改对应的着色文件的值;如果不是着色文件的话,则会修改默认的值。对于着色文件的配置也可以通过下面的对话框进行修改。 5,6:当前光标所处的行号和列号 7: 当前光标处字符的Unicode值。如果当前光标处于行尾且换行符类型是PC的时候,显示的是0x0D0A,该值仅为让用户区分而显示,并不是真实的Unicode值。真实的Unicode(UTF-16)值为两个字符,0x000D,0x000A 8:当前文档的文本总行数,当有选区存在时,则显示选区的行数。 9:当前文档的换行符类型。您可以点击快速设置换行符,如果您修改了该值,那么文档则会变为脏的状态,且不可撤销。 10:当前文档的编辑状态,点击它可以在插入和覆写之间切换。 11:当前文档的编码类型,可以点击它快速的切换为乱码的文件选择正确的编码,或者对当前文档进行编码转换。关于该功能,建议参考编码篇,获取更详细的信息。 停靠窗口EverEdit的侧边栏可以显示各种各样丰富的停靠窗口,这些停靠窗口为用户提供给了各方面便捷的功能。用户可以通过主菜单→查看→停靠窗口进行各种窗口的操作,还可以在自定义工具条上放置显示所有停靠窗口的按钮。 输出窗口输出窗口是EverEdit中最常使用的功能之一。文本的查找、替换,脚本和插件等都有可能在这儿输出有用的信息。熟练的掌握输出窗口可以极大的提高您的工作效率。打开任意文本文档,选中某个单词,按下F6试试吧!您会发现输出窗口列出了该文档内含有所选单词的所有行,并且高亮了匹配的部分。 1,2:在输出结果对应的文件中跳转 3:终止当前正在该输出窗口运行的外部程序。外部工具有时候会捕获输出,当您需要终止某些死循环的程序时,可以使用该按钮。 4:清空输出窗口的内容 5,6:折叠全部和展开全部 7:新建一输出窗口。在您新建之后,该窗口会成为焦点窗口,新的输出会输出到该窗口。 6:隐藏停靠窗格 在输出窗口中用户可以使用鼠标选择文本,也可以使用Ctrl+A/Ctrl+C,Up/Down/Left/Right这些常用快捷键。在您需要保存输出的结果时,可以把其中的文本拷贝到普通文件中进行保存。除此之外,输出窗口的右键有一些并未在工具条中展现的功能,用户可以进一步发掘! ※技巧:有时候用户不希望输出窗口停靠在下方,而是左侧或者右侧,这时候可以右键单击输出窗口的Tab,选择停靠方向。 快捷目录快捷目录在EverEdit中是一个非常方便的功能,您可以把自己常用的文件夹或者文件拖放到该窗口中进行组织和管理。快捷目录并不会主监视文件夹的变化,用户需要手动按下F5进行刷新。快捷窗口的右键集成了常用的功能:
命令窗口EverEdit提供了简单的命令窗口,用以输出经常使用的命令行。它可以在一定程序上代替cmd的作用。 但是对于复杂的图形输出命令行程序,EverEdit并不支持,比如edit、ftp、telnet等。除此之外,命令窗口也支持查找和替换操作。有如下几种操作:
其中mode各个字符的参数含义为:
如果不指定mode, 那么默认为 大小写区分,普通查找,非高速模式,查找高亮,非全字匹配。当是高速模式的时候, 始终进行全部替换, 不论是否设置a。比如我们要想查找单词ever的时候, 可以这么写/ever;要想让它不匹配大小写,这么写/ever/i;使用正则式的话,这么写/ever/ir。如果我们要把ever替换为now的话, 这么写/ever/now/;使用模式的话/ever/now/ir等等! 技巧:在用命令行进行查找时, Enter是向下查找, Ctrl+Enter是向上查找; 进行替换的时候, 如果想忽略本次替换, 请使用Shift+Enter. 万能查找EverEdit自3.0版本开始支持统一的查找窗口,那就是万能查找(主菜单→查找→万能查找)。所谓万能查找,就是把我们平常用的各种查找功能都集成到了一个输入框中,在这个输入框输入不同的界定符,就可以进行不同的查找了。 为了进行更为精确地查找,EverEdit提供了几种界定符,如下:
在打开工程文件的时候,依据相关设定,工程会自动刷新并创建tags。如果删除、修改、增加了文件,tags是不会自动刷新的。这个时候如果需要显示最新的tags,可以使用菜单命令或者当焦点在输入框的时候,按F5。同样,已打开的文件中的tags也是不会自动刷新的,需要用户手动刷新。Tags刷新完成时在状态栏会有相应的文本提示信息。一旦tags被创建完毕,那么在文件中输入字符时,tags就有可能被显示出来。自动完成中出现的Tags的提示符为#。 在进行tags查找时,对应的条目均以一个字母表示的icon进行显示,各个icon的意义如下:
万能查找也支持对文档进行字符串检索和替换,用法和命令窗口一致。 大纲视图大纲视图会以树状结构的形式显示出该文档的组织结构,在打开一些编程语言或者组织严谨的文本文档、小说文件时,大纲视图可以非常的清晰的显示出文件的结构。双击其中的条目,可以迅速的跳转到对应的行。除了文件结构,它还可以显示文件内的Tags、函数等信息:单击右键,选择显示Tags。 在下方的输入框输入内容,并按下回车键,大纲视图内所有的匹配的节点都会输出到输出窗口中。除此之外,您还可以通过右键复制大纲的结构。 文件列表文件列表用一个列表的形式,显示出了所有打开的文本文档、Hex文本、Web预览等窗口,总言而之,只要是编辑器区域的窗口都会在这儿显示。通过文件列表的右键可以实现单击文件Tab右键一样的效果。文件列表是为不喜欢文件Tab的人而准备的。文件列表的隔行和当前背景色可以通过右键→设置进行修改。 注意:仅在白色系的主题下有效。 书签管理器书签管理器可以管理所有打开的文档中出现过的书签,被标记的行如果发生修改的话,书签管理器也会动态的更新。该功能可以极大的方便管理很多书签。 收藏夹收藏夹可以非常方便的管理用户经常使用的文件,用户可以建立文件夹,分门别类管理自己经常使用的文件。收藏夹是快捷目录的补充,用户可以根据自己的需求进行选择。注意:对收藏夹中的文件进行删除时,并不会影响到物理文件,只是从列表中移除。 目录树目录树类似于资源管理器中的树状管理窗口,它原样列出了硬盘上的文件,并且显示对应的图标。默认的情况下,该窗口会动态的跟踪当前文件所在的路径,用户可以点击右键菜单进行设定。它还可以把某个目录置顶,只显示用户关心的文件夹。 目录树和收藏夹一样,都是快捷目录的补充。用户可以根据自己的口味组合使用。 自动完成自动完成并没有直观的窗口,只有当用户输入的时候,自动完成窗口才会显示。如下所示: 每一条代表着一个完成项目,每个项目前面都有一个字符表示该条目的类型,常见的类型如下:
您可以用键盘上下选择,也可以使用Alt+1~Alt+9快速选定前9个项目。随着你的输入,完成列表中的项目的匹配也会越来越精确。除此之外,您还可以设定自动完成的匹配类型,触发按键(默认是回车),每个条目类型显示的优先级。默认的匹配是从头匹配,用户可以选择部分匹配或者模糊匹配。
注意:插件也可以扩展自动完成的类型,显示的符号未列出。 代码片段EverEdit的代码片段是用来管理和各个语法文件绑定的snippet文件的,它不是一个专门用来管理用户收集的文本块的地方。所有在代码片段中的文本,在用户进行输入的时候,会动态的呈现在自动完成窗口中。关于代码片段的具体使用,请参考代码片段章节。 目录和文件EverEdit的目录组织有序而清晰,目录或者文件的名称描绘了它的功能,下面看看具体的文件结构。 文件夹
执行文件
配置文件
查找和替换EverEdit为用户提供了及其强大的查找、替换功能。单文件、多文件、多批次、文件夹等等常见的查找和替换在EverEdit均可轻松实现。这是一个非常重要的功能,熟练的掌握好查找和替换,是一个合格的码农必练的基本功。 查找、替换对话框的选项说明该对话框密密麻麻地排布了很多控件,很多初级用户可能不知如何下手。下面逐一分析其中各个选项的意义。 1,2:分别是查找和替换的输入框。用户查找或者替换过的内容会被记忆下来,可以点击右侧的下拉按钮选择曾经使用过的文本。 3:是否区分大小写 4:是否完全匹配一个单词。比如在不勾选的情况下,erE会匹配EverEdit中的一部分;勾选的话它只会匹配到一个完整的单词,即这个单词两侧是分隔符的情况,比如空格、逗号、分号等,这些不是单词的情况下,才会匹配。 5:正则表达式。它和第四项是互斥的,正则表达式如果要匹配单词边界,请使用\b选项。 6:是否循环查找。在搜索到文本头部或者尾部的时候,是否从头或者尾部再一次开始查找。 7:是否是扩展模式,它和正则是互斥的。扩展模式在普通查找的情况下会转义\n,\r,\t这三个字符。也就是说在普通查找情况下,也可以方便的使用\t查找制表符而不是输入一个真正的制表符。 8:查找到尾部或者头部时,是否进行到下一个、上一个文件 9:是否高亮查找结果。 10:是否使用高速替换。高速替换是EverEdit专门为用户进行巨大文本替换而设置的,通过该设置,EverEdit可以轻易的进行几百万次的替换,也不会占用很多资源。同时用户可以使用\n{1,}这种不定个数的换行符匹配。在高速模式下,替换的结果会被重定向到一个新文件,避免了大量的Undo和Redo带来的内存开销。 11:替换的作用范围。很多用户在点击的时候,发现实际文本存在,但EverEdit并没有执行。这个时候用户一定要确认是否设置了错误的范围,比如勾选了只替换选区,而选区却并不存在。 12:向下查找 13:替换一次 14:替换全部。它的作用范围视11的设置而定。 15,16:跳转到批量替换和查找 17:把该对话框停靠到主窗口的下方 18:多行替换。在多行替换的情况下,用户不可使用正则和扩展。 19:在勾选正则的情况下,这两个按钮会显示出和正则有关的选项。 20:增量查找。在开启该选项的情况下,EverEdit将会根据用户的输入实时的进行匹配。在找不到情况下,输入框会显示黄色背景。 21:高级功能。部分实用功能隐藏在这儿。 22:在输出窗口中显示所有的匹配。仅在正则的情况下有效。 23:在输出窗口中显示所有匹配的行。 24:计算匹配的个数。 25:标记匹配的行。被坐上标记的行,用户可以通过主菜单→剪贴板→剪切、复制标记行,进行高级操作。 26:在所有打开的文件中查找并输出到输出窗口。 普通查找、扩展模式普通模式下的查找简单而高效,支持大小写和单词边界。同时还可以用扩展模式来解决\n、\r、\t的输入。一般的来讲,普通模式下的查找和替换的效率要比正则高很多。 正则查找EverEdit支持丰富的正则表达式,在勾选正则的情况下,可以通过右侧的下拉三角按钮显示各种菜单项。通过这些菜单项,降低了用户的记忆难度。还有,EverEdit的正则专门对中文提供了转义符,\c匹配汉字,\C匹配非汉字。 需要注意的是,环视正则仅在查找的情况下有效,在替换下无法工作。因此用户如果想在替换时使用环视,需要改为分组。环视正则的替换可以用分组来模拟,比如(?<=exp)abc,可以用(exp)(abc)来模拟。 ※注意:在EverEdit中进行正则查找时,分组使用的是$而不是\。比如$1表示第一个分组,$2表示第二个,以此类推。 多行查找和替换查找和替换对话框支持查找多行文本,多行模式下不支持正则和扩展,也不支持单词边界。 在文件或工程中查找和替换在文件中查找和替换是笔者经常使用的功能,它可以完成简单的重构、信息收集等工作。部分选项和查找对话框类似,不再赘述,下面看看其它设置项目。 1:在查找或者替换的时候,是否递归包含子文件夹中的文件。 2:是否只在工程文件中查找和替换。 3:只显示不匹配的行。 4:只显示文件名称。有时候我们只需要知道哪些文件含有匹配,而不关心结果的时候,这个选项会非常的快速的完成工作。 5:是否使用输出窗口。不使用的话,查找结果会重定向到一个新标签页中,否则输出到输出窗口。 6:是否备份要被替换的文件。在执行替换的时候,如果EverEdit发现该文件将会有文字被替换的话,则会在相同路径下生成一个同名但后缀为.bak的备份文件,以此防止误操作的发生。 7:指定文件的编码。默认下,EverEdit会自动的检测每个文件的编码,确定编码之后再进行匹配,这个编码探测在某些极端的场合下,有可能是错误的。因此,如果用户明确知道该目录的编码,可以强制指定编码,提高查找替换的效率和准确性。 8:锁定主窗口。为了避免界面的死锁,查找和替换是在单独的线程下进行的;但EverEdit并未在多线程下进行充分有效的测试,勾选此选项,可以在一定程度下避免查找替换时的假死现象。 9:是否监视当前目录。这是一个二态按钮,一直按下的话,在启动本对话框时,将会在目录部分动态填入当前文档的路径。否则,按一下,则会显示一次当前路径。 10:点一次,则自动向上去一层路径。 11:文件后缀过滤。可以实现只检索某些特定类型的文档。 批量替换批量替换是一个非常便捷的功能,它的主要作用是在同一文档内执行很多次替换,避免了反复设置替换内容和选项的麻烦(不要和[在文件中替换] 混淆)。批量替换的每一项可以单独开启或者关闭,也可以只替换选择的项目,用户的设置可以被导出或者导入,这些文件都是以tsv为后缀的纯文本文件,用户可以直接用EverEdit进行批量生成。灵活的运用批量替换可以完成非常复杂的文本整理工作。下面看一下各个按钮的意义。 1:向上或向下移动项目。在批量替换中,替换的顺序很显然是非常重要的。 2:导出当前的所有的替换项目到文件中,文件的后缀为tsv。 3:导入替换项目。 4:曾经导入过的文本,都会在这里显示。 5:统计当前列表中的信息,比如有多少个项目被启动了,多少个被选择了等等。 6,7:选择或取消选择所有的项目。 8:选择全部。 9:删除选择的项目。 10:新建项目。 11:用选择的项目进行替换操作。 12:用所有的项目进行替换操作。(不包含未勾选的项目) 13:作用范围。当前文件或者所有打开的文件。 14:选择一个项目的时候,按下回车键可以激活输入框,用户可以输入查找或者替换的内容,并按下回车键确认。 15:右键单击会出现上下文菜单,可以灵活的进行部分操作,同时设置替换的选项,比如是否匹配大小写,是否正则等。 该对话框同时支持部分快捷键:
导出或者导入文件的格式: 1:是否激活该项目,激活的话为on,否则为off 2:目前请一直设置该值为text模式 3:查找的文本 4:替换的文本 5:替换的选项。R:使用正则;C:匹配大小写;W:匹配到单词边界;E:扩展模式。注意:R和WE是互斥的。 配置篇EverEdit支持丰富的自定义设置,通过这些设置项目,用户可以配置出一个与众不同的编辑器。 主题EverEdit支持自定义主题,您可以针对文本的不同部分设置不同的颜色,定制属于自己的专有主题。在EverEdit中配置主题是一件非常简单的事情,只需要几分钟,一个美观的主题就出来了。下面看看主题对话框的构成。 1:列出了所有已经保存的主题,点击不同的item,右侧可以显示出该主题的配色选项。 2:基于当前主题创建一个新的主题 3:删除所选主题 4:获取更多主题 5,8:颜色块。双击颜色块,可以显示出颜色对话框(作用于选择的所有颜色块)。右键单击颜色块,可以显示出菜单,进行颜色复制和粘贴。按下Ctrl键,可以同时选择多个item,粘贴的时候会应用到所选的项目。该操作可以极大的减少制作主题花费的时间。 6:在编辑区应用该主题 7:保存当前的主题。保存的时候,对该主题的修改会写入到物理文件,并不会应用到编辑区,因此需要点击应用按钮。 EverEdit的主题元素非常的简单,对部分高级用户而言,想针对每一种语言都进行细节配置的话,用一个主题文件很难去满足多种语言的语法元素。没关系,在EverEdit中,着色文件可以绑定一个主题文件,这样针对该着色文件可以进行细节定制了。在语法着色中的配置如下: parser.SetTheme "xxxxx.ini" 注意:在设置主题的时候,支持设置字体的粗体、斜体样式,这两个样式在当前字体不是等宽字体的情况下会无效。 字体子曰:一个不能随便定义字体的编辑器不是一个优秀的编辑器!在EverEdit中设定字体是一件非常简单的事情,EverEdit支持等宽、不等宽、加粗、倾斜等各种字体样式,还有一件激动人心的事,那就是EverEdit可以对汉字设置专门的字体。中文的用户们,再也不用忍受精美的英文字体搭配丑的不能直视的汉字字体了。 ※注意:部分字体样式需要主题的支持。 下面我们详细看看字体对话框的设置: 1:列出了字体的区域。默认字体和自定义1~自定义5是主编辑区域所使用的字体。用户可以配置几个常用的字体设置,然后通过主菜单→查看→字体进行快速切换。其它的条目是输出窗口、命令窗口、打印字体等设置。 2:激活中日韩专用字体。勾选该项的话,将会激活一个新的字体设定tab(CJK),在该tab可以配置中日韩字符专用的字体。当遇到中日韩字符时,EverEdit会使用该字体进行渲染。 3:字体的名称。等宽的字体,会以粗体的形式显示。 4:字体的大小。目前不支持小数点大小的字体,比如10.5等。 5:字体的平滑程度。在某些像素字体下,关闭平滑会带来更好的视觉效果。 6:字体基线设置。所谓基线,是指文字显示下部的一条水平线。一图胜万言语,Look: 图中红色的部分就是显示一行文本时候的基准线,文字可以在这条线上下地移动显示。为什么要设置这个基线呢?这是因为分别显示中英文字体的时候,他们的基线位置并不一致(字体并不是同一个设计者,基线也肯定会有差异),有时会出现不美观的字符错位的情况,通过调节这个基线,可以让中英文字体可以在同一个基线上显示,部分情况下可能需要调整行间距予以配合。 7:字体加粗显示。这个加粗是针对没有任何样式的字体而言的,也就是说如果主题里面配置了这个匹配不加粗的话,那么即使勾选这儿的加粗也不会应用到该匹配上。 8:预览。 9:在勾选CJK的情况下,中日韩专用字体可以在该tab上设置。注意:部分项目的字体设定不支持CJK单独字体设置。 快捷键一个程序如果不支持快捷键自由定制,简直是不可想象的。EverEdit中,用户几乎可以对每一个操作定制单独的快捷键。一般的来讲,所有的快捷键都会在快捷键对话框中显示出来。 1:显示当前已被分配的快捷键。快捷键的格式为 辅助键组合+字符键。比如CSAW+B表示的意义是 Ctrl+Shift+Alt+Win+B,C+A则是Ctrl+A。字符键的列表如下:
2:显示该命令的标识字符,该字符序列是唯一的,用于唯一的确定一个命令。字符序列有一定的格式,开头的两个字符有特殊的意义:
3,4:显示该命令的短说明和长说明。部分命令没有长说明。 5:显示已绑定到该命令的快捷键。一个命令可以绑定多个不同的快捷键。 6,7:设置快捷键。命令支持设置两次按键触发。 8:分配快捷键。分配成功的话,在左侧的列表中会显示出来;如果已被占用的话,会提示用户是否删除。 9:为一个脚本绑定快捷键。此外,还可以直接拖放脚本到快捷键对话框,实现快速设置。 10:删除左侧列表中已绑定的快捷键。 11:迅速查找自己需要的命令,您可以输入命令、短说明、长说明的某些提示字符进行快速查找,比如粘贴。 外部工具在任何一个平台上,工具的组合使用都是非常重要的。术业有专攻,通过工具的组合,我们可以扩展EverEdit本身不具备的功能。在EverEdit中,外部工具的设置可以直接地快速地启动外部独立的应用程序,捕获其在控制台的输出(stdout)或者隐藏运行等等。 基本设置1:为当前分组命名,使其有一个明确的意义。EverEdit支持1个默认分组和9个自定义分组,用户可以对常用的各种工具进行分类,比如C++的工具一组,HTML相关的工具一组等。并且这些工具是可以和着色文件关联的,在切换到该着色文件的时候,会动态的呈现和其绑定的相关工具,主工具条上的按钮也会动态的刷新(需事先设定)。关于着色文件和工具的关联,请参考着色相关的设置。 2,3:添加和删除。 4:加入一条分割线。这样在菜单中显示的时候也会有一条分割线,工具比较多的时候,看起来比较美观。 5:上下移动位置。 6:为工具指派一个图标。该图标会在工具条上显示(如果设置的话)。 7:命令。用户可以输入完整的程序路径,或者在环境变量中生效的程序路径。 8:参数。参数可以是当前选择的文本,也可以是其它各种自定义的设置。点击下拉按钮,可以获得支持的内置变量。如图二所示,EverEdit支持四个用户动态输入的弹出变量。当运行该工具时,会弹出一个输入框,提示用户输入,EverEdit会根据用户的输入依次填充参数中对应的位置。 9:初始目录。部分外部工具设置初始目录,可以简化参数的配置。 10:动作模式。它的意思是指,在工具运行完毕之后,下一步应该如何做。常见的有以下几种动作:
快捷键设置EverEdit支持对自定义工具设置快捷键,打开快捷键设置对话框,在过滤中输入工具的标题即可。输入tl会过滤出所有的工具。这样设置的话,这个快捷键是全局的,也就是说无论你在何时何地只要按下这个快捷键都会调用这个工具。但有的时候,我们希望这个快捷键会在不同的分组下调用不同分组的工具,如何设置呢?在快捷键对话框输入tool会显示出下图所示快捷键: 这9个快捷键始终指向当前分组的第1~9个工具。那么我们可以为其指派Ctrl+1…Ctrl+9这样9个快捷键,就很方便的解决了上述问题了。 工具条上的按钮设置EverEdit也同样支持把自定义工具放到工具条上,look: 只要把这个9个工具拖放到右侧就可以了。注意:如果用户的默认工具分组比较多的话,未显示出来的会由默认分组的工具进行填充。 文件关联文件关联是一个常用,看似简单但其实比较复杂的设置。每一个后缀标示着一种文件类型,Windows把文件类型和关联程序以复杂的关系组织于注册表中,而文件关联程序的作用就是根据用户的选择,设置这些注册表类型。 注意:启动文件关联需要管理员权限。 1:显示了所有用户配置过的着色文件以及对应的文件后缀 2,3:勾选全部、取消勾选全部 4:用户自定义文件关联的类型。多个文件类型之间用分号分割,比如txt;log;pdf;exe等等。 5:默认的情况下,EverEdit会用自己的文件关联图标 去替换,勾选此项可以在文件关联的时候保留原先默认的文件关联图标不变。 6:应用文件关联。 在进行文件关联的时候EverEdit会弹出对话框,提示EverEdit并不会备份原先的文件关联。这是因为文件关联比较复杂,每一个文件关联项会有很多的设置,而且在中途这些关联也有可能被其它程序修改,到目前为止EverEdit仍然不支持备份原先的文件关联。 注意:EverEdit不会对这几个后缀进行关联vbs;js;bat;cmd,这几种文件类型都非常的特别,对他们关联之后会可能导致其它程序无法运行。 代码片段什么是代码片段代码片段又叫文本片段,它是指一小段经常使用的文本的集合。比如可以把经常使用的注释信息、函数的头部说明信息、还有一些反复的编程语句等。通常的来说,代码片段都比较的小,你不应该把一个巨大的文本定义为片段。因性能考虑,EverEdit对每个代码片段的大小限定为2000个字符(因转义处理,实际输入的字符可能会略小于2000)。 格式文本片段有一定格式,按照该格式存储的文本,在插入到文档的时候会做出一些特殊的动作。当然您也可以不使用任何格式,就把它当成一个普通的文本管理器。典型的文本片段如下: for (${1:unsigned int} ${2:i} = ${3:0}; $2 ${4:<} ${5:count}; $2${6:++}) { $0 } 代码片段的使用在文本片段中,有几个概念:
变量定义变量的定义非常简单,比如:${1:myvar}。其中数字1表示该变量的序号,在EverEdit中最多支持9个变量1-9,而0则指示着最后一次光标定位的位置。 注意:变量最好按照大小顺序定义。变量不支持嵌套,也就是说变量里面不可以定义变量。比如不支持下面的格式:${1:data ${2:text}} 变量引用变量定义完之后,如需引用的话,可以使用美元符号后接数字的方式使用,比如$1。在可以识别$的场合,比如变量定义和引用时,如需对$进行转义的话,可以连续输入两个$$;在不可识别的场合,可以随便使用$字符。错误的变量使用和格式将会导致该片段不可跳转。 变量间跳转在EverEdit中,非常方便的一点是如果定义了多个变量的话,在展开文本片段之后,可以使用Tab跳转到下一个定义,Shift+Tab定义到上一个定义。这是代码片段一个重要特性,不支持该特性的编辑器不能称之为支持代码片段。 最后光标位置上文提到EverEdit最多只支持9个变量定义,$0被用于最后一次的光标位置。对$0定义没有任何作用!当用户修改完1-9的变了之后,再一次按Tab,光标将会移动到该位置。 引用被选择的文本有时候想直接在代码管理器点击,插入snippet或者通过脚本菜单生成的snippet来进行操作的时候,EverEdit支持${SELECTED},对普通选区文本进行操作,所有snippet中的${SELECTED}都会被替换为选区的文本。比如HTML中的:<b>${SELECTED}</b> 使用代码片段管理器EverEdit为大家提供了方便使用的代码片段管理器。可以通过 主菜单→查看→文本片段可以激活片段管理器。它会自动的读取snippet目录下所有的后缀为snippet的文件,并以列表的方式呈现出来。在管理器中您可以新建、修改、删除任何片段。在EverEdit中修改代码片段的样例: @名称:For loop @触发文本:for @文本片段:请在下一行开始输入内容! for (${1:unsigned int} ${2:i} = ${3:0}; $2 ${4:<} ${5:count}; $2${6:++}) { $0 } 注意:如果语法文件已经加载代码片段的话,那么该代码片段会自动刷新到对应的语法文件中! 定义说明@名称:表示该片段呈现在管理器以及自动完成下拉列表中的名称 @触发文本:当输入tab的时候,符合这几个字符的时候则触发。除此之外,自动完成下拉列表也会使用它进行匹配。 @文本片段:该行文本仅是提示用,无实际意义。从第四行开始定义您的代码片段。 关联到语法文件如果新定义一个snippet文件的话,那么它仅仅会出现在文本片段管理器中,而不会自动的出现在某种语法文件的下拉列表中。因为语法文件并不会如此聪明的知道您要加载哪个snippet。如果想让它自动出现的话,需要手工修改语法文件(比如java.mac),添加如下代码到指定的Region: java.AddSnippet "my.snippet" 脚本控制概述EverEdit内置VBS/JScript作为基础的脚本解释引擎(最新版本还支持以ActiveScript形式运行的ruby和python)。在EverEdit内部,VBS/JScript不仅可以用来进行常见的文本操作,也可以定义着色文件。VBS/JScript易学易懂,和Windows关系紧密。借助于VBS/JScript, EverEdit可以完成很多匪夷所思的功能,JScript和JavaScript非常的像,但是二者不是一回事,请不要混淆! 本文并不着重于介绍VBS/JScript的基础语法和用法, 如您需要学习VBS/JScript的基础部分, 请参考相关文档。 为了简化和方便管理,被调用的脚本,要统一地放置到安装目录下的[macro]目录中。您可以在[macro]目录中,使用子目录作为分类,脚本的后缀必须为mac,ejs,evb,erb,epy(暂时不识别其它的后缀)。所有被放置到[macro]目录中的文件都会显示在[addon]菜单中,如未显示,您可以点击[Reload Macros]试试看。 类和函数EverEdit以面向对象的方式封装了一些常用的类和函数,在脚本中处于最顶层的对象是App,其它的对象均由此创建而来。 全局函数和变量SCRIPT_PATH: 获取当前脚本的全路径 SCRIPT_NAME: 获取当前脚本的文件名称 Include(): 包含某个文件。注意:EverEdit会直接读取被包含的文件,然后在当前上下文中进行执行。 Application函数Menu CreateMenu(); 创建菜单。该菜单的弹出将会跟随鼠标位置。 SyntaxConfig CreateSyntaxConfig(); SyntaxConfig FindSyntaxConfig(string name); void AddSyntaxConfig(SyntaxConfig sf); void SaveAllSyntaxConfigs(); bool BindShortcut(string strCommand, string strKey, bool bSaveNow); string FindShortcut(string strCommand); void AddTemplate(string strTitle, string strType, string strFile, bool bRunAsSnippet); Document GetDoc(int index); void Sleep(int dwMillisec); void SendCommand(int nCmd); 发送整数形式的命令到主窗口,nCmd是整数值,对应着菜单中的某个菜单项的ID。 void SendCommandEx(string strText); 发送字符串形式的命令到主窗口,具体命令可参考快捷键中显示的文本。 void WebPreview(string strPathName); web预览指定路径的文件,预览的web文件将会链接当前活动的文档窗口。可以使用Ctrl+B在链接的文档间切换。 void WebOutput(string strText); Document NewDoc(); Document CreateDoc(); Document OpenDoc(string strPathName); void OutputText(string strText, bool bClear=false, bool bTerminate=false); void OutputLine(string strText); 输出文本到输出窗口, bClear:是否清除当前文本;bTerminate:是否终止当前正在运行的程序。 string ShowInputBox(string strPrompt, string strTitle); 弹出文本输入框。strPrompt:提示文字;strTitle:对话框的标题。 void OpenSnippetByTitle(string title); 打开代码管理窗口,并让其显示指定title的snippet文件 int ShowMsgBox(string strText, string strTitle, int buttons); 弹出消息对话框。strText:对话框中的文本;strTitle:对话框的标题。buttons:对话框按钮的组合。 有以下几种组合(摘自MSDN): #define MB_OK 0x00000000L #define MB_OKCANCEL 0x00000001L #define MB_ABORTRETRYIGNORE 0x00000002L #define MB_YESNOCANCEL 0x00000003L #define MB_YESNO 0x00000004L #define MB_RETRYCANCEL 0x00000005L #define MB_CANCELTRYCONTINUE 0x00000006L #define #define MB_ICONHAND 0x00000010L #define MB_ICONQUESTION 0x00000020L #define MB_ICONEXCLAMATION 0x00000030L #define MB_ICONASTERISK 0x00000040L int ShowHtmlHelp(string strPath, string strWord); 显示chm或者hlp后缀的帮助文件。strPathName:帮助文件的全路径。 strWord:打开帮助文件时自动查找的词汇。如果为空,则定位到起始页。 string CreateTempFile(bool bAutoDelete); 创建临时文件。bAutoDelete:主程序结束时是否自动删除。 bool RemoveFile(string strPath); 显示打开或保存文件的对话框。 string ShowFileDialog(bool bOpen, string strInitDir, string strDefExt); OutputWindow CreateOutputWindow(string strTitle); void DebugLibrary(string strPathName); 用于调试插件DLL。通过个简单的脚本(App.DebugLibrary "xxxx.dll")加载指定路径的DLL, 结合开发工具(比如Visual Studio)的附加到进程的功能,可以非常方便地达到调试DLL的目的。 void SetValue(string strPathName, string val); string GetValue(string strPathName); 属性Document ActiveDoc; //get HexDoc ActiveHex; //get Document document; //get OutputWindow OutputWindow; //get Project Project; //get string AppPath; //get string CommandBox; //get ULONG Hwnd; //get ULONG FileCount; //get string Version; //get string ClipboardText; //get,set int Lang;//get Document函数Menu CreateMenu(); 创建菜单。菜单的弹出位置将会跟随光标Caret。 void SendCommand( int nCmd); bool Activate(); void Refresh(); 强制刷新、重绘文档。 long GetHwnd(); bool SetImageList(string path); int GetLineImage(int line); void SetLineImage(int line, int icon); string GetLineTooltip(int line); void SetLineTooltip(int line, string strtext); void AppendLineTooltip(int line, string strtext); bool HasSel(); 当前文档是否含有普通选区。列选和多选会返回False。 void ClearSel(); 清除选区包括多选和列选。 void InsertAt(int line, int col, string strText); 指定坐标处插入文本。 void Insert(string strText); 当前光标处插入文本。 void MoveCaret(int nLength); 以光标位置为基准,把光标移动指定长度。注意:换行符也会被计算在内。 void IndentInsert(string strText); 插入文本。被插入的文本从第二行开始按照首行的文本进行缩进。 int GetSyntaxState(int line); int GetStateStyle(int state); void OpenOutlineFile1(string strText); void OpenOutlineFile2(string strText, string strImg); void Delete(int sline, int scol, int eline, int ecol); 删除指定位置的文本。如果不带任何参数,相当与按一次delete键。 void Delete(Pos spos, Pos epos); void Delete(); void SetCaretPos(int line, int col, bool bVisible); void SetSel(int sline, int scol, int eline, int ecol); void SetSel(Pos pos1, Pos pos2); 设置普通选区。 int AddSel(Pos pos1, Pos pos2); 指定范围的文本。添加到选区。如果该范围和当前选区不重合,那么自动变成多选。 Pos Offset2Pos(int nOffset); int Pos2Offset(Pos pos); 偏移和行列位置之间的转换。 bool ExportTo(string strPathName, int nEncoding, bool bAddBom, int nEol); bool ExportTo(string strPathName, int nEncoding, bool bAddBom); bool ExportTo(string strPathName); 导出当前buffer到指定路径(如果文档被修改,则连同被修改的内容一起导出)。strPathName:目的路径;nEncoding:导出为指定编码的文件;bBom:是否添加BOM(仅在UTF 16/8下有效);nEol:换行符的类型。换行符取值如下: WIN=1 UNIX=2 MAC=3 int ReplaceAll(string strFind, string strReplace, bool bCase, bool bRegex, bool bWord, bool bExtended); int ReplaceAll(string strFind, string strReplace, bool bCase, bool bRegex, bool bWord); int ReplaceAll(string strFind, string strReplace, bool bCase, bool bRegex); int ReplaceAll(string strFind, string strReplace, bool bCase); int ReplaceAll(string strFind, string strReplace); 替换全部。 int FindAll(string strFind, bool bCase, bool bRegex, bool bWord); int FindAll(string strFind, bool bCase, bool bRegex); int FindAll(string strFind, bool bCase); int FindAll(string strFind); 查找匹配的指定文本字符串,并显示到输出窗口。 bool FindNext(string strFind, bool bCase, bool bRegex, bool bWord); bool FindNext(string strFind, bool bCase, bool bRegex); bool FindNext(string strFind, bool bCase); bool FindNext(string strFind); 以当前光标位置为基准,向下查找并高亮匹配的指定字符串,未找到则返回False。 string GetWord(int flag); 依据flag获取光标处的文本。flag的取值如下: #define GETWORD_LWORD 1 #define GETWORD_RWORD 2 #define GETWORD_WORD GETWORD_LWORD|GETWORD_RWORD #define GETWORD_LEDGE 4 #define GETWORD_REDGE 8 #define GETWORD_EDGE GETWORD_LEDGE|GETWORD_REDGE #define GETWORD_LSYNTAX 16 #define GETWORD_RSYNTAX 32 #define GETWORD_SYNTAX GETWORD_LSYNTAX|GETWORD_RSYNTAX #define GETWORD_LSYNTAX2 64 #define GETWORD_RSYNTAX2 128 #define GETWORD_SYNTAX2 GETWORD_LSYNTAX2|GETWORD_RSYNTAX2 string GetLineText(int); int GetLineLength(int); int GetWrapCount(int); 获取指定行的子行数。 int InsertSnippet(string strSnippet); 插入snippet到光标处。 void CommentLine(string strCommentLine, bool bComment); void CommentBlock(string strCommentOn, string strCommnetOff, bool bComment); 按照文档的语法模式注释、反注释当前行或者选区文本。 void write(string strText); void writeln(string strText); void close(); 模拟js的操作。 void GhostTyping(string text, int speed=100); 幽灵打印,调用该函数,将会自动按照指定的速度在文档内键入文本,speed越小速度越快,最快每30毫秒键入一个字符 void Wrap(int type, int value=0) 设定换行的方式 type的取值如下: 0: 取消换行 1: 窗口边界处换行 2: 智能换行,智能判断单词边界和禁则字符 3: 指定列换行( |
|