TextMate 有哪些优点?

哥哥心太亂

哥哥心太亂

2016-03-31 20:21

下面请跟着图老师小编一起来了解下TextMate 有哪些优点?,精心挑选的内容希望大家喜欢,不要忘记点个赞哦!

TextMate 有哪些优点?

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

TextMate 有哪些优点? 图老师

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

敲字也疯狂

敲字的三重境界:

敲A得A,敲B得B;

敲一个,得一双;

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

文艺一下^_^

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

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

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

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

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com)

以前在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 ...  

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com)

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上模仿的编辑器,感觉都一般。

展开更多 50%)
分享

猜你喜欢

TextMate 有哪些优点?

电脑网络
TextMate 有哪些优点?

12星座有哪些优点?12星座的优点有哪些

星座
12星座有哪些优点?12星座的优点有哪些

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

注射除皱有哪些优点

皮肤护理
注射除皱有哪些优点

拳师犬有哪些优点

拳师犬 大型犬 宠物
拳师犬有哪些优点

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

家居布置有哪些优点

装修 日式风格
家居布置有哪些优点

羊毛地毯有哪些优点

生活常识
羊毛地毯有哪些优点

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

360安全卫士怎么鉴定U盘容量?

360安全卫士怎么鉴定U盘容量?

Win7系统任务栏居中的设置方法

Win7系统任务栏居中的设置方法
下拉加载更多内容 ↓