鍍金池/ 教程/ C++/ 為什么選擇Atom?
調(diào)試
初始文件
作用域設(shè)置、作用域和作用域描述符
在Atom中移動(dòng)
在Atom背后
Atom中的包
為什么選擇Atom?
從Textmate中轉(zhuǎn)換
小結(jié)
新手入門(mén)
折疊
代碼段
Hacking Atom
基本的自定義
Atom中的序列化
文本處理包
字?jǐn)?shù)統(tǒng)計(jì)包
所需工具
維護(hù)你的包
Atom基礎(chǔ)
深入鍵表(keymap)
配置API
使用Atom
自動(dòng)補(bǔ)全
面板
在Atom中寫(xiě)作
文本選擇
創(chuàng)建主題
圖標(biāo)
小結(jié)
開(kāi)發(fā)Node模塊
編輯和刪除文本
安裝Atom
通過(guò)服務(wù)和其它包交互
小結(jié)
編寫(xiě) spec
語(yǔ)法
Atom中的版本控制
查找和替換

為什么選擇Atom?

來(lái)源:https://github.com/atom-china/manual

這個(gè)世界上有那么多種編輯器,為什么你要花時(shí)間學(xué)習(xí)和使用 Atom 呢?

雖然 Sublime 和 TextMate 之類(lèi)的編輯器已經(jīng)非常好用了,但它們僅提供了很有限的拓展性。而在另一個(gè)極端,Emacs 和 Vim 提供了靈活的拓展性,但它們并不是很友好,需要使用專(zhuān)用的編程語(yǔ)言來(lái)配置和拓展。

我們覺(jué)得我們可以做得更好。我們的目標(biāo)是在保證易用性的同時(shí)提供充分的可拓展性(hackability):這個(gè)編輯器會(huì)受到第一天學(xué)習(xí)編程的新生歡迎,而且當(dāng)他們成長(zhǎng)為編程專(zhuān)家時(shí)也難以割舍。

當(dāng)我們使用 Atom 來(lái)開(kāi)發(fā) Atom 的時(shí)候,隨著它的逐漸完善,我們愈發(fā)覺(jué)得已經(jīng)離不開(kāi)它了。從表面上來(lái)看,Atom 是一個(gè)能滿(mǎn)足你的期待的,現(xiàn)代化的桌面文本編輯器,而在表面之下,這是一個(gè)值得你去一同完善的系統(tǒng)。

Atom 的核心

Web 技術(shù)雖然有其缺陷,但經(jīng)過(guò)二十年的發(fā)展,Web 已經(jīng)逐漸成長(zhǎng)為了一個(gè)強(qiáng)大的具有活力的平臺(tái)。所以當(dāng)我們計(jì)劃寫(xiě)一個(gè)自用的可拓展的文本編輯器時(shí),Web 技術(shù)顯然是一個(gè)好的選擇,但首先我們需要擺脫來(lái)自 Web 的限制。

混合本地代碼與 Web 技術(shù)

Web 瀏覽器很適合用來(lái)瀏覽網(wǎng)頁(yè),但寫(xiě)代碼是一種需要可靠的工具的專(zhuān)業(yè)活動(dòng)。更重要的是,瀏覽器出于安全的考慮,嚴(yán)格限制了對(duì)本地系統(tǒng)的訪(fǎng)問(wèn),但對(duì)一個(gè)文本編輯器而言,不能向本地系統(tǒng)寫(xiě)入文件是不可接受的。

因此,我們沒(méi)有把 Atom 構(gòu)建為一個(gè)傳統(tǒng)的 Web 應(yīng)用,Atom 是一個(gè)專(zhuān)門(mén)被設(shè)計(jì)用作文本編輯器,而不是網(wǎng)頁(yè)瀏覽器的 Chromium 定制版。Atom 的每一個(gè)窗口實(shí)際上都是一個(gè)本地渲染的網(wǎng)頁(yè)。

所有來(lái)自 Node.js 可用的 API 在 Atom 窗口的 JavaScript 中同樣可用,這種結(jié)合帶來(lái)了一種獨(dú)一無(wú)二的開(kāi)發(fā)體驗(yàn)。

因?yàn)橐磺卸际潜镜氐?,你不需要將靜態(tài)資源打包、不需要關(guān)注腳本的異步加載,如果你希望加載一些代碼。只需要在文件的最頂部 require 它即可,Node.js 的模塊系統(tǒng)允許你將一個(gè)系統(tǒng)分割為小的、專(zhuān)注于某一功能的包。

JavaScript 與 C++ 的結(jié)合

與原生代碼交互也很簡(jiǎn)單。例如,你基于 Oniguruma 正則引擎開(kāi)發(fā)了一個(gè)用來(lái)提供對(duì) TextMate 語(yǔ)法識(shí)別的支持。在瀏覽器里,你可能需要使用 NaCl 或 Esprima, 而在 Node 里這個(gè)過(guò)程變得非常簡(jiǎn)單。

在 Node.js 的 API 之外,我們還提供了一些 API 例如使用系統(tǒng)的對(duì)話(huà)框、使用菜單欄和右鍵菜單、操縱窗口尺寸等等。

Web 技術(shù):最有趣的部分

另一個(gè)好消息就是當(dāng)你為 Atom 編寫(xiě)代碼時(shí),這些代碼一定會(huì)被允許在最新版本的 Chromium 中。這意味著你可以無(wú)視與瀏覽器兼容性有關(guān)的黑科技,使用全部的最新的 Web 功能。

例如,Atom 的工作區(qū)和窗格都是基于 flexbox 來(lái)進(jìn)行布局的。這是一項(xiàng)剛剛出現(xiàn)的技術(shù),從我們使用它之后也發(fā)生了很多變化,但不要緊,因?yàn)樗ぷ鞯煤芎谩?/p>

我們確信將 Atom 構(gòu)建在 Web 技術(shù)之上是一個(gè)好的選擇,因?yàn)檎麄€(gè)行業(yè)都在推動(dòng)著 Web 技術(shù)的發(fā)展。原生UI技術(shù)不斷產(chǎn)生又不斷淘汰,而 Web 是一個(gè)每年都變得更加強(qiáng)大和普及的標(biāo)準(zhǔn)。我們對(duì)于深入探索這一強(qiáng)大的技術(shù)感到無(wú)比興奮。

一個(gè)開(kāi)源的文本編輯器

GitHub 的目標(biāo)是幫助大家構(gòu)建更好的軟件,而 Atom 則是實(shí)現(xiàn)這一目標(biāo)的重要補(bǔ)充。Atom 是一項(xiàng)長(zhǎng)期的投資,GitHub 會(huì)持續(xù)投入開(kāi)發(fā)力量來(lái)推動(dòng)它的發(fā)展。但我們也意識(shí)到不能讓它受限于我們的能力,就像之所以 Emacs 和 Vim 在過(guò)去的三十年間被廣泛使用,是因?yàn)橹挥虚_(kāi)源,才能構(gòu)建一個(gè)持久的、有活力的文本編輯器社區(qū)。

整個(gè) Atom 編輯器都是免費(fèi)且開(kāi)源的,你可以在 https://github.com/atom 這個(gè)組織下找到它。