精华内容
下载资源
问答
  • 我们写好代码的文件一般都有固定后缀,比如.lua, sublime会自动高亮...这时候仍然想让编辑器以固定编程语言高亮显示,怎么办呐? 很简单,直接点击 view 下的syntax,选择自己要的语言就可以了,中文版是 查看->语法

    我们写好代码的文件一般都有固定后缀,比如.lua, sublime会自动高亮文本;

    但有时候我们写代码不得不直接在 .txt 里写, sublime 不会自动高亮文本。这时候仍然想让编辑器以固定编程语言高亮显示,怎么办呐?

    很简单,直接点击 view 下的syntax,选择自己要的语言就可以了,中文版是 查看->语法


    展开全文
  • 最佳文本编辑器

    万次阅读 2007-03-02 11:46:00
    原文:donationcoder.com  译者:xbeta@善用佳软 说明:仅做翻译...不代表同意文中观点(xbeta认为最好的编辑器为VIM)。 最佳文本编辑器 当前,好用的文本编辑器比比皆是——无论商业软件还是免费软件。如果你用得
    原文:donationcoder.com  译者:xbeta@善用佳软  说明:仅做翻译,忠实原文。不代表同意文中观点(xbeta认为最好的编辑器为VIM)。

    最佳文本编辑器

    当前,好用的文本编辑器比比皆是——无论商业软件还是免费软件。如果你用得不多,那么用哪个也就无关紧要,只要不是notepad,呵呵。但是,如果你经常用文本编辑器工作,追求最佳就是必要的。就此而言,冠军当属UltraEdit——我们评出的最佳文本编辑器奖(Best Text Editor Award)项获得者。

    UltraEdit 为共享软件,注册费为40美元,与同类的竞争者相比,真是价格不菲。但考虑到它的功能广度和深度,倒也不算是漫天要价、全不合理。完整功能的30天试用版可在此下载 (有非英文版本)。

    历经最近几次修改,我们很高兴授与 PSPad最佳免费文本编辑器奖。PSPad 的强大和多能真是令人赞叹不已,并且有一个活跃的国际用户论坛。劝你在决定购买文本编辑器之前,一定要试一下免费的PSPad。要记着下载最新的beta版,它对自动换行的支持已经非常好了。

    文本编辑器 vs. 字处理软件

    早期的电脑上,字处理软件与文本编辑器并无明显界线。一些字处理软件,比如wordstarxywrite主要还是处理文本,只是带有一些简单的格式化功能。参见[此处此处]。 后来,字处理软件日益进步,发展出了灵活的图形化布局和格式工具。现代的字处理软件甚至可以说达到了印刷的格式要求。

    文本编辑器这一术语则主要指小的工具软件,它们几乎屏弃了全部与打印布局和文本格式相关的功能。没有加粗、下划线、斜体,没有颜色,不能为不同标题分别设置字体,没有分栏布局,也不能直接内置图片。

    文本编辑器好似一把锋利的匕首;而字处理软件就象巨大笨重机枪,并且会不时崩溃,使用专属的文件格式,并且要花你几千元来购买。

    你大概会用文本编辑器来写笔记或不太长的文档,来看readme文件,或编辑源文件html源码,或是处理一般性的纯文本文件(仅管本评论主要针对一般性文本处理功能,但不可否认的是,今天谈到的多个编辑器都对html文件及多种程序的源代码有独到的功能)。

    很多人会经常用到文本编辑器,但如果你并不编辑文本文件,那么就算找到最顶尖的编辑器,也不会为你在计算机前的工作带来效率的飞跃。至少不会象我们此前几篇测评中介绍的软件那样,让你以一种全新的高效方式来处理事情(如WebsiteWatcherBeyond Compare)。再说一次,要是你很少处理文本文件,那么就别费力优中选优了。任何说得过去的免费软件都能满足你的要求,或许还绰绰有余。不过,拜托你安装一个不是notepad的软件。

    优秀文本编辑器的标准

    优秀的文本编辑器应该是小巧简洁的,并且可极速地启动和关闭

    它用不着华丽的启动画面音效,无视于艳丽的按钮和动画效果。 善用文本编辑器者,会频繁用之。不仅用于编辑文本,而更多地是打开一个什么文件来看一下。优秀的文本编辑器应该是高度可靠的,占用极少的桌面空间,并且决不会妨碍用户的其他操作。

    95%的时间里,你用的功能是所有文本编辑器都具备的:简单编辑、复制和粘贴、拼写检查等。而专业编辑器区分于业余编辑器的正是其余的5%功能(也包括图形界面),比如列模式,十六进制模式格式化文本选项。本篇测评正是基于这5%的高级功能而展开。

    尽管DonationCoder.com测评(暂时)没有完整详尽的功能列表,以据此衡量每一软件。但我们也推荐如下步骤来评价潜在的编辑器:考察其功能,列出“令人喜爱的功能”;分析其解决办法,以应对“尚待改进之方面”。这些功能依据我们所感受的重要性而列出,如果异于读者的感受那也是难免的。不妨细读替代软件一节,或许你能找到更适用你的软件,或发现一个够用的开源软件,它恰好需要大家的支持。

    初始感觉的重要性

    来自DonationCoder.com的测评一向高度重视用户界面的设计。当一类软件渐趋成熟,越来越多的软件会在功能方面不相上下。此时,用户界面设计方面的一个小差别可能成为你选择哪种软件的重要因素。用户界面不仅影响你的工作效率,还会影响你使用软件的乐趣。这也是很重要的。

    但实际情况是,在界面设计方面,不同人有不同偏好;并且,如果你长期使用一种软件,也很少有不能适应它的界面风格的情况。在文本编辑器应该如何设计上,我们会有偏见,而你们未必认同。弄清楚此处测评的大多数软件拥有何种所需功能后,你应该看一下本文列出的各种备选软件,说不定会有意外之喜,发现其中一种更合乎你的口味和需求,胜于我们评出的最佳产品UltraEdit

    从我们的观点来看,UltraEdit体现了我们对常用软件(如文本编辑器)一贯追求的极简原则。 或许当前的编程潮流是向真彩大图标的xp/mac风格界面靠拢,但在我们看来,这只会导致注意力分散,并且占用宝贵的屏幕空间。 UltraEdit则提供了简约的界面,可定制的淡色低调的按钮,而精妙地展示了其功能。可以很容易地配置UltraEdit,只保留菜单栏、个别按钮,然后就是编辑区域————这样就得到了一个操作界面最小,编辑界面最大的效果。如果你是一个爱好华彩炫钮用户,那么很显然,UltraEdit对你而言不是一个好选择————至少这一版本不是。无须费话,这样的软件不会支持换肤————谢天谢地。(译者xbeta注:这一段话深得我心,不过我用GVIM,译此文时如此图所示:

    [注:UltraEdit v11.10引入了新的图标方案,其中增加了一些色彩,但保留了旧图标中令人喜爱的成份。新的图标仍然柔和,甚至与原图标相比,与界面更加融合,含义明确。这一更新很成功。对照如下2图,可以看到新旧图标的效果。]

    界面截屏

    在UltraEdit官方网站,你可以看到多幅界面截屏。以下仅举数例。

    配置相当精简的UltraEdit界面:

    刚发布的v11.10中采用了全新设计的图标;
    色彩性增强了,但仍然淡雅怡人,不会分散注意力:

     

    令人喜爱的功能

    以下各项功能,是我们认为UltraEdit做得相当好的地方。基本按照重要性从高到低的顺序进行排列。在评价其他编辑器时,将分析它们对如下功能的实现程度。

    • 无限撤消 - UltraEdit在这一日益普及的功能上做得很好,可以无限次撤消,包括撤消保存点,这一点非常重要。如果你的编辑器不支持此功能,就抛弃它,换一个新的吧。
    • 速度 - 回想1980年,我在等待c语言编译器完成工作时,会趁机去吃饭。事实上,并没有说得过去的理由,可以解释一个程序在加载时过于缓慢。要是你在Adobe公司上班,你可能不会这样想。 (Adobe Photoshop可能是这个星球上启动最慢的非java程序)。文本编辑器需要快速启动,实际上多数编辑器也做到了这点。UltraEdit自然也不例外。它的启动时间比notepad要慢一点,但并无大碍。

      一件很有意思的故事:前一版本(v10)的UltraEdit曾加入一种名为Armadillo的版权保护机制。 尽管Armadillo是最强悍的一种仅用软件来进行版权保护的机制,它同时也是运行最慢和最不稳定的。 加入这一机制后,UltraEdit的用户数一度反弹降低。于是,在最新发布的11版中,它被彻底废弃了。 这对软件开发者或许是一个极好的教训。 版权保护措施是一个“好方法”,它可以有效地惹恼你忠实的注册用户, 而从不打算购买软件的盗版用户则几乎不受影响。
    • 列编辑模式 - UltraEdit的此项功能深受我们喜爱,但也是很多编辑器不具备的功能。 人们不会经常用到列编辑功能。可一旦用到,它就能大量节约你的时间和精力。 通常在文本编辑器中,你通过鼠标拖过多个连续字符进行选中。 列模式允许你选中和操作(复制、粘贴、删除、移动、插入)一矩形的文本块。 如下场景中,此项功能的价值不言而喻: 你在处理一个文本文件,其中有嵌入的表格信息; 你需要删除引导列或末尾列的文字——这类应用并不罕见。 UltraEdit的列模式用起来很舒服,与其他特性一样易用。多数编辑器并不具备列编辑模式。 屏幕截屏参见此处
    • 高超的标签式风格、整洁的界面 - 要是你的编辑器不支持标签式打开多个文件,马上抛充它吧。 UltraEdit允许你同时打开多个文档进行编辑,除了常规的水平/竖直排列外,还可以点击标签进行窗口切换。

      标签式风格的细微之处让它用起来得心应手。 你可以双击关闭标签,经过修改但尚未保存的标签会显示出*标记,这样你就能方便地看到哪个文件有待保存。 你可以在标签上右击鼠标,弹出菜单中包括了标签的常见操作。 你还可以拖动标签来重新排序,把标签栏放置于屏幕的顶端或底部。

      你还可以设定窗口区来显示当前目录、项目、文件系统的文件列表,很多人发现这一功能很实用。 显示模板和宏的窗口也可设定,并且打开和关闭它们非常容易。 界面截屏请 见此处
    • 文本或多文件中查找/替换 - 我们非常喜爱UltraEdit中的查找/替换功能。 你会发现它为简单或正则搜索提供了易用的选项。 很多时候正则表达式的功能十分强大, 但是提供一些简单的选择框来决定是否大小写敏感、完整词语搜索也很实用, 并且这些选项可以用于普通搜索和正则搜索。

      UltraEdit的搜索/替换功能在支持处理批量文件 (打开的文件,目录下的文件,预定义的项目)方面异常强大。 UltraEdit在一个位于窗口底部的独立的区域显示搜索结果, 这样用户就能方便地预览搜索结果, 并且双击某一条结果,就能定位到相应的文件和行数。 这种根据需要而将结果展示在独立小窗口的风格,反映了现代IDE平台的做法, 是很体贴实用的特点。截屏见此处
    • 折行,制表符,缩进,格式化,转换 - 有人喜欢用空格来缩进,有人则青睐tab键。 UltraEdit对每种做法都完美支持,并且为它们相互转换提供了很好的功能,还可以方便地添加或去除缩进。 UltraEdit有一项功能十分好用,那就是选中一块文字,然后按tab键,它们就整体缩进。

      UltraEdit还对各式各样的折行处理提供了支持。 毫无疑问,你可以切换文本显示状态是折行(这时文本在窗口边界处折行), 还是不折行(这样文本就一直向右延展下去直到遇到一个回车符)。任何说得过去的文本编辑器都能做到这点。 UltraEdit的高明之处在于提供了额外的功能,可以在文件中添加或去除回车, 以便于语句在显示效果中的实际对齐。

      你还将发现一些菜单,提供了各式各样的功能,诸如对文本改变大小写(首字母大写,全大写,全小写),去除多余空格、重复文本行,以及一些实用的排序功能。或许,这些特性并非UltraEdit所独有,但它处理地井然有条,方便易用。
    • 文件支持 - UltraEdit支持巨型文件,可以快捷地加载和操纵它们,并且能自动检测并相应处理unix,dos,unicode和utf文件。
    • 十六进制模式(Hex Mode) - 世界上有很多优秀的专门的十六进制编辑器,它们被设计用于查看和修改非文本文件。十六进制编辑器与文件编辑器是差异很大的,所以你很少会用十六进制编辑器处理文本文件,也不会想用文本编辑器打开可执行文件。没有一个编辑器都同样完美的兼顾文本和十六进制编辑,然而UltraEdit在文本编辑器中处理十六进制内容,几近于完美。令人欣赏的是在UltraEdit中可以便捷的切换到十六进制显示状态。最简单讲,这意味着你能以ascii码形式来展现一个文件的内容。有些情况下,会为你带来不少方便。比如你要了解一些无法显示/打印的字符的ASCII码;再如你本以为是文本文件,但是打开一看,却包含一些希奇古怪的字符。
    • 检测文件变化 - 此项功能在文本编辑器中也越来越普及了。当编辑器打开的一个文件被其他程序所修改时,编辑器会弹出提示,询问用户是重新加载文件到缓冲区,还是保持不变。
    • 用户工具 - 尽管管理外部用户工具的界面看起来有些笨拙(见下一节),UltraEdit在接驳第三方软件,并接收它们的输出方面,还是相当强大的。输出内容会展示在搜索/替换所用的同一个嵌入面板(自动创建)中,也和搜索输出结果一样,也提供了点击加载、跳转到文件的功能。这是一种与第三方工具合作的良好方式,并且有很多选项来设定如何处理输出结果,比如替换掉选中文本等。就与多种外部工具协作来完成大量的技术处理来看,UltraEdit当之无愧是最灵活的编辑器。截屏见此处
    • 宏/脚本- 在某种意义来看,相当多编辑器支持宏功能。我们并没有过于陶醉于UltraEdit的宏脚本语言及其界面(见下),但这并不妨碍这一事实:对于多数普通性的一般任务来看,UltraEdit的宏功能是相当不错的,并且可能比其他编辑器都好。你一边操作,就可以同时把执行的动作录制下来,然后再做修正改进。也可以手工编写脚本——这并不太难,因为它有一个简明的帮助对话框,这深受一般用户(非程序员)的热爱。
    • 项目 - UltraEdit中可以很容易地定义项目,也就是你可以一并处理的多个文件的组合。当你要一次性打开一组文件,或对它们进行查找替换时,这一功能尤为实用。
    • 模板 - 你可以定义模板,带有待输入字段的文本块,在你编辑文件时,可以很方便地插入它们。
    • 括号配对和语法加亮 - 大多数高级编辑器在不同程度上支持编程语言源码和html文件,能识别出你所编辑的文件类型,运用相对应的语法加亮,也就是说,保留关键字将以不同颜色显示,以区分字符串、数字常量等。与此类大多数编辑器一样,UltraEdit支持外部的语法加亮定义文件。你也能找到用户定义好的各种语言的加亮文件。UltraEdit在括号匹配方面也十分出色,这在你编程查找匹配错误时帮助不少。截屏见此处
    • 代码折叠 - UltraEdit V11带来的新功能就是代码折叠。它的意思是,程序代码或html文件中的一段内容,按照约定的开始标记和结束标记,可以折叠为一行。行首有一个小的 [+] 记号,以便于你展开或折叠它们。菜单栏中有命令可以展开或折叠全部文本块。这一特性可能要用一段时间才能习惯,但用熟之后,在查看大型文件时会效率提高。你可以按层次结构去快速找到内容,在必要时又可以展开看到细节。截屏见此处
    • 自定义热键和菜单 - 有些用户在应用软件时,尤其在使用自己喜欢的软件时,非常热衷于个性化菜单、按钮、快捷键。我们的意见是,一般来说,菜单不要进行个性化。也就是说,别象Microsoft那样。Microsoft的隐藏菜单主意是一个很好的令人不便的反面例子,绝不应再出现在其他程序设计中。在我们建议菜单不要做个性变更的同时,我们对按钮持有一种不同观点。对按钮进行个性化定义,将最常用的功能置于指尖之下,而让很少用到的按钮隐藏起来,实为上策。再总结一下,菜单应该完整而规则,按钮应个性化以体现多用优先的原则。我自己并太用热键,但键盘偏爱者看到软件能完全自定义热键还是欢欣鼓舞的。
    • 拼写检查选项 - 你会在UltraEdit中发现与拼写检查相关的多个选项,来对拼写检查进行个性化配置。比如,列出用户添加的全部单词,在不同词典间切换等。
    • 显示不可见字符 - 有一段时期,一些如XyWriteWordPerfect这样的字处理软件创造了一项名为显示不可见字符的功能,来把一些不可见的字符显示出来,并且允许你编辑它们。之所以用到这些字符,是为了使版式更为清晰易读。UltraEdit有一个选项是“显示空格/制表符”,选中之后就可以把空格、制表符、回车给显示出来。当然了,并不是只有UltraEdit才能做到这点。
    • 细致入微方成大家- 有为数众多的细致入微之处,它们汇集一起,让UltraEdit成了我们所用过的最顺手的编辑器。举一个例子来说,在一行的左边空白处点击一下鼠标,就能选中这一行,用起来非常方便。此外,还有一些不是那么经常用到的功能,比如远程编辑FTP服务器上的文件,这一功能我们也曾经在其他编辑器中见到过。直率地讲,我宁愿去除这些功能,而代之以保存文件后手工上传。当然了,如果你经常性进行此类操作,这一功能就可以替你节省不少时间。

    尚待改进之方面

    UltraEdit也不是完美无瑕,以下几点就是我们不太欣赏的:

    • 简陋的宏/脚本语言 - 如我们前面所说,当今的扩展编程的潮流是,对已经成熟的脚本语言(如Python,Perl,Javascript,VBScript,Lua等)进行全面支持。但UltraEdit用得是自己设计的一套脚本语言,它不免过于简陋,在处理较复杂工作时会力所不逮。要是你真热衷于对编辑器写一些脚本,你难免沮丧地发现,UltraEdit的内置语言让你困难重重。当然了,我们见到的其他文本编辑器还不如UltraEdit呢。

      客观地下一个结论是这样的:UltraEdit在脚本语言上的处理方式,让一个没有太多编程经验的人,就一项简单任务,想临时写一段脚本变得十分容易。他在一堆运算符和函数中点点选选,大概就能成了。由此看来,对一个随意的用户,他只是想用一个宏来键入一些文本,或执行系列的键盘操作,UltraEdit的脚本倒算是挺好用的。截屏见此处
    • 令人困惑的的设置选项 - 有一个编写复杂程序(比如UltraEdit)的悖论,那就是设置选项会越来越多,设置界面不得不越来越复杂,就算是很有经验的用户也有迷失方向的危险。(译者xbeta注:所以更强大的VIM和Emacs都用参数文件而非gui来处理此问题。)UltraEdit的设置对话框尤其容易让人发晕。设置的主体框架是一个树状结构,同时带有滚动条。从程序开发者的角度看,这一方式易于理解,因为这样便于升级和维护。但从用户角度,这样就只能算是下策了。因为它不容易区分此设置与彼设置,也不利于集中维护。我们期望能见到一个组织的更好的设置界面。
    • 未能充分结合新工具(AstyleTidy - 在UltraEdit v11开始,为两个优秀的开源新工具软件加入了集成的界面(包括按钮和菜单)AstyleTidy。Astyle是一款程序源码的格式化工具,可以为c/c++/c#/java代码处理缩进和重新格式化。而Tidy则是一款优秀的html文件格式化工具。UltraEdit结合这些工具是非常应该的,然而,存在的一些小毛病大问题的不足,则让我们很遗憾的面对集成应用的现状。我们对这些问题在不久的将来得以解决,报以高度的关注。所谓的小毛病是,缺少一些重要的设置选项。比如,UltraEdit的设置界面中仅包含了Astyle多个选项中的少数几个,而用户也很难自己添加其他选项——这看起来很奇怪,因为加入它们并没什么麻烦。说到大问题,是指这些工具的操作,与其他功能截然不同,无法被撤消!这一点没有任何借口可以解释,我们只能假设这是一个疏忽,并且不久就得以弭补。
    • 永无止境的水平滚动条 - 这一用户界面的bug存在于UltraEdit中为时已久,开发者对此也一清二楚。看起来要解决这个bug可真不容易。说明白一点就是,你拖动水平滚动条永远不能到达右方的终点,这让你会误以为在视野之外的右边,还有什么内容。或许在我们指出这点之前你并没有意识到这一点——那只好说声对不起了。

    其他编辑器

    为了这篇评测,我们试用研究了众多的文本编辑器,我们网站上,本文左侧提供了相关软件的链接。下面我们就简要概括所试过的功能全面的编辑器的要点,并提供有代表性的截屏图片。这些软件都在一台配置为AMD64加1GB内存的机器上,经受过我们的基准测试,以确认它们的启动时间和加载一个40mb文本文件所用的时间。结果是,除了我们在下文中标明的之外,绝大多数软件的启动和加载文件所用时间都不超过1秒,可以说是具备了内存、磁盘管理的优异性能。因此,我们的结论是,如果你的计算机速度很快,就无须关注它们在速度上的差异

    Zeus $35 (对一个认真的程序员而言,此价格物有所值)
    启动/加载时间:1.5秒/3秒

    列模式:有(按住Ctrl键;不能列模式插入?)。
    Hex模式:可把十六进制文件内容转存为文本文件格式(聊胜于无)。
    搜索:可正则表达式,友好方式,其他方式(好),可多文件中批量查找/替换
    撤消:可,支持保存点。
    宏和脚本:不能录制操作,但是,可以通过Lua, Java Script, Python, VB Script 和短小的 C 脚本语言来实现此功能(这才是我们主张的当今软件所应采取的王道)。
    用户工具:可(优秀)
    代码折叠:可。

    Zeus明确定为于程序员所用的编辑器,具备一些对编程很有用的额外功能。如使用Doxygen的外部工具(类浏览器),代码补全,对模板的高度支持,源代码控制,快速打开相关头文件等。可以灵活的自定义编译器,仅管这方面存在一个缺陷,即不能指定多个编译器并轻松切换(就象Relo或dev-c++ IDE那样)

    热键完全可自定义,有内置映射以模拟常见的编辑器和IDE;优秀的语法加亮。FTP远程编辑。项目文件管理。更多截屏见此处

    折行显示的功能基本不存在,或功能太差至少不适合普通的文本编辑。这一点导致它不适合作为编程之外的普通文本编辑软件使用。

    Boxer $60 (哇!)
    启动/加载时间: 1.5秒/3秒

    列模式:有(按住Ctrl)。
    十六进制模式:可以显示,只读模式。
    搜索:正则方式、易用方式、其他方式(好)。良好的多文件搜索(尽管不支持搜索打开的全部文件和项目文件)
    撤消:可,多个保存点。
    宏和脚本:不能录制操作,但内置脚本语言相当不错。
    用户工具:可,好。
    代码折叠:不支持。

    热键可高度自定义;工具栏不能(?)自定义;优秀的语法加亮;对编程专用的查找/替换支持良好,还有其他辅助功能。右键菜单可快捷检查拼写。FTP远程编辑。支持项目文件。

    折行功能看起来很差。固定宽度折行不能在窗口边界处自动折行;内容改变后要重新格式化;这些问题对于一般性的文字编辑来说是不可接受的。

    NoteTab Pro(有轻量级的免费版本),$20
    启动/加载时间: 1.5秒/1秒

    列模式:无。
    十六进制模式:无。
    搜索:可正则。多文件搜索很弱。
    撤消:不能穿越保存点。
    宏和脚本:采用自定义的宏/脚本,但也可以运行perl/gawk脚本来处理文本块(很好)。
    用户工具:无。
    代码折叠:无。

    NoteTab Pro一个最大优点就是应用了“剪贴库”技术。在下面的界面截屏中可以看到,左边有一个侧边栏,底部还有tab页签。这些剪贴库是一系列的交互式的宏脚本或键盘操作特殊符号表。这样做会减少在一个新的语言环境中的工作难度,或实现自动的模板填充。有很多第三方剪贴库免费供下载。

    Notepad++(开源)
    启动/加载时间:2秒/1.5秒

    列模式:无。
    十六进制模式:无。
    搜索:可正则,多文件的查找/替换很好。
    撤消:可,能穿越保存点。
    宏和脚本:仅能录制按键系列。
    用户工具:不适用。
    代码折叠:能(!)

    无帮助文件。更多截屏见此处

    TextPad $16
    启动/加载时间:1秒/1秒

    列模式:可。
    十六进制模式:只读显示。
    搜索:可正则;对多文件处理支持很差。
    撤消:可,可穿越保存点。
    宏和脚本:仅能录制按键系列。
    用户工具:一定程度上支持。
    代码折叠:不能。

    支持简单的剪贴库,支持“文档类”以便于为某类文件设定字符集和某些选项。

    EditPlus $30
    启动/加载时间:1.5秒/1.5秒

    列模式:可(按住alt键拖动鼠标)。
    十六进制模式:无。
    搜索:可正则;多文件支持还行。
    撤消:可,能穿越保存点。
    宏和脚本:播放宏。
    用户工具:可,支持还行。
    代码折叠:无。

    支持简单的剪贴库。无程FTP编辑。自动补全。优秀的多种语法加亮文件。项目文件管理。简单的帮助文件。很好的默认新建文档模板。相当出色的内置浏览器查看。多标签的窗口布局可以做得更好。

    EditPad Pro(有轻量级的免费版本),$40
    启动/加载时间:2.6秒/1秒

    列模式:有。
    十六进制模式:有。
    搜索:可正则,多文件支持较弱。
    撤消:不能穿越保存点。
    宏和脚本:无。
    用户工具:有,支持较好。
    代码折叠:无。

    一定程度上支持项目文件。用户界面有些特别。

    SciTe(开源,跨平台)
    启动/加载时间:1秒/1.5秒

    列模式:可(按住alt)。
    十六进制模式:无。
    搜索:正则表达式有点怪,多文件支持良好。
    撤消:可,不受保存点限制。
    脚本和宏:n/a
    用户工具:n/a
    代码折叠:可。

    主要关注编程。在线帮助文件很简短。

    Vim(开源、跨平台)
    [译者xbeta注:我是VIM的坚定用户,本文的翻译过程就是用vim打开原html直接编辑的。译本文是因为有价值,并不代表认同UE最佳的结论。VIM的强大不是UE所能比的,VIM的功能也不是一两天就能发现的。就结论而言,xbeta认为应修正为“除VIM和Emacs外,UltraEdit最好”,参见VIM:普通人的编辑利器]。

    启动/加载时间:1秒/1.5秒

    列模式:难于判断。
    十六进制模式:难于判断。
    搜索:很弱或难于判断。
    撤消:难于判断。
    宏和脚本:独有的VIM脚本。
    用户工具:难于判断。
    代码折叠:无,也可能有,或者太难了无法判断。

    有些人信誓旦旦地力挺这一硬梆梆的基于键盘(unix遗风)的编辑器,公允而言,vim所基于的引擎还是非常强大的。但从我们的角度,现代的图形界面设计确实大大提高了软件的可用性和工作效率。而VIM这样的程序确属异类,它们或许也有一个图形化的界面,有菜单,但半数功能却没有从中体现出来(xbeta忍不住再补充一句:vim功能如比多而灵活,所以菜单按钮永远是不够的——我的vim没有任何菜单和按钮),并且,它的帮助系统看起来仿佛是来自1965年。总之,看起来不是那么好。

    ConTEXT(免费软件)
    启动/加载时间:1.5秒/1秒

    列模式:无。
    十六进制模式:无。
    搜索:可正则,多文件支持良好。
    撤消:受保存点限制。
    宏和脚本:简单录制。
    用户工具:n/a.
    代码折叠:无。

    一定程度上支持项目文档。

    EmEditor, $40
    启动/加载时间:1.5秒/2.5秒

    列模式:无。
    十六进制模式:无。
    搜索:很好,可正则,可多文件,快捷方便地访问多个文件。
    撤消:不受保存点的限制。
    宏和脚本:录/放,Javascript/VBScript(!),看起来很强大,但缺乏相应文档。
    用户工具:少许(不能捕获输出结果)
    代码折叠:无。

    更多截屏见此处

    EditPro, $30
    启动/加载时间:2秒/1秒

    列模式:无。
    十六进制模式:无。
    搜索:优秀,甚至和UltraEdit可媲美。
    撤消:不受保存点限制。
    宏和脚本:n/a.
    用户工具:很好,几乎和UltraEdit不相上下。
    代码折叠:无。

    支持项目文件。无拼写检查。帮助过于简单。


    PSPad(免费软件,接受捐赠)
    启动/加载时间:2秒/1秒

    列模式:有(较难发现,按住alt键)。
    十六进制模式:有。
    搜索:可正则;多文件支持良好。
    撤消:不受保存点限制。
    宏和脚本:简单的录制回放,加上一些客户化命令。
    用户工具:很遗憾,每类文件仅一种工具。
    代码折叠:无。

    Ftp远程编辑。剪贴库。自动补全。项目管理。多语言。良好的键盘自定义和系统集成选项。有些很好的代码浏览视图,自动完成。可拖放的列。分离的字体。默认情况下不安装拼写检查字典。图形界面的对话框所用字体缺乏标准(不好)。更多截屏见此处

    [注:我们最初的观点是,pspad不适合作为一般用途的文本编辑器,除非它把换行断词的老毛病改掉。我们欣喜的看到,他们改写了相关代码来消除此缺点。因此,PsPad现在成了最好的编辑器之一。尤其可喜的是,它完全免费!]

    Crimson Editor(免费软件)
    启动/加载时间:13秒/8秒

    列模式:有。
    十六进制模式:无。
    搜索:可正则,支持多文件。
    撤消:受限于保存点。
    宏和脚本:录制和回放。
    用户工具:支持良好。
    代码折叠:无。

    太慢(启动用了13秒钟,读入一个40mb的文件用时8秒,)。软件设计主要面向程序员。可远程编辑FTP文件。帮助文件较差。

    Notepad2(开源软件)
    启动/加载时间:1秒/1秒

    列模式:有(选择时按下alt键)
    十六进制模式:无。
    搜索:可正则;不支持多文件。
    撤消:不受保存点限制。
    宏和脚本:无。
    用户工具:无。
    代码折叠:无。

    界面相当精简而小巧。功能算是轻量级。无安装文件。不能自动发现已打开文件的外部修改()。

    SlickEdit, Dreamweaver, Homesite

    我们认为,做不同的事要用不同的工具。正如我们不认为你会用notepad来编辑重大文件一样,我们也不认为应该用通用性文本编辑器来处理严肃的编程工作或设计网页。因此,尽管UltraEdit和上面提到的很多种编辑器功能全面,并且对这类文件也支持很好,甚至与外部工具或浏览器也集成的很好,并且实际上它们在快速打开文件进行修改进也很实用,但你真想编辑程序源文件或html时,还是另选他软更好。去找一个专门的工具吧。对编程而言,它意味着一个合适的IDE或程序编辑器,如SlickEdit。它可能价格稍贵,但在编译程序方面集成的更好。对html来说,它意味着如下html编辑器之一,DreamweaverHomesite

    值得一提的是,IDM,也就是UltraEdit的开发团队,将发布新的包括编辑器和一般IDE工具的新产品UltraEdit Studio

    Notepad/Wordpad(免费软件)

    这些软件列入名单,是为了兼顾一些认为notepad是超级精品,非它不用的超级fans的感情。

     

     

    总结

    此次最佳编辑器称号的争夺者中,有几款都是实力不俗。随着大幕落下,UltraEdit最胜终出。

    或许某些编辑器具备独有的或华丽或深奥的功能,并且为UltraEdit所无,但在日常编辑工作中最常用的功能方面,无疑UltraEdit更为出色。

    在寻找优秀的编辑器过程中,你应当坚持 模式和十六进制编辑功能,如果你就这样做,就会发现大多数编辑器都相形见绌。而UltraEdit在此方面则卓然超出。

    UltraEdit绝非炫耀的孔雀,它不会用华丽的风格、艳丽的按钮、动炫的菜单来装饰自己。这当然是好事。我们的思维之道是,一个编辑器最好不引人注目,甚至让人“视而不见”,让用户关注界面越少越好。

    最后,最佳文本编辑器的荣誉归于UltraEdit,理由是高度稳定性,简洁的界面,基本功能的顶级设计,高级功能的完美融合(并且这些功能从未在其他编辑器中同等程度的实现,如十六进制和列模式)。

    UltraEdit唯一让我们略感失望的就是它的粗陋、不协调的自制的宏/脚本帮助系统。它们就象疾病一样,悄悄潜入了程序之中,然后越长越大,渐成顽疾,但同时令人不敢轻易废弃——因为担心引起不兼容问题。目前严肃的脚本解决之道是为正宗的脚本语言,比如PythonLuaJavascriptVBScriptPerl等提供API——这一趋势合理而可喜。我们只能期待UltraEdit终有一天,能走上此路。可是在此之产有,你只能迁就一下,把绝大从数宏工作交由UltraEdit的内置功能和外部工具结合完成。这样做时,你或许很沮丧,但事实是,我们暂时没能找到和UltraEdit一样好的替代编辑器。

    在推荐UltraEdit作为当今最优秀的文本编辑器这一点上,我们无须犹豫。并且值得表扬的是,UltraEdit始终在进步。若干年来,从未居功自傲,止步不前。UltraEdit还拥有一个非常活跃的用户论坛,这一点为软件增添了不少价值。

    在我们的最初测评中,我们断言其他方面都很出色的免费软件PsPad并不适合一般的文本编辑,原因就是断词折行功能太差劲。现在我们要说的是,PsPad已经改正了这一问题,成为了可以免费使用的最好的编辑器。在你准备购买一款共享编辑器之前,一定记得试用它一下。

     

    返回评论..

    ------------------------------------

    [匿名] suihen

    2006-12-04 10:24:30
    Notepad++支持16位编辑、支持列模式,在plug-in中

    PS:RSS上部分图片无法在阅读器中显示(Firefox2.0&Sage1.3.9)
     
    -------------------------------
    [匿名] Calon

    2006-12-04 10:32:42
    看了几个其他的评测,只能说作者对其他软件使用不多。

    Scite 有插件实现宏功能。

    EmEditor 有列块模式,按下 alt。为什么评测 Scite 就能发现呢?
    有代码折叠,插件实现。
    用户工具很多,也是插件实现。
    它和 UE 的搜索各有所长,可惜作者没有提到。

    另外 MadEdit 也不错,免费的,可惜没提到。

    至于对 Vim 的评价,只能说作者是图形界面下的开发者。从人机界面的角度来说, Vim 是存在学习曲线陡的严重问题,但看看作者列出的评测结果,只能够说他对 Vim 的认识严重不足,连门还没有入。
    ---------------------------------------------------------------



    展开全文
  • 27款优秀的文本编辑器

    千次阅读 2012-07-30 17:34:42
    好的文本编辑器一般都支持语法高亮功能,支持多语言,文件比较、插件、代码片断助手、预览以及FTP管理。一些编辑器甚至为一个完全的开发环境提供了全面的功能和特性。这里是我收集的27款免费的比较优秀的文本

    经常跟代码打交道的人,除了自己所掌握的代码知识之外,我想他们最需要的工具之一,应该是一款得意的文本编辑器了,无论你是网站主还是博主,写东西改代码是经常的事情,所以很需要常备着一款合适且好用的文本编辑器。好的文本编辑器一般都支持语法高亮功能,支持多语言,文件比较、插件、代码片断助手、预览以及FTP管理。一些编辑器甚至为一个完全的开发环境提供了全面的功能和特性。这里是我收集的27款免费的比较优秀的文本编辑器,适用在Windows ,Mac或Linux等操作系统环境下工作,其中有些还可同时兼容多个操作系统。

    Notepad++

    Notepad

    Notepad++ 是一款很有特色的文本编辑器:1、内置支持27 种语法高亮度显示,支持自定义语言;2、可自动检测文件类型,根据关键字显示节点,节点可自由折叠/打开;3、可同时打开两个窗口,在分窗口中又可打开多个子窗口,允许快捷切换全屏显示模式(F11),支持鼠标滚轮改变文档显示比例;4、其他特点包括:邻行互换位置、宏功能等等。

    工作环境:Windows

    BBEdit

    BBEdit 9BBEdit是全球领先的专业HTML和文本编辑器,功能包括grep图样匹配,搜索和替换多个文件,项目定义,功能导航和众多的源代码语言的语法着色,支持代码折叠,FTP和SFTP打开和保存等。

    工作环境:Mac OS

    Boxer Text Editor

    Boxer

    Boxer Text Editor 是一款强力的全功能Windows文本编辑器,支持语法加亮、打印、列块、Undo & Redo、表达式搜索和替换等, 简单易用又不失强大的功能甚至可以完成最复杂的文本编辑任务。可以用来编辑HTML文件,程序源代码,非关系型数据库文件,大规模日志文件,批处理,INI文件以及任何你能想到的其他文本文件。尤其适合于程序员、学生、工程人员。

    Coda

    Coda

    Coda 是一款多功能的网页编辑器,共享软件。界面漂亮,操作简单,支持ftp功能和图书馆管理功能。

    工作环境:Mac OS X

    Crimson Editor

    Crimson Editor

    Crimson Editor是一个免费的文本编辑器,用于Microsoft Windows系统,可进行文本、代码的编辑。功能:语法高亮,多重撤销/重做,括号匹配,自动缩进,可直接编辑FTP上的文件,支持Unicode,还可使用宏,内建计算器,带有基本的数学函数、日期函数。

    EditPad

    EditPad

    Windows 标准记事本的替代软件。特点包括:在给定时间打开你想要打开的文件。在打开的文件之间进行转换只需点击它们的标签。EditPad 不需要任何额外的动态链接库(DLL)。

    EditPlus

    EditPlus

    功能:

    1、无限制的撤消与重做、英文拼字检查、自动换行、列数标记、搜寻取代、同时编辑多文件、全屏幕浏览

    2、监视剪贴板,能够同步于剪贴板自动将文字粘贴进 EditPlus 的编辑窗口中,让你省去粘贴的步骤。

    3、是一个非常好用的 HTML 编辑器,它除了支持颜色标记、HTML 标记,同时支持 C、C++、Perl、Java,另外,它还内建完整的HTML & CSS1 指令功能,对于习惯用记事本编辑网页的朋友,它可帮你节省一半以上的网页制作时间,

    4、若你有安装 IE 3.0 以上版本,它还会结合IE 浏览器于EditPlus 窗口中,让你可以直接预览编辑好的网页(若没安装IE,也可指定浏览器路径)。

    Editra

    Editra

    Editra是一个支持多平台的文本编辑器,可以支持基本语法和二十种语言。它使用方便,可以用颜色标注重点部分,支持进行内嵌式编辑,也可以进行代码编辑。

    emacs

    emacs

    Emacs不仅仅是一个编辑器,他是一个整合环境,或可称它为集成开发环境,这些功能如让使用者置身于全功能的操作系统中。能够在当前大多数操作系统上运行,包括类Unix系统、MS-DOS、Microsoft Windows 以及OpenVMS等。Emacs既可以在文本终端也可以在图形用户界面(GUI)环境下运行。

    Fraise

    Fraise是一款免费专门为MacOSX10.6开发的文本编辑器,并且非常易用和强大。它的设计目标是让新手容易上手,而且也满足高端用户要求。Fraise能做些什么事情了?它能够做文本编辑、web开发、脚本编辑等。还有要说的,为什么Fraise推介它,就是它基于Smultron开发,是Smultron的新生.

    gedit

    gedit

    Gedit是一个GNOME桌面环境下兼容UTF-8的文本编辑器。它简单易用,有良好的语法高亮,对中文支持很好,支持包括GB2312、GBK在内的多种字符编码。Gedit包含语法高亮和标签编辑多个文件的功能。利用GNOME VFS库,它还可以编辑远程文件。它支持完整的恢复和重做系统以及查找和替换,支持包括多语言拼写检查和一个灵活的插件系统,可以动态地添加新特性,例如snippets和外部程序的整合。Gedit还包括一些小特性,包括行号显示,括号匹配,文本自动换行,自动完成, 代码折叠,批次缩排,批次注解,嵌入式终端,当前行高亮以及自动文件备份。

    JEdit

    jEdi

    JEdit 是一个用java 编写的源码开放的文本编辑器。特点包括语法加亮显示,括号匹配,表达式搜索,多个文件搜索和替换,定义键盘宏等等。可跨平台运行。

    Kate

    Kate

    Kate是KDE图形工作环境中的一个文本编辑器,主要是给程序员、系统管理员和有经验的用户使用的。程序里结合有编程语言如C语言、C++和置标语言如HTML的语法高亮度显示和语法折叠的功能。许多文件可以被同时打开,用户可以设置和管理项目。此外Kate还结合有一个终端和支持许多插件。

    Komodo Edit

    Komodo Edit

    Komodo Edit具有高端编辑器所具有的所有特性,包括块选择,段落重排,代码建议等等。如果您曾经尝试过其他编辑器,您会在KOMODO EDIT找到所有功能,甚至更多。它支持很多种编程语言,可以识别通用的和框架特有的语义,如Django, Smarty和RHTML。它具有强大的HTML多重高亮功能,允许您在一个同一个文件中编辑CSS,服务端程序(如PHP)和Javascript。

    Kwrite

    Kwrite

    KWrite是一个轻量级、简单的文本编辑器。功能:

    1. 输出为 HTML、PDF、PostScript格式
    2. 区块选择模式(见截图)
    3. 语法折叠
    4. 书签
    5. 语法高亮度显示
    6. 编码选择
    7. 换行模式选择(Unix、Windows、Macintosh)
    8. 字码补齐

    phpDesigner

    phpDesigner

    phpDesigner 是针对 PHP 网页的编写所设计的程序,它内建一系列的指令码、PHP4 原始码数据库、语法高亮度显示功能、FTP 客户端等

    pico

    Pico是一个由华盛顿大学(University of Washington)计算与通讯研究所(Computing and Communications Group)编写并维护的文本编辑程序,在多个版本的Unix和类Unix操作系统中都有移植版本。作为一个简单的纯文本编辑器,pico并不具备字处理 程序中常见的增强功能,例如黑体和斜体等等。Pico的基本功能包括文本输入,文本搜索,拼写检查,文件浏览,文本拷贝、剪切和粘贴。很有意思的是,一个 功能如此简单的文本编辑器,竟然经常被开发人员用来编写程序代码 -- 在种类繁多的纯文本编辑器中,pico在程序员中的市场占有率仅次于vi。

    PSPad

    PSPad

    PSPad 虽然不是自由软件的代码编辑器,但是可供免费使用,拥有类似UltraEdit 与 EmEditor 等纯文字编辑软件等的实用功能。此外,PSPad 集成侧边栏,可以项目模式批量管理、编辑程序或文档。更可支持 FTP 文件上传/下载、可实时编辑网站文件。

    Smultron

    Smultron

    Smultron在瑞典语中是一种野生草莓的名字。她是一个开源的文本编辑器,也是一个美味的的文本编辑器。功能:

    1.按住Command和Option键的同时拖动鼠标,可以拖拽滚动屏幕;
    2.可以同时在多个文件中进行查找和替换,并支持正则表达式;
    3.可以仅打印选中部分的文本,并且可以打印语法着色;
    4.设置自动完成(Auto-completion),或者按功能键F5可以显示近似匹配的单词;
    5.显示通常不可见的字符(换行符或Tab);
    6.显示或隐藏行号;
    7.全屏幕操作。这时屏幕上只会显示你正在编辑的文档,使你专心于当下的任务。
    8.选择是否折行(Line Wrap)显示;
    9.快捷键Command+Option+F进入即时查找(Live Find)状态。在查找框中输入想要搜索的内容,就会高亮度显示匹配的内容。利用快捷键Command+G定位到下一匹配处。

    SubEthaEdit

    SubEthaEdit

    Subethaedit是一款功能相当强大、占用资源很小的文本编辑器。强调了网页开发的协作性,可以实时查看其他开发者的开发状态。当你的项目中的一个源码发生了变化,编辑器将会立即在主窗口中通知你。Subethaedit是收费软件,提供30天的免费试用期。

    SubEthaEdit特性:Bonjour文件共享,项目协作,AppleScript菜单以及通过AppleScript控制文本,Safari实时HTML预览,自动完成,窗体分割,FTP集成,个性化语法高亮显示。

    TextMate

    TextMate

    TextMate是Mac下的著名的文本编辑器软件,与BBedit一起并称苹果机上的emacs和vim。尤其适合程序员使用,可以定制许多贴心使用的功能。Bundles是TextMate的一个亮点,可以有效的提高开发速度。TextMate 属于收费软件。

    TextPad

    TextPad

    TextPad是一款强大的可以替代Windows 记事本Notepad 的文本编辑器,可以处理文书、编辑HTML、写DDE程式。支持拖放式编辑,你可以把它作为一个简单的网页编辑器使用。

    TextWrangler

    TextWrangler

    TextWrangler 是一款免费的纯文本和编程编辑器,支持Unicode文件格式。

    工作环境: Mac, Linux

    UltraEdit-32

    UltraEdit-32

    UltraEdit是能够满足你一切编辑需要的编辑器。UltraEdit是一套功能强大的文本编辑器,可以编辑文本、十六进制、ASCII码,可以取代记事本,内建英文单字检查、C++及VB指令突显,可同时编辑多个文件,而且即使开启很大的文件速度也不会慢。软件附有HTML标签颜色显示、代码折叠,搜寻替换以及无限制的还原功能,一般大家喜欢用其来修改EXE或DLL文件。

    vim

    Vim是开源软件,意味着你可以自由使用,修改,查看它的代码。Vvim可自定义的地方太多了,你可以自定义键盘映射,语法着色,缩进,格式等等。

    vim有3个模式:

    插入模式:在此模式下可以输入字符,按ESC将回到命令模式。
    命令模式:可以移动光标、删除字符等。
    低行模式:可以保存文件、退出vi、设置vi、查找等功能(低行模式也可以看作是命令模式里的)。

    工作环境:Windows, Mac OS X

    Notepad2

    Notepad2

    Notepad2是一款快速,轻量的开源文本编辑器,支持代码高亮。Notepad2 是发布在Microsoft Windows平台下的开放源代码的文本编辑器,2004年4月推出第一个版本。作者参照了微软的Notepad原则:小巧、快速、朴实。自3.0.20版起,Notepad2已经变成完全基于Unicode的程序,因此对各种字符的处理有良好的表现。

    工作环境:Windows

    Bluefish Editor

    Bluefish Editor

    Bluefish Editor 是一个面向程序员和网页设计师、强大开源的文本编辑器。作为一种快速,轻巧的文本编辑器,它支持500多种文件格式。它有一个内置的函数参考浏览器( PHP,Python,CSS 和 html ) ,这样你可以快速地了解特别的语法。

    工作环境: Mac, Linux

    展开全文
  • qml 实现文本编辑器

    千次阅读 2017-01-21 12:30:56
    实现文本编辑器要文件的 IO 功能,但是 QML 并没有提供,所以需要自己写一个。 #ifndef FILEIO_H #define FILEIO_H #include #include #include class FileIO : public QObject { Q_OBJECT public: Q_PROPERTY...

    实现文本编辑器要文件的 IO 功能,但是 QML 并没有提供,所以需要自己写一个。

    #ifndef FILEIO_H
    #define FILEIO_H
    
    #include <QObject>
    #include <QTextStream>
    #include <QFile>
    class FileIO : public QObject
    {
        Q_OBJECT
    public:
        Q_PROPERTY(QString source
                   READ source
                   WRITE setSource
                   NOTIFY sourceChanged)
        explicit FileIO(QObject *parent = 0);
    
        Q_INVOKABLE QString read();
        Q_INVOKABLE bool write(const QString& data);
    
        QString source() { return mSource; }
    
    public slots:
        void setSource(const QString& source) { mSource = source; }
    
    signals:
        void sourceChanged(const QString& source);
        void error(const QString& msg);
    
    private:
        QString mSource;
    };
    #endif // FILEIO_H
    

    #include "fileio.h"
    #include <QFile>
    
    FileIO::FileIO(QObject *parent) :
        QObject(parent)
    {
    
    }
    
    QString FileIO::read()
    {
        if (mSource.isEmpty()){
            emit error("source is empty");
            return QString();
        }
    
        QFile file(mSource);
        QString fileContent;
        if ( file.open(QIODevice::ReadOnly) ) {
            QString line;
            QTextStream t( &file );
            do {
                line = t.readLine();
                fileContent += line;
             } while (!line.isNull());
    
            file.close();
        } else {
            emit error("Unable to open the file");
            return QString();
        }
        return fileContent;
    }
    
    bool FileIO::write(const QString& data)
    {
        if (mSource.isEmpty())
            return false;
    
        QFile file(mSource);
        if (!file.open(QFile::WriteOnly | QFile::Truncate))
            return false;
    
        QTextStream out(&file);
        out << data;
    
        file.close();
    
        return true;
    }
    

    上面的读写功能非原创。


    接下来先要将上面的类注册到 qml 中


    #include <QGuiApplication>
    #include <QQmlApplicationEngine>
    #include <fileio.h>
    
    int main(int argc, char *argv[])
    {
        QGuiApplication app(argc, argv);
    
        QQmlApplicationEngine engine;
        qmlRegisterType<FileIO, 1>("FileIO", 1, 0, "FileIO");
        engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
        return app.exec();
    }



    接下来就要写真正的界面了

    使用 TextEdit 来实现


    import QtQuick 2.2
    import QtQuick.Dialogs 1.1
    import QtQuick.Controls 1.4
    import QtQuick.Layouts 1.3
    import FileIO 1.0
    
    ApplicationWindow {
        id: q
        visible: true
        title: "文件编辑器"
        width: 640
        height: 480
        color: "white"
          menuBar: MenuBar {
                  Menu {
                        title: "文件"
                            MenuItem {
                                id: open
                                text: "打开..."
                                iconName: "open"
                                shortcut: StandardKey.Open
                                onTriggered: open.open()
                                function open(){
                                fileDialog.open()
                                flick.visible = true
                                scrollbar.visible=true
                            }
                            }
                            MenuItem {
                                text: "新建"                           
                                shortcut: StandardKey.New
                                onTriggered: fileDialog2.open()
                            }
                            MenuItem {
                                text: "保存"                            
                                shortcut: StandardKey.Save
                                onTriggered: console.log( "WRITE"+ myFile.write(edit.text))
                            }
                            MenuItem {
                                text: "保存为"
                                shortcut: StandardKey.SaveAs
                                onTriggered: fileDialog1.open()
                            }
                        }
                        Menu {
                            title: "编辑"
                            MenuItem {
                                text: "复制"
                                shortcut: StandardKey.Copy
                                onTriggered: edit.copy()
    
                            }
                            MenuItem {
                                text: "剪切"
                                shortcut: StandardKey.Cut
                                onTriggered: edit.cut()
                            }
                            MenuItem {
                                text: "粘贴"
                                shortcut: StandardKey.Paste
                                onTriggered: edit.paste()
                            }
                        }
                        Menu {
                            title: "帮助"
                            MenuItem {
                                text: "About..."
                                shortcut: StandardKey.AddTab
                                onTriggered: aboutDialog.open()
                            }
                        }
                    }
              Flickable
                  {
                      id: flick
                      anchors.fill:parent
                      width: 300; height: 200;
                      contentWidth: edit.paintedWidth
                      contentHeight: edit.paintedHeight
                      clip: true
                      visible: false
                      function ensureVisible(r)
                             {
                                 if (contentX >= r.x)
                                     contentX = r.x;
                                 else if (contentX+width <= r.x+r.width)
                                     contentX = r.x+r.width-width;
                                 if (contentY >= r.y)
                                     contentY = r.y;
                                 else if (contentY+height <= r.y+r.height)
                                     contentY = r.y+r.height-height;
                             }
                      TextEdit
                      {
                          id: edit
                          width: flick.width
                          height: edit.paintedHeight
                          focus:  true
                          wrapMode: TextEdit.Wrap
                          selectByMouse: true
                          onCursorRectangleChanged: flick.ensureVisible(cursorRectangle)
                      }
                  }          
              Rectangle
                  {
                      id: scrollbar
                      visible: false
                      anchors.right: flick.right
                      x: 350
                      y: 0
                      width: 10
                      height: flick.height
                      color: "white"
                      Rectangle {
                      id: button
                      x: 0
                      y: flick.visibleArea.yPosition * scrollbar.height
                      width: 10
                      height: flick.visibleArea.heightRatio * scrollbar.height;
                      color: "grey"
                      // 鼠标区域
                      MouseArea {
                      id: mouseArea
                      anchors.fill: button
                      drag.target: button
                      drag.axis: Drag.YAxis
                      drag.minimumY: 0
                      drag.maximumY: scrollbar.height - button.height// 拖动
                      onMouseYChanged: {
                            flick.contentY = button.y / scrollbar.height * flick.contentHeight
                      }
                  }
              }
           }
    
    
        FileDialog {
            id: fileDialog
            title: "请选择一个文件"
            onAccepted: {
                 var path = fileDialog.fileUrl.toString();
                 path = path.replace(/^(file:\/{3})/,"");
                 path = decodeURIComponent(path);
                 myFile.source=path;
                edit.text =  myFile.read();
             //   console.log( "WRITE"+ myFile.write("TEST TEST file is OK"));
    
                console.log("You chose: " + myFile.source);
                fileDialog.close()
            }
            onRejected: {
                console.log("Canceled")
                fileDialog.close()
            }
    
        }
        FileDialog {
            id: fileDialog1
            title: "请输入文件名"
            selectExisting: false
            onAccepted: {
                 var  p=myFile.read();
                 var path = fileDialog1.fileUrl.toString();
                 path = path.replace(/^(file:\/{3})/,"");
                 path = decodeURIComponent(path);
                 myFile.source=path;
                console.log( "WRITE"+ myFile.write(p));
                 edit.text =  myFile.read();
                console.log("You chose: " + myFile.source);
                fileDialog.close();
            }
            onRejected: {
                console.log("Canceled")
                fileDialog.close()
            }
    
        }
        FileDialog {
            id: fileDialog2
            title: "请输入文件名"
            selectExisting: false
            onAccepted: {
                 var path = fileDialog2.fileUrl.toString();
                 path = path.replace(/^(file:\/{3})/,"");
                 path = decodeURIComponent(path);
                 myFile.source=path;
                console.log( "WRITE"+ myFile.write(""));
                 edit.text =  myFile.read();
                console.log("You chose: " + myFile.source);
                fileDialog.close();
            }
            onRejected: {
                console.log("Canceled")
                fileDialog.close()
            }
    
        }
    
        FileIO {
                   id: myFile
                   onError: console.log(msg)
               }
    
    }
    



    展开全文
  • NOTEPAD++是一款免费又优秀的文本编辑器,支持在 MS Windows 环境下运行的多种编程语言。NOTEPAD++支持超过 50 种编程、脚本和标记语言的语法高亮显示和代码折叠,能让用户迅速减小或扩大代码段以便查阅整个文档。...
  • 工欲善其事,必先利其器。用好优秀的文本编辑器能让程序调试事半功倍。
  • linux之文本编辑器

    万次阅读 2012-03-02 18:14:08
    在本章我们向大家介绍Linux上常见的编辑器ed、vi、emacs,同时以vi为例,讲解Linux中的文本编辑,为大家成为优秀的系统管理员打下基础。   【重点内容】 Ø Linux编辑器简介 Ø vi的打开和退出 Ø
  • 概述 前提: 在学习本博文之前,您需要搭建好Java环境,其中包括1.JDK...在新人学习Java编程的时候,我觉得使用文本编辑器来编写Java程序的源代码,同时搭配使用javac命令以及java运行命令是比较重要的一个前提操作,很
  • Notepad++文本编辑器简介

    千次阅读 2019-05-14 14:53:52
    Notepad++是Windows平台上一款免费且开源的文本编辑器,其功能比Windows系统自带的Notepad(记事本)强大的多。Notepad++除了可以用于一般的纯文本记录,还可以用于编写小型的计算机程序,因为Notepad++不仅支持多种...
  • 五款专业文本编辑器比较(转贴)

    千次阅读 2009-06-27 09:22:00
    分享一篇来自“华军软件园”郭华的文章,就常用的几款文本编辑器做了一些性能等方面的比较,希望给大家有所帮助。文章版权属于“华军软件园”和作者郭华所有,如有侵权,请联系linqiang0816@163.com,我将尽快处理...
  • 编程语言

    千次阅读 多人点赞 2008-05-18 22:47:00
    计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。... 计算机所能识别语言只有机器语言,即由0和1构成的代码。但通常人们编程时,不采用机器语言,因为它非常难于记忆和识
  • Python Tkinter实战——自制文本编辑器

    千次阅读 2019-04-25 23:05:17
    4.1 自制编辑器 项目实战要点 在之前章节中已经学习了tkinter的大量知识,但仍然有部分知识是没有覆盖到的,换句话说,本教程并不是一本事无巨细的帮助文档,未提到的知识,我将在项目实战中列出,根据具体使用场景...
  • 本文介绍 10 个可在 iOS 或 Android 平板电脑上的 Python 编程环境。Python 开发者可通过这些工具实现随时随地编码,蛋疼抑或爽极? 1、 Pythonista Python 声称将实现 “在你的iPad或iPhone实现Python的禅“ ,不到...
  • 编程语言实现算法

    万次阅读 2018-07-19 20:23:04
    课程导言 【用流程图描述算法,可以与用户更好地交流。...本篇和同学们探讨如何用编程语言来实现算法以及编程语言的发展过程。通过本篇的学习,你将了解到编程语言是如何由二进制语言逐步发展为高...
  • 编程语言分类简介

    万次阅读 2007-05-31 12:02:00
    计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。... 计算机所能识别语言只有机器语言,即由0和1构成的代码。但通常人们编程时,不采用机器语言,因为它非常难于记忆和识
  • 计算机编程语言的分类

    万次阅读 2016-08-11 10:10:45
    一、计算机语言分类: 低级语言 高级语言 专用语言 脚本语言二、对数据类型的要求: 强类型预言—-强调数据类型 弱类型语音—-忽略数据类型三、 1、低级语言 - 机器语言、汇编语言和符号语言 - 汇编语言源...
  • 计算机编程语言(1)

    千次阅读 2012-02-08 22:33:43
    计算机编程语言(1) 分类: 计算机语言 2009-11-22 13:58 1399人阅读 评论(0) 收藏 举报     Go语言   摘要: Go语言是谷歌2009发布的第二款开源编程语言。Go语言专门针对多处理器系统...
  • 有一些老程序用的是GB2312编码的中文字符,虽然像Visual Studio code等软件解决了自动识别代码显示问题,但是用文本编辑器运行时,会由于Mac终端只能识别UTF-8编码方式,从而仍会遇到中文乱码问题。 解决方案: ...
  • 如何高效地学习编程语言

    千次阅读 2019-03-11 16:25:08
    学习编程语言是一种技巧:做好了,你会感受到掌握新事物之后的快感;做不好,就会接二连三的沮丧,甚至放弃。下面我将介绍一些技巧与方法,以便帮助大家高效地学习。 持续测试自己以抵抗胜任力错觉 最不济的学习...
  • EverEdit 是本站的读者“徐大侠”原创开发的一款相当优秀国产的免费文本(代码)编辑器,最初这项目是为了解决 EditPlus 的一些不足并增强其功能而开始的,比如 Editplus 的着色器较为简陋,无法进行复杂着色,如...
  • 各种编程语言的特点

    万次阅读 2012-07-01 17:18:33
    文章导读:计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。 如果按语种分,可以分为英文符号语言和汉语符号语言两类。(典型的如:易语言、易语言.飞扬) 电脑每做的一次动作,一...
  • 编程语言在线编译器

    千次阅读 2019-04-02 09:41:48
    1)codepad 支持C / C ++,D,Haskell,Lua,OCaml,PHP,Perl,纯文本,Python,Ruby,Scheme,Tclhttp://codepad.org/ 2)在线编译器【推荐】 支持C / C ++,FORTRAN ,JAVA,PASCAL,BASI...
  • 多国语言编程之资源转换

    千次阅读 2000-12-14 10:54:00
    多国语言编程之资源转换问题 不同国家的人使用着不同语言的操作系统。在Microsoft Windows下,语言用代码页来识别,不同语言用不同代码页来表示,如"简体中文"用代码页936表示,而"美国英语"则用代码页1252表示。 在用...
  • 信息学奥林匹克竞赛-编程语言

    千次阅读 2015-11-17 13:15:53
    主流编程语言简介  计算机语言的种类非常的多,总的来说可以分成 机器语言,汇编语言,高级语言 三大类。 机器语言:是直接用二进制代码指令表达的计算机语言,指令是用0和1组成的一串代码,它们有一定的位数...
  • 面向中文的自然语言编程

    千次阅读 2015-05-03 12:56:18
    下载WINDOWS平台解释引擎 ... L脚本语言和编译器开发QQ群:...面向中文的自然语言编程:L脚本语言 l 为什么要设计一种新的编程语言? 在编程的过程中我总在想,计算机编程这件事需要那么长时间的学习过程,能不能让这...
  • 最值得学习和最具潜力的 44 个顶级开源项目,包括关于机器学习、深度学习、强化学习、语音识别、自然语言处理、计算机视觉、自动建模和分布式平台等等。 I . 适用于经典机器学习的工具 一、SciKit-learn  star 39.2...
  • c语言如何识别无BOM的UTF8文本

    千次阅读 2017-01-28 20:49:44
    Windows下的文本编辑器在保存UTF-8格式的文本文档时会自动添加BOM到文件头。在判断这类文档时,可以根据文档的前3个字节来进行判断。 但是,如果文档不带有BOM,就无法根据BOM做出判断,那么那在编程判断时就要根据...
  • 前面一篇博文讲述了Windows环境下CLisp的安装,文章链接如下:http://blog.csdn.net/keyboardota/article/details/8237185安装了CLisp环境后,我们可以使用任何一种文本编辑器编写Lisp程序,然后在CLisp环境中通过...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 38,171
精华内容 15,268
关键字:

文本编辑器自动识别编程语言