TextMate 有哪些优点?

令我惊讶的是James居然也是从窗口讲起,还以为会先讲讲TextMate的设计哲学呢。

编辑窗口左侧可以(注意是:可以)显示行号、代码折叠、书签等。下方是当前光标的位置信息,文本格式等,按^ 可以调出Bundles。

敲字也疯狂

敲字的三重境界:

敲A得A,敲B得B;

敲一个,得一双;

只敲关键的,剩下的让编辑器做去吧。

文艺一下^_^

以前总听说TextMate支持多标签,可我怎么也找不到,原来必须先建个项目,项目里面的文件就能以标签形式显现了。

标签间的切换,以及TextMate最梦幻的一个功能——智能查找(T 调出Go to File 窗口,如果你想找pitches_controller_test.rb,只需输入pct,回车,就是你了)。它还有个兄弟Go to Symbol (⇧⌘ T)

TextMate提供的文本操作也很简单,无非是移动、选中和智能变换。

移动,记住上下左右就够了。不过,TextMate牛就牛在做移动,人家都能做出花来,比如,像CamelCaseWords这样连在一起,但是用大写字母分开的词,用^ ←/ ^ →居然可以一个词一个词的跳跃。

以前在Windows的记事本里发现一个很贴心的设计:按住alt就可以列眩其实,TextMate也可以,按住⌥就行。

接下来是TextMate的有一个卖点:自动补全(按,就是esc键啦)。

当然,支持正则查找的⌘ F 更有用一些。

自动补全

TextMate的Bundles就像语言里的库一样,为不同需求的用户带来一站式的舒适(我刚下了一个Mathematica的Bundle, 虽然有些问题,还是挺强大的)。在我看来,bundle就是为某种需求定制的一个库,约定好我敲个什么字,按个什么键,你就把它补全,比如:输入一个 HTML标签div,按住⌃ <(学名叫神马Insert Open/Close Tag (With Current Word)),TextMate就会帮你补全为<div></div>。

除了bundle之外,TextMate还提供了snippet, macros, command等工具。

Bundle

以Ruby Bundle 为例:

运行脚本: ⌘ R

在注释中标注结果:先在需要计算的行后敲入 #⇥,#号会补全为# =>,然后⌃⇧⌘E,这时所有行尾标有# => 的行都会自动计算结果。

’ Markers" width="750" height="259" style="border: 0px;" _src="http://pic.cr173.com/up/2015-4/2015042315433133002.jpg">

除了上面提到的#⇥,还有cla⇥, mod⇥, def⇥, defs⇥, deft⇥, r⇥, w⇥, rw⇥, if⇥, case⇥, while⇥, 以及关于迭代的snippet,inj⇥, tim⇥, ea⇥, sorb⇥, eawi⇥……

为单元测试提供了tc⇥, ts⇥, as⇥, asid⇥

用⌃H 查看Ruby的内置文档

……

Snippet

Snippet,顾名思义就是 一段小程序,就像平时看到好文章做的摘抄。一般由快捷键触发,书上是这么说的“This simple association of a trigger and a response is exactly what TextMate’s snippets are.”

你可以用⌃⌥⌘ B 来打开:

现在只要敲AP⇥ 就会自动展开为Armystrong Pope

snippet有两个字符不代表其字面本身:$和`,你可以用/$和/` 来表示。除了字串展开,TextMate还可以制定⇥跳转的位置。还记得填表的时候,按一下⇥ 就会自动调到下一个表格里么?这种技术在这就叫tab stop,从$1开始(是的,从1开始,$0结束),在需要跳转的地方依次写上$2, $3, ..., $n。如果不加tab stop,则默认光标停在sinppet的最后一个字符后。另外,还可以指定缺省值,像这样:

<div${1: id="${2:some_id}"}>

$0

</div>

这样,一开始会选中“id="some_id"”,按下⇥ 之后,光标会圈住“some_id”。

如果仅仅是这些,TextMate就不会这么出名了。很多语言因为追求严谨,要求在作用域的开头和结尾都标明名字,比如TeX里面

/begin{content}

/end{content}

这时你就可以使用镜像,在begin{}里面输入的内容会在end{}里面同步出现。看着$n眼熟吧,感觉就像变量,实际上它就是变量。在需要的地方引用它就可以实现镜像:

/begin{$1}

$0

/end{$1}

更进一步,有些时候需要镜像的内容做一点点变换,比如首字母大写啦……。??????,正则表达式出场!是的,你可以用正则表达式对tab stop 做变换。首字母大写是吧,简单:

begin ${1:foo}

// bla bla ...

end ${1/.//u$0/}

例子有欠妥当。注意/u$0 的$0 是正则表达式里的$0,指代整个被匹配的字串;/u是说下一个字符大写(这可是标准的正则表达式用法),因为作用在整句前,就变成了首字母大写。

还记得前面说snippet中有两个特殊字符$ 和` 吗?$用来引用变量,而` 通常用来插入shell代码:

<a href="` echo http://example.com/ `"></a>

从如何改造TextMate你才能体会到它提供的这些定制机制是多么简洁、贴心。

Macros

TextMate里的宏更像是M$ Office里的宏:开始记录(⌥⌘ M),小红灯闪,记录,停止记录(⌥⌘ M),打完收工。

Command

这里的command有些歧义,一是指Shell Commands,一是指TextMate里面一种自动补全的机制。

先说第一种,shell 命令。你可以在TextMate里敲一段脚本,然后⌃ R,TextMate会把运行结果用管道传送过来。

而TextMate中的command通常会调用shell 命令。相比snippet, macros, 它可以以更复杂的逻辑来完成自动补全。

TextMate 有哪些优点?

我对其他编辑器了解不多,很多特性是我在TextMate第一次见到,因此如果说得不对大伙指正:

1. 首创Snippets代码自动生成功能。相信很多人用TextMate是为了这个功能,它真的非常好用。当时几乎所有的IDE都是让你填写一大堆对话画框,然后自动生成一个文件或者代码,繁琐而灵活性不佳。而在TM仅仅考一系列Snippets,就可以将预设好的缩写词扩展成类、函数和分支循环结构,并且可以考tab逐次的修改自定义的部位;

2. 首创Plugin bundle的分发和管理机制,并且形成了一定规模的社区。TextMate的插件安装非常简单,而且随装随用,随时删除。当时很多软件的插件都要自己拷贝so文件到制定目录,vim需要在.vim/目录下去解压插件包或者手工复制vim。

3. 定义了lexical scope,使得所有Snippets,命令和宏的域都不是针对整个文件/项目的。这个设计使得不同类型的文件、甚至文件中不同的位置都可以共享相同的快捷键,行为却是完全不同的。这一设计使得需要记住的快捷键命令大大减少,但是威力确依然不减;

4. 自动化编辑器里Discoverbility做得最好的。TextMate常常被用来和Vim、eMacs相比,具备不输后两者键盘操作,相差不远的可扩展性。但是她的学习曲线却惊人的平滑。这得意于她所有的快捷键都可以找到对应的菜单操作。新手翻几次菜单后,就可以记住常规的快捷键,而因为第3点的缘故,用户可以用这些快捷键在不同的文件类型中去尝试,可以获得不太超出预料的结果;

5. 善用脚本。可能因为TextMate的作者之前是eMacs用户,因此对于调用脚本的支持完善得很好,事实上,大部分TextMate命令都会调用外部脚本来实现某些功能。而且脚本可以是python, ruby, shell, perl等任何unix下能运行的脚本。此外TextMate还不强迫用户学会这些脚本语言,你可以作为bundle用户,可以写脚本开发bundle。

当然,TextMate也有很多不足,加上作者在酝酿TM2,而不是快速迭代这一版本,导致演化过慢,很多功能都被其他编辑器模仿过去了。我觉得TM有一下几点不足或者不再有优势的地方:

0. 宽字符支持太烂,永远的痛!
1. Snippets已经被Vim、eMacs、NotePad++等一大堆编辑器所吸收;
2. bundle连vim都可以通过pathogen模仿;
3. 补全功能太弱;
4. 临时性的管道输入输出,需要经过一个对话框,远不如vim方便;
5. tab标签式多文件,文件一多导航不佳,不支持屏幕分割;尤其是文件切换避免不了鼠标操作,无法和Vim/eMacs的存键盘操作媲美;
6. 文本查找对话框,现在连浏览器都不用了,也不如vim下的/方便。查找到的多个结果依赖鼠标访问,不像vim有quickfix和快捷键;
7. 远程编辑文件太弱了。

所以,大约用了1年左右的TextMate之后,我还是用回了Vim。Vim通过强大的可扩展性和社区的支持,Snippets、bundle的划分都逐渐成熟。而且个人已经过Vim学习曲线陡的阶段,TextMate对我来说,优势已经不是太多了。

好在插件多埃
不过是个不思进取的编辑器。作者当年许诺免费升级到2.0已经不指望了,但好歹你倒是升级啊!
相信以上是每个用 TextMate 的人都抱怨过的问题吧。

所以我们公司里的同志们都已经纷纷转用 vim 了,一样有很多插件,自定义性极强(强到不搞一套别人做好的设置自己从头设置能累死),开源。

tab键自动补全,多行编辑。我知道的有这些。
哈哈其实我也没用过mac。用过一些在linux和windows上模仿的编辑器,感觉都一般。

(0)

相关推荐

  • 硬盘中SLC是什么及其优点.存取原理介绍

    储单元分为两类:SLC(Single Level Cell 单层单元)和MLC(Multi-Level Cell多层单元)。此外,SLC闪存的优点是复写次数高达100000次,比MLC闪存高10倍。此 ...

  • 什么是无孔鼠标 双飞燕无孔鼠标优点介绍(也称幽灵隐擎)

    A4TECH双飞燕的自主研发能力和创新速度让人惊叹。一直始终以弘扬民族品牌为己任,为民族品牌争光的企业精神。无孔幽灵鼠标必将再次轰动鼠标业。双飞燕成功地站在了世界鼠标引擎技术的尖端,再次缔造鼠标传奇, ...

  • TCP/IP协议优点&体系结构介绍

    T C P / I P是一个稳定的、构造优良的、富有竞争性的协议。 T C P和I P是两个独立且紧密结合的协议,负责管理和引导数据报文在I n t e r n e t上的传输。二者使用专门的报文头定 ...

  • "磁悬浮"风扇有何优点?

    网友问:最近看到很多厂家都在宣传“磁悬浮风扇”,请问磁悬浮风扇有何优点? 答:现在很多板卡厂商将磁悬浮风扇用在显卡风扇或者是北桥风扇上,磁悬浮风扇工作的原理类似于磁悬浮列车,利用电磁力让转子和定子之间 ...

  • 独立功放音箱的几个优点

    自国内音箱巨头三诺推出首款独立功放音箱iFi-331以来,引发市场强烈反响,人们在热切关注这个代表多媒体音箱产业变革性产品的同时,也惊喜的发现,原来独立功放将有望成为新的多媒体音箱选购标准。 往往只在 ...

  • 综合布线系统中采用双绞线的原因以及双绞线传输图像的优点

    众所周知,在综合布线工程中双绞线能在很多地方应用来传输信号信息等,比如在工业控制需要中和干扰较大的场所以及远距离传输中都有使用,应用广泛的局域网也是使用了双绞线。之所以能在那么多的地方应用是因为其具有 ...

  • 综合布线之屏蔽布线系统的优点以及安装的方法

    随着科技的进步与发展应用,全世界对于网络的带宽的需求在不断的提升,也正是因为更多的电子技术科技的应用,我们周围的电磁污染却更加严重。在网络综合布线中,现在于预计的未来50年内。铜缆依然是主要的网络信号 ...

  • 内存双通道是什么意思?内存双通道的缺点和优点各有哪些

    双通道技术在当今的电脑应用越来越广泛,相信大家对双通道,使普通的DD的词语并不陌生。那么究竟双通道技术是怎么样的呢?内存双通道的缺点和优点又是什么呢?小编就此为大家进行深入解答。 双通道内存技术的原理 ...

  • U盘和移动硬盘安装Win7系统的优点及方法

    对于系统的安装方法大家知道多少呢,安装新的Windows系统有n种方式,这里,n >= 5。硬盘安装,光盘安装,U盘安装,虚拟光驱安装,还有Ghost安装等等。今天对新手朋友们简要说几句用U盘和 ...