国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 應用 > 軟件技巧 > 正文

TextMate 有哪些優(yōu)點?

2024-07-05 05:02:04
字體:
來源:轉載
供稿:網友

令我驚訝的是James居然也是從窗口講起,還以為會先講講TextMate的設計哲學呢。

TextMate 有哪些優(yōu)點? 三聯

編輯窗口左側可以(注意是:可以)顯示行號、代碼折疊、書簽等。下方是當前光標的位置信息,文本格式等,按^可以調出Bundles。

敲字也瘋狂

敲字的三重境界:

敲A得A,敲B得B;

敲一個,得一雙;

只敲關鍵的,剩下的讓編輯器做去吧。

文藝一下^_^

以前總聽說TextMate支持多標簽,可我怎么也找不到,原來必須先建個項目,項目里面的文件就能以標簽形式顯現了。

標簽間的切換,以及TextMate最夢幻的一個功能——智能查找(T 調出Go to File 窗口,如果你想找pitches_controller_test.rb,只需輸入pct,回車,就是你了)。它還有個兄弟Go to Symbol (⇧⌘ T)

TextMate提供的文本操作也很簡單,無非是移動、選中和智能變換。

移動,記住上下左右就夠了。不過,TextMate牛就牛在做移動,人家都能做出花來,比如,像CamelCaseWords這樣連在一起,但是用大寫字母分開的詞,用^ ←/ ^ →居然可以一個詞一個詞的跳躍。

以前在Windows的記事本里發(fā)現一個很貼心的設計:按住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,顧名思義就是 一段小程序,就像平時看到好文章做的摘抄。一般由快捷鍵觸發(fā),書上是這么說的“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}

//blabla...

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

例子有欠妥當。注意/u$0 的$0 是正則表達式里的$0,指代整個被匹配的字串;/u是說下一個字符大寫(這可是標準的正則表達式用法),因為作用在整句前,就變成了首字母大寫。

還記得前面說snippet中有兩個特殊字符$ 和` 嗎?$用來引用變量,而` 通常用來插入shell代碼:

<ahref="`echohttp://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 有哪些優(yōu)點?

我對其他編輯器了解不多,很多特性是我在TextMate第一次見到,因此如果說得不對大伙指正:

1. 首創(chuàng)Snippets代碼自動生成功能。相信很多人用TextMate是為了這個功能,它真的非常好用。當時幾乎所有的IDE都是讓你填寫一大堆對話畫框,然后自動生成一個文件或者代碼,繁瑣而靈活性不佳。而在TM僅僅考一系列Snippets,就可以將預設好的縮寫詞擴展成類、函數和分支循環(huán)結構,并且可以考tab逐次的修改自定義的部位;

2. 首創(chuàng)Plugin bundle的分發(fā)和管理機制,并且形成了一定規(guī)模的社區(qū)。TextMate的插件安裝非常簡單,而且隨裝隨用,隨時刪除。當時很多軟件的插件都要自己拷貝so文件到制定目錄,vim需要在.vim/目錄下去解壓插件包或者手工復制vim。

3. 定義了lexical scope,使得所有Snippets,命令和宏的域都不是針對整個文件/項目的。這個設計使得不同類型的文件、甚至文件中不同的位置都可以共享相同的快捷鍵,行為卻是完全不同的。這一設計使得需要記住的快捷鍵命令大大減少,但是威力確依然不減;

4. 自動化編輯器里Discoverbility做得最好的。TextMate常常被用來和Vim、eMacs相比,具備不輸后兩者鍵盤操作,相差不遠的可擴展性。但是她的學習曲線卻驚人的平滑。這得意于她所有的快捷鍵都可以找到對應的菜單操作。新手翻幾次菜單后,就可以記住常規(guī)的快捷鍵,而因為第3點的緣故,用戶可以用這些快捷鍵在不同的文件類型中去嘗試,可以獲得不太超出預料的結果;

5. 善用腳本。可能因為TextMate的作者之前是eMacs用戶,因此對于調用腳本的支持完善得很好,事實上,大部分TextMate命令都會調用外部腳本來實現某些功能。而且腳本可以是python, ruby, shell, perl等任何unix下能運行的腳本。此外TextMate還不強迫用戶學會這些腳本語言,你可以作為bundle用戶,可以寫腳本開發(fā)bundle。

當然,TextMate也有很多不足,加上作者在醞釀TM2,而不是快速迭代這一版本,導致演化過慢,很多功能都被其他編輯器模仿過去了。我覺得TM有一下幾點不足或者不再有優(yōu)勢的地方:

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通過強大的可擴展性和社區(qū)的支持,Snippets、bundle的劃分都逐漸成熟。而且個人已經過Vim學習曲線陡的階段,TextMate對我來說,優(yōu)勢已經不是太多了。

好在插件多啊。
不過是個不思進取的編輯器。作者當年許諾免費升級到2.0已經不指望了,但好歹你倒是升級啊!
相信以上是每個用 TextMate 的人都抱怨過的問題吧。

所以我們公司里的同志們都已經紛紛轉用 vim 了,一樣有很多插件,自定義性極強(強到不搞一套別人做好的設置自己從頭設置能累死),開源。

tab鍵自動補全,多行編輯。我知道的有這些。
哈哈其實我也沒用過mac。用過一些在linux和windows上模仿的編輯器,感覺都一般。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 织金县| 当雄县| 清河县| 沙河市| 喜德县| 克什克腾旗| 三原县| 松江区| 和田市| 罗田县| 巨鹿县| 蕉岭县| 四川省| 民县| 蓝山县| 保靖县| 涿州市| 罗山县| 宿松县| 台中市| 内江市| 抚远县| 富平县| 涞水县| 盐亭县| 玛纳斯县| 都兰县| 庄河市| 义马市| 翁源县| 舒城县| 兴化市| 平谷区| 华宁县| 吉首市| 互助| 建宁县| 焦作市| 福清市| 申扎县| 平塘县|