作者: | limodou |
---|---|
联系: | limodou@gmail.com |
版本: | userguide.txt 42 2005-09-28 05:19:21Z limodou |
主页: | http://wiki.woodpecker.org.cn/moin/NewEdit |
BLOG: | http://www.donews.net/limodou |
版权: | GPL |
本手册采用对照菜单功能进行描述,个别专题单独讲解。
本软件采用GPL版权发布。
目前软件开发就是本人,如果你在使用过程中有什么意见和建议,欢迎给我写信 limodou@gmail.com 。也可以去我的 Blog 留言。
这是NewEdit的主窗口:
NewEdit分为菜单条、工具条、文档窗口和状态条。
文档窗口由Tab页组成,可以一次编辑多个文档。当前文档的标题会显示在主窗口的标题条上。 状态条可以看到行、列值。文档回车类型:WIN为DOS/Windows格式,UNIX为UNIX格式, MAC为MAC格式。文档使用的编码。
可以运行在Windows和Linux环境下。 需安装Python 2.3以上版本,wxPython 2.4.2.4 Unicode版本 将源码包解压放到一个目录下即可。 强烈建议使用 python 2.4+ wxPython 2.6+版本。
只能运行在Windows环境。执行安装程序即可,不需要事先安装Python和wxPython。
新增功能:
新增插件:
新增快捷键:
修改:
新增功能:
新增插件:
新增快捷键:
修改:
新增:
修改:
新增:
修改:
新增:
修改:
新增:
修改:
增加的文本转Html和Html浏览功能主要是中以辅助Html编辑及对Blog写作预览的支持。对于Windows安装 程序,在安装时会自动对注册表进行注册,即将NewEdit增加到资源管理器的上下文菜单中。卸载时自动删除 注册表。
对于plugins功能进行调整,因此如果你已经使用了plugin,需要重新进行设置。
新增:
修改:
升级说明:
Blog插件是自选安装的,因此,在正式的安装包中不带。需要单独下载。如果要安装Blog插件,还要安装Meteor模块。
新增:
修改:
升级说明:
因为此次修改了程序结构,应用2.5版升级相似,在运行 NewEdit 前应先执行tools/convert_opt2.6.py来转换newedit.opt。 也可以简单地删除newedit.opt文件。
新增:
修改:
升级说明:
因为此次修改了程序结构,因此造成原配置文件处理在新版本下会发生错误。因此,在安装完2.5版软件后,可以执行tools 目录下的convert_opt2.5.py来进行配置文件的转换。此程序只对2.5版以前的配置文件生效。还有最简单的方法就是删除 配置文件即可。同时,本软件所提供的插件(从http://newedit.tigris.org上下载的)可能也存在问题,如果使用请重新下载。
新增:
修改:
新增:
修改:
新增:
修改:
新增:
修改:
新增:
修改:
启动NewEdit可以在命令行下执行:
python newedit.py -u|-v|-n|[-e defaultencoding] files ... -u 显示用法信息 -v 显示版本信息 -n 禁用DDE功能(2.3新增) -e defaultencoding 可选,缺省使用编码 -s 使用psyco加速模块(2.5新增) -f 启动时忽略上次会话打开的文件 files ... 文件名列表,可以有多个,以空格隔开
可以双击NewEdit.pyw图标启动。
(print "%s%s" % (a, b) ) ^ ^ ^ a b c
在最外层的括号内还有""和()的嵌套。如果想选中最外层括号内的文本,则可以将插入点置于最外层括号与嵌套的包括符""之间, 如上面所示可以有三个位置。如果为位置a,当执行向左匹配时,会先向左查找第一个包括符,这样会找到‘(’。然后,再向右查找与‘(’ 相匹配的‘)’。匹配查找可以识别出嵌套的括号对,直到找到正确的匹配符。然后将包括符中的文本全部选中。如果找不到对应的匹配 符,则不做选择。如果将插入点置于位置b,则向左查找时会先找到‘"’,这样可能与你的期望不符。这是因为双引号(还有单引号)是不 分左右的,因此对于它们的处理要小心些。如果将插入点置于位置c,匹配查找仍然会认为左边的‘"’是第一个包括符,从而产生和位置 b一样的效果。因此为了正确选中文本,请将插入点置于a位置附近。或者将插入点放于位置c,但使用向右匹配功能。
选中的文本不包括找到的最外面的包括符,在上例就是不包括最外面的括号。
复制功能主要的想法是复用以前的输入,包括以前输入过的字符、单词和句子。要复用以前的输入首先要同以前的内容进行匹配,因此你首先需 要输入要匹配的开始字符,可以是任意多个。注意,只处理标识符(英文字母,数字,'.', '_')。然后执行相应的功能进行匹配,匹配分为向前匹 配和向后匹配。匹配会查找与所输入的字符序列开始相同的标识符,如果找到则会在当前位置显示一个提示窗口(只有词、句匹配才可),如果为你 想要的内容,按回车或空格选中匹配,按ESC可以取消本次匹配。如果不是想要的匹配,可以继续执行下一次匹配。
想要匹配首先要输入几个字符作为匹配串,匹配串的识别是:从当前插入点开始向左查找,如果字符在标识符集中,则存入匹配串,再进行下一次 查找。直到字符不在标识符集中为止。注意,匹配只针对于半角字符,不处理汉字。
对于字符'.'是否算做标识符集,可以通过复制扩展模式进行选中或不选中。
格式菜单功能可以处理一行或多行。如果没有选中任何文本,则处理当前插入点所在的行。如果选中了文本,则处理选中文本所在的所有行。
可以将某种格式的换行符转换为其它格式。
Shell命令可以允许你加入外部的命令,生成菜单,在NewEdit中进行调用。
脚本功能是我一直想实现的,你可以编写特别目的的Python程序,把它置于NewEdit之下,可以对当前文档进行特殊的文本 处理。利用这一功能,用户可以扩展NewEdit的文本处理功能。要想将脚本置于NewEdit的菜单之下,首先要存在这个脚本,如果 没有请先编辑一个。然后,执行脚本管理功能,可以将脚本文件增加到脚本菜单中。在脚本管理窗口中,你可以修改脚本的描述( 用鼠标在某项描述上单击,即可进行修改)。这项描述将作为菜单项显示在脚本菜单中。
用户编写的脚本将作为NewEdit的一部分进行执行,因此没有什么限制,所有NewEdit的资源均可以使用。只不过要注意,使用 时要通过win这个对象来访问所有的资源。win对象为整个框架窗口,访问当前正在使用的文档窗口,可以使用win.document。 访问消息窗口可以访问win.messagewindow。文档窗口可能会随着文件的不同而不同,缺省的文档窗口类为wxStyledTextCtrl。 消息窗口为wxStyledTextCtrl类。因此你可以使用wxStyledTextCtrl的方法。最基本的方法可以为:
GetLength() 返回文档长度 GetText() 返回文档的内容,如果为Unicode版本,将返回Unicode内容 AddText(text) 在当前光标处,插入文本 InsertText(pos, text) 在文档指定位置前插入文本 ReplaceSelection(text) 替换选中文本 SetText(text) 重新设置文档的文本为text,以前的文本全部丢失 SelectAll() 选中全部文本 SetSelection(start, end) 设置选中区域 GetSelectedText() 得到选中文本 GetSelection() 得到选中范围,返回为一个tuple,(start, end) GotoPos(pos) 跳转到指定位置 GotoLine(pos) 跳转到指定行 GetCurrentPos() 取得插入点的位置
当前还有许多的方法,上面只是列出一些常用的方法。
片段是为了实现代码的重用。在平时的编程中你可能有许多代码是可以被重用的,你可以将它们按照某个分类进行组织。同时 在需要的时候你可以将它们插入到文档中。片段功能包括:片段的使用和片段的管理。
当使用片段时会在文档的左边弹出一个窗口,窗口分为上下两部分。上部为片段的分类,组织为树状结构。下部为列表结构, 用于显示每一个分类里面所有的代码片段。当在分类中进行选择时,下面的代码片段会随着分类的改变而发生变化。当在代 码片段中双击时,选中的代码片段的内容会插入到当前文档的光标处。
片段的组织分为:分类的管理和片段代码的管理。
对于分类,你可以增加、删除、修改、增加一个子项。选中一顶后,可以将其上移、下移。并可以改变它的级别,通过左移 和右移来实现。这样,分类就完全组织为一个树状结构。当改动中想要保存时,可以选中[应用]按钮。保存退出时,请选择 [确定]按钮。
对于片段代码,你可以增加、删除、修改。首先要选定某个分类,然后才可以对此分类下的片段进行管理。当对某个分类进 行了修改时,分类列表框会被锁定,直到你保存它、或放弃保存才会被释放。这一点在使用时请注意。
增加可由用户自已编写的插件管理功能。具体的插件发布见《技术手册》。此功能只有启动后设置的插件才起作用。
用于选择程序界面所用的语言。现在支持中文和英文两种。并且在中文平台第一次运行时,如果判断平台环境为中文的话,会 自动使用中文环境。如果用户想要增加自已的语言支持,可以在tools目录下找到相应的文档和工具,进行相应的语言翻译即可。 步骤如下:
- 复制newedit.pot为想要翻译语言的目标文件,文件名应为:newedit_地区代码.po。如中国为cn,台湾为tw。
- 将newedit_地区代码.po中msgid不为空的内容进行翻译,译文写在msgstr处。格式要与msgid一致。如果有%d之类的 格式替换符请不要改变它们的顺序。
- 参与build.bat文件,执行相应的命令将po文件编译为mo文件,并拷贝到lang目录下。
- 修改lang目录下的language.ini文件。增加新的语言说明,格式为:地区代码 说明。如:fr French
- 启动NewEdit,然后在Option->Language下,选中新加的语言。再重启NewEdit即可。
此菜单只当你打开Python文件时才会出现。
使用快捷键可以加快编辑的速度。菜单对应的快捷键列在菜单项的右边。还有一些与编辑有关的快捷键没有与菜单关联。
凡在功能解释前带有(M)的表示有相应的菜单功能。
快捷键名称 | 对应功能 |
---|---|
F1 | (M)NewEdit Help Document(帮助文档) |
F2 | (M)Directory Browser(目录浏览)(3.1版新增) |
F3 | (M)Find Next(查找下一个) |
F4 | (M)Direct Find(直接查找) |
F5 | (M)运行Python程序(3.2版新增) |
F6 | 将当前串作为模块名打开模块所对应的源文件(2.9版新增) |
F8 | (M)Next Marker(下一处标签)(3.2修改) |
F9 | (M)Toggle Marker(标签切换) |
F10 | (M)Duplicate Extend Mode(复制扩展模式) |
Ctrl+Shift+F9 | (M)IDM_SEARCH_BOOKMARK_CLEARALL |
Shift+F8 | (M)Previous Marker(上一处标签)(3.2修改) |
Ctrl+J | (M)Duplicate Current Line(复制当前行) |
Ctrl+M | (M)Duplicate Previous Char(复制上一个字符) |
Ctrl+Shift+M | (M)Duplicate Next Char(复制下一个字符) |
Ctrl+P | (M)Duplicate Previous Word(复制上一个单词) |
Ctrl+Shift+P | (M)Duplicate Next Word(复制下一个单词) |
Ctrl+L | (M)Duplicate Previous Line(复制前一个句子) |
Ctrl+Shift+L | (M)Duplicate Previous Line(复制后一个句子) |
Ctrl+N | (M)New(新建) |
Ctrl+O | (M)Open(打开文档) |
Ctrl+S | (M)Save(保存) |
Ctrl+F4 | (M)Close(关闭)(2.9版新增) |
Ctrl+Z | (M)Undo(撤销) |
Ctrl+Y | (M)Redo(重做) |
Ctrl+X | (M)Cut(剪切) |
Ctrl+C | (M)Copy(拷贝) |
Ctrl+V | (M)Paste(粘贴) |
Ctrl+W | (M)Select Word(选词) |
Ctrl+Shift+W | (M)Select Word Extend(扩展选词) |
Ctrl+E | (M)Match Select (Left First)(匹配选择--左向优先) |
Ctrl+Shift+E | (M)Match Select (Right First)(匹配选择--右向优先) |
Ctrl+Alt+E | (M)Enlarge Selection(扩大选择) |
Ctrl+R | (M)Select Line(选中当前行) |
Ctrl+A | (M)Select All(全选) |
Ctrl+I或Tab | (M)Increase Indent(增加缩近) |
Ctrl+Shift+I或Shift+Tab | (M)Decrease Indent(减少缩近) |
Ctrl+Q | (M)Text Quote(文本括起) |
Ctrl+Shift+Q | (M)Text Unquote(去掉文本括起串) |
Ctrl+U | (M)Upper Case(变为大写) |
Ctrl+Shift+U | (M)Lower Case(变为小写) |
Ctrl+F | (M)Find...(查找) |
Shift+F3 | (M)Find Previous(查找上一个) |
Ctrl+H | (M)Replace...(替换) |
Ctrl+G | (M)Go to Line...(行号跳转) |
Ctrl+B | (M)Go to Last Modify(跳到最后修改) |
Ctrl+D | 删除当前行 |
Ctrl+Shift+D | 删除当前行,并拷贝到粘贴板中 |
Ctrl+/ | 将选中文本前增加注释(2.9版新增) |
Ctrl+\ | 将选中文本前的注释去除(2.9版新增) |
Alt+X | (M)Exit(退出) |
Alt+E | 打开出错文件-error.txt(3.1版新增需安装showerror插件) |
Alt+D | 打开调试文件-debug.txt(3.1版新需安装showerror插件) |
Alt+L | 打开/关闭左边栏窗口(3.1版新增) |
Alt+B | 打开/关闭底边栏窗口(3.1版新增) |
Alt+C | 清除Shell窗口的内容 |
NewEdit是完全支持Unicode的,当然前提是你要安装wxPython的Unicode版本。
支持Unicode,那么就面临本地编码与Unicode的转换问题。在NewEdit中,这种转换发生在打开文件和保存文件的时候。 NewEdit在进行码制转换时所用到的编码有三个来源:指定的编码、文档编码和缺省编码。NewEdit在处理这三种编码是按 顺序进行的,即如果指定编码为空则使用用文档编码,如果文档编码为空则使用缺省编码。那么这三种编码都是怎么来的? 又会怎么处理的 ?
如果用户想在打开文件或保存文件时单独指定某种编码,那么他需要在选项菜单中,设置“当打开或保存文件时显示编码 选择对话框”选项为选中。这样,当打开或另存文件时,就会弹出编码选择对话框,用户选则好了编码后,NewEdit会使 用这种编码对文件进行编码和解码。如果处理失败,则打开文件或保存文件失败。如果成功,则设置文档编码为此编码。
当用户使用了指定编码时,并且成功的打开或保存了文件,则此文档的编码为指定的编码。如果用户没有使用指定编码, 则如果用户设置了选项菜单中的“自动进行utf-8编码检测”选项为选中时,则在打开某个文件时,NewEdit会自动判断 文件内容是否为utf-8编码,如果是则文档的编码为utf-8,如果不是则文档编码为缺省编码。
缺省编码支持是指当启动NewEdit时,NewEdit会根据操作系统的环境得到系统所使用的编码作为缺省编码。但个别情况 下,NewEdit所得到的系统编码可能有问题,这时,你可以在启动时加入命令行选项 -e encoding 为正确的编码即可。
要注意的是如果设定了要使用指定编码,但也只可以在弹出打开文件对话框,和打开保存文件对话框的时候可以使用,其它 情况下或者自动测试utf-8编码,或者使用缺省编码。
脚本功能允许用户编写自已的处理代码,可以对 NewEdit 中的对象进行处理。它的目的就是快速的编写,并且可以作为菜 单放在 NewEdit 中。它是一个独立的 Python 源程序。编写一个脚本有以下几步:
关于第二步操作此处不作说明。下面对一些可用的脚本进行一些举例。
1 #--------------------------------------------------- 2 # NewEdit script 3 # Author :limodou(chatme@263.net) 4 # Date :2004/07/11 5 # Version :1.0 6 # Description: 7 # Add linenum to each line of selected text 8 # 9 #--------------------------------------------------- 10 11 def run(win): 12 win.document.SetText("Hello, NewEdit") 13 14 run(win)
定义了一个run函数,win参数是可用的一个对象,它就是NewEdit最外层的窗口,它有菜单,工具条,状态条,还有你看 到的文档。当前正在编辑的文档为win.document。通过win对象,你可以访问到NewEdit的任何一个对象。如: win.messagewindow就是消息窗口,你可以用它来输出一些信息。关于整个NewEdit的架框在技术文档中将会有详细的描 述,这里不再细说。
12行调用了当前文档窗口的SetText方法,用来设置文档的内容为"Hello, NewEdit"。要记住,它会清除以前的所有东 西。因此它只是一个示例。你可以将这代码改为:win.messagewindow.SetText("Hello, NewEdit"),看一看消息窗口 中是不是有东西了。还可以改为:win.document.AddText("Hello, NewEdit"),看一看是不是在文档光标处理增加了 文本,而原来的内容并未清除。
对此函数进行调用。函数写法看上去清晰一些,但你完全可以不使用它,如可以改为:
win.document.SetText("Hello, NewEdit")
再运行一下试试效果。
1 #--------------------------------------------------- 2 # NewEdit script 3 # Author :limodou 4 # Date :2004/07/11 5 # Version :1.0 6 # Description: 7 # Add linenum to each line of selected text 8 # 9 #--------------------------------------------------- 10 11 def run(win): 12 linenums = win.document.getSelectionLines() 13 for i, linenum in enumerate(linenums): 14 text = str(i+1).ljust(8) + win.document.getLineText(linenum) 15 win.document.replaceLineText(linenum, text) 16 17 run(win)
此脚本用于给文档中选定的文本增加行号,从1开始。本例就是使用此功能实现的。
1 #--------------------------------------------------- 2 # NewEdit script 3 # Author :limodou 4 # Date :2004/07/08 5 # Version :1.0 6 # Description: 7 # Convert reStructuredText to Html 8 # 9 #--------------------------------------------------- 10 def run(win): 11 from docutils.core import publish_file 12 import os.path 13 import cStringIO 14 15 filename = win.document.filename 16 fi=cStringIO.StringIO(win.document.GetText().encode(win.document.locale)) 17 f, ext = os.path.splitext(filename) 18 htmlfile = f+'.htm' 19 fo=open(htmlfile, "w") 20 publish_file(source=fi, destination=fo, writer_name='html') 21 fi.close() 22 fo.close() 23 win.messagewindow.SetText('Success!') 24 win.panel.bottom.notebook.showWindow(1) 25 # win.editctrl.new(htmlfile) 26 27 run(win)
此脚本调用docutil模块用来将当前的reStructureText转换为HTML。第25行可以将转换后的文本显示出来。不过此处注释掉了。
详细处理不再描述,只讲述与NewEdit有关的内容
这个脚本有一点要注意,对于新建的文档,如果没有保存,它的filename属性为'',因此直接对它进行转换时在文件名处理 上可能有问题。此脚本不需要你先保存再转换,因此在使用时要小心一些。
现在只提供一个Hack的方法。用户可以对主窗体和编辑窗口的菜单自定义快捷键。即在config.ini中增加main_hotkey节或 editor_hotkey节,然后增加:菜单消息=快捷键,如:
[main_hotkey] IDM_FILE_SAVE_AS=F12
上面就会为[另存为]菜单增加一个F12的快捷键。如果main_hotkey节不存在,只要自已创建即可。
有关菜单消息号的查询可以在运行NewEdit后,在debug.txt文件中,关于"[ INFO] -- [makemenu] makeaccelerator..."的后 面找到。
关于main_hotkey与editor_hotkey的区别就是,在主窗体中定义的热键是全局生效的,而在编辑器中定义的热键,只有当输入焦 点在编辑器中才会生效。