當時把文本編輯器做了一個分類(別在乎這個分類了):
- 武林泰斗——Vi/Vim、Emacs、jEdit(免費、開源、所有平台)
- 武學宗師——UltraEdit、Editplus、TextPad、EmEditor 等(共享、Windows)
- 普通高手——Notepad++、Notepad2 等(開源免費,可替代Notepad)
以上編輯器,除了 Emacs,我都折騰過。一眨眼十年過去了,很多編輯器可能大部分人都不使用了。幾乎和所有事物類似,編輯器也有其生命周期。借用李善友的《第二曲線創新》一書中提到的 S 曲線,無論是技術、產品、公司還是產業,生命周期都符合 S 型曲線。而編輯器屬於產品,生命周期自然也符合 S 型曲線。

圖片來源:第二曲線創新
當然有些編輯器可以說是經久不衰,比如編輯器之神 Vim 和神的編輯器 Emacs。然而由於門檻高,這兩款編輯器相對用戶量會不如新興的編輯器,但它們的用戶都是忠粉。比如我折騰了 Vim 後,現在任何編輯器(或 IDE)沒有 Vim 模式就難受,包括瀏覽器都安裝 Vim 插件,它的模式和快捷鍵方式太好用了。
這次對比選擇哪些編輯器呢?根據自己的接觸,社區的討論和網上的資料,同時只考慮跨平台(Linux、Mac 和 Windows)的編輯器,最後選擇了如下 3 款編輯器作對比。(注意 IDE 不在比較的範圍內,當然文本編輯器和 IDE 不一定好嚴格區分,但一般認為 Goland 是 IDE,而 VS Code 是文本編輯器)。
- Sublime Text
- Atom
- VS Code
這三款編輯器的用戶應該包含了絕大部分使用文本編輯器的用戶。為什麼沒有 Vim 和 Emacs?太難了,很多人入不了門,而且 Emacs 我也沒用過。
注意:本文基於 MacOS 操作系統,涉及到的快捷鍵也是 Mac 系統下的。
Sublime Text
這是一個漂亮的功能豐富的文本編輯器。它是一款共享軟件,購買許可需要 80 美元,不過不購買不影響使用,只是保存文件時可能會提醒你一下。據說該編輯器作者當時辭職,找一個酒店,全身心投入開發,所以收費也是可以理解的,都得吃飯不是。目前最新大版本是 Sublime Text 3,不建議 2 了,因為很多插件可能不支持。
官方網站:
https://www.sublimetext.com。
我印象中,2011 年左右,該編輯器爆髮式增長,特別對前端開發很友好,感覺是超現代的編輯器。我也成為了它的用戶,據我觀察,不少非程序員也在使用它,比如產品經理。為什麼它能夠在眾多編輯器中脫穎而出?經過這麼多年的發展,一起看看有哪些用戶喜愛的特性。
1、Goto Anything
該功能讓打開文件、跳轉到 symbols(符號)、某行或某個詞很方便、快捷,相關的快捷鍵如下:

其實下面幾個基本通過上面 Goto Anything 的對話框實現,你可以:
- 輸入文件名的一部分可以打開文件;
- 輸入 @ 加上 symbols 可以跳轉到對應的 symbols;
- 輸入 # 加上任意字符,可以在當前文件搜索;
- 輸入 : 加上數字可以跳轉到當前文件某一行;
以上的快捷方式可以組合在一起,比如輸入 io.go@Reader 可以打開文件 io.go,並定位到接口 Reader。類似地,io.go:100 將定位到文件 io.go 的第 100 行。
polaris 點評:這是 Sublime Text 編輯器最大的亮點,是開創者,之前編輯器都沒有。正因為好用,VS Code 等編輯器也提供了類似的功能。
2、多重選擇
雙擊文件中某個單詞或選中某個詞,該文件中其他詞會“虛擬”選中,通過 ⌘ + D 擴展選擇,然後修改,這樣可以同時修改多處,起到批量重命名的效果。

polaris 點評:這是不是也是 Sublime Text 的創新點?之前我之前用的編輯器沒發現。因為好用,VS Code 也提供了。
3、分離編輯
如果你的顯示器夠大,可以在一個窗口分離多個編輯區域,可以並排編輯文件。

4、命令面板
Command Palette 保存了各種需要的功能,比如排序、更改語法和縮進設置。只需敲擊幾下鍵盤,你就可以搜索你想要的東西,而不需要瀏覽菜單或者記住模糊的快捷鍵。通過 ⇧*+⌘+*P 打開該面板。也許這也是 Sublime Text 首創,之後 VS Code 和 Atom 都有該功能。
5、生態(擴展性)
極強的擴展性是 Sublime Text 的一大特色。在此之前,除了 Vim 和 Emacs,很多其他的文本編輯器,可擴展性是比較差的,因此也完全沒有生態可言。Sublime Text 的出現,讓簡單易用的文本編輯器也有了極強的擴展性。而且 Sublime Text 的擴展是使用 Python 來實現的,因此很多人可以實現自己的擴展,因為 Python 用戶量大嘛。而且 Sublime Text 可以顯示一個 Console,這個直接是 Python 解釋環境,這裡記錄相關執行信息。

Sublime Text 專門有一個 Package Control,安裝其他包之前需要先安裝它。打開 Command Palette,鍵入 Install Package Control 即可安裝 Package Control。
之後可以通過 Command Palette,鍵入 Install 來打開 Package Control,可以搜索你想要安裝的包。

poalris 點評:吐槽一下,Sublime Text 的這個包安裝界面出來特別慢,而且從這個界面看不到太多詳細的介紹,找到某個包,點擊就是安裝。詳細信息只能通過
https://packagecontrol.io/ 這個站點查看。
6、可定製性
同樣的,除了 Vim 和 Emacs,傳統的其他編輯器大部分可定製性比較差,大多通過配置頁面進行一些有限的配置。但在 Sublime Text 中,可以對快捷鍵,菜單,代碼片段,宏,自動完成等——幾乎一切都是可定製的,這通過一個 JSON 文件實現。除此之外,對於每種文件類型,每個項目和每個擴展(包)都可以有自己的配置項。在“首選項”子菜單下可以看到:

polaris 點評:直接通過 JSON 配置還是有些原始,簡單易用方面還是稍微差了些。
7、內置 project 支持
Project 直接是頂級菜單,可以保存、打開、快速切換項目。多項目管理很方便。保存項目時會生成 Sublime Text 特有的項目文件,記得加入 .gitignore 中。

8、minimap
在文本編輯區域的右側,顯示一個當前文本編輯區域的預覽。這也是 Sublime Text 的首創吧。VS Code 也提供了該功能。
Sublime Text 的缺陷
1、Sublime Text 對字符編碼的支持不全,比如不支持 GBK 編碼;
2、曾經輸入中文,輸入法候選詞對話框顯示特別彆扭,在 Linux 下也有些問題,不知道現在有無改進;
3、更換主題不徹底。比如左側 Bar 和底部的 Console 是白色;

Atom
這是 GitHub 出品的一款開源文本編輯器,大概 2015 年 5 月發布,官方宣稱是一款面向 21 世紀的可編程文本編輯器。所以該編輯器目標是給程序員使用的。
官方網站:https://atom.io/,GitHub 源碼地址:
https://github.com/atom/atom。
因為是 GitHub 出品,自然會有較濃重的 GitHub 特色,有兩大核心特色必須進行介紹。
特色一:Teletype for Atom
Git 讓多人協作更輕鬆、方便,基於類似的理念,Teletype 想讓多人在一個編輯器同時進行代碼編寫。這其實和現在的在線辦公軟件類似,可以多人同時編輯同一個文件。具體操作如下:
安裝 Teletype。這是 Atom 官方的插件,安裝人數不少。

安裝好後,會在 Atom 狀態欄出現下圖紅框的圖標。

初次點擊後出現登錄 GitHub 的彈窗,需要進行 GitHub 授權,授權成功後,會產生一個 token,將其複製粘貼到這個彈窗中。授權成功後,彈窗是這個樣子:

點擊 share,copy 它生成的鏈接,分享給別人。別人加入後就可以一起愉快的進行“結對”編程了,好基友一輩子~

官方有一個使用該插件的演示視頻:https://teletype.atom.io/。
特色二:和 Git 和 GitHub 無縫集成
Git 和 GitHub 內置集成進了 Atom 編輯器中,你可以直接使用。在編輯器狀態欄可以看到相關信息:

和 Git 集成,在編輯器里進行 Git 相關的操作,其他編輯器通過擴展也很容易實現,不過 Atom 的該功能是否更好用,主要體現在 GitHub 官方的實現細節和編輯器對 GitHub 的高度集成了。
其他特色
因為 Sublime Text 的強大影響力,在介紹 Atom 時,甚至會說它是一個類 Sublime 的編輯器。除了配置上比 Sublime Text 純 JSON 的方式更友好外,目前我沒有發現其他更特別的點。唯一值得一提的是 Atom 是使用 HTML,JavaScript,CSS 和 Node.js 集成,基於 Electron 構建的。Electron 是使用 Web 技術構建跨平台應用程序的框架。因此 Atom 依賴 Node 進行包管理,擴展自然也是使用 JS 實現。
此外雖然 Atom 支持 GBK,但當一個文件是 GBK 編碼時,打開卻不能正確識別,雖然通過狀態欄的編碼可以修改編碼格式,但內容卻並不能正確顯示。也就是說,它能保存文件為 GBK,但無法正確打開 GBK 文件。
另外 Atom 和其他編輯器不一樣的地方是,它所有的窗口都跟文件一樣,在一個新 Tab 打開。

VS Code
VS Code 全稱 Visual Studio Code,是一個輕量級但功能強大的源代碼編輯器,同時支持 Windows,macOS 和 Linux。它具有對 JavaScript,TypeScript 和 Node.js 的內置支持,並具有豐富的其他語言(例如 C ++,C#,Java,Python,PHP,Go)和運行時(例如 .NET 和 Unity)擴展的生態系統。這是一個免費開源的編輯器。
從名稱可以看出,VS Code 有微軟牛逼的 IDE Visual Studio 的影子。
VS Code 官方網站:
https://code.visualstudio.com/,GitHub 地址:https://github.com/Microsoft/vscode/,截止 2020 年 8 月 25 日已經有 102k Star。
2015 年微軟公開了首個 VS Code 預覽版,1.0 正式版是 2016 年發布的。發布後受到了眾多開發者的喜愛,我個人感覺把曾經很流行的 Sublime Text 打趴下了,可見其發展勢頭。有 StackOverflow 各年度調查報告數據為證(我們只關注本文討論的三個文本編輯器的變化)。
1、2015 年,VS Code 還未出現在名單中(可能還未發布?)。Sublime Text 是 25.2%。(注意 NotePad++ 只有 Windows 版本,也是老牌的編輯器,可定製性較差,不過較輕量,而且免費,可以替代 Windows 下自帶的記事本)(參與調查人數:26,086)

2、2016 年似乎將 IDE 加入了,因為 2015 年列表中沒有出現 IDE,而 2016 年有。從下圖看出,這三款編輯器中,Sublime Text 依然遙遙領先,雖然 VS Code 出現了,不過才 7.2%,落後於 Atom 的 12.5%。(參與調查人數:50,000)

3、從下圖看到,2017 年 Sublime Text 依然靠前,不過 VS Code 已經超過了 Atom,達到了 24%。(參與調查人數:64,000)

4、2018 年 VS Code 爆發了,達到了 34.9%,排在了第一位,超過了 IDE Visual Studio 和 Notepad++。(參與調查人數:100,000)

5、2019 年 VS Code 已經過半,達到了 50.7%。Sublime Text 才 23.4%,Atom 是 13.3%。(參與調查人數:90,000)

此外,根據 Go 官方 2019 年的調查報告顯示,使用 VS Code 開發 Go 的用戶佔比從 2016 年的 16% 上升到 41%,排在第一位,比 Goland 這個 IDE 用戶量還大;Sublime Text 由 2016 年的 11% 減少到 2%;Atom 由 2016 年的 12% 減少到 1%。

以上都表明,VS Code 獲得了絕大多數人的喜愛,紛紛放棄原來的編輯器,使用 VS Code。
那到底 VS Code 有什麼出色的地方,受到這麼多人的喜愛?
首先我認為 VS Code 也是類 Sublime 編輯器,上文也提到,一些特色功能是 Sublime 首創。但如果只是模仿別人的功能肯定不會如此火爆。一起看看 VS Code 有哪些優秀的特性。(當前 VS Code 版本 1.48.0)
遇見 IntelliSense(智能感知)
用過 Visual Studio 的人應該深有感受。VS Code 繼承了這個優秀的特性。不止是簡單的語法高亮和自動完成,它能夠根據變量類型、函數定義和模塊導入進行智能感知。
Debug 和 Run
一直以來,Debug 能力是 IDE 才有的。對於編譯型語言來說,支持調試還是很有必要的。這方面 Sublime Text 和 Atom 都沒有很好的支持,而 VS Code 有一個菜單 Run 專門支持。

同時跟 IDE 類似,可以直接在打開的文件左邊欄點擊打斷點。演示一個簡單的 Go 程序,點擊 Run -> Start Debugging 或直接按 F5,啟動調試器(編輯器最左側有一個按鈕,可以進入 Debug 模式),如下圖:

已經和 IDE 的調試沒啥區別了。
集成終端
快捷鍵:⌃` 會打開集成的終端。在 Sublime Text 和 Atom 中沒有發現該功能。對於程序員來說,特別是服務端開發,這個真的很需要。這裡面的其他幾個窗口的功能也挺有用。

可擴展性
VS Code 的構建考慮了可擴展性。從 UI 到編輯體驗,幾乎可以通過擴展 API 自定義和增強 VS Code 的每個部分。實際上,VS Code 的許多核心功能都是作為擴展構建的,並使用相同的擴展 API。因為 VSCode 使用 TypeScript 構建,因此擴展也基於 TypeScript。在 VS Code 中幾乎可以找到你想到的任何擴展:畫圖?聽音樂?你想到的都可以試試,它幾乎成為了一個平台。
擴展的安裝也很友好,最左側有按鈕可以直達擴展市場,每個擴展還可以看到詳細信息。同時 VS Code 還會根據你打開的文件智能為你推薦擴展。這個後面文章會介紹到。
此外,VS Code 也是基於 Electron 構建,但資源佔用方面比 Atom 少。
可定製性
這方面和 Atom 類似,通過可視化的方式進行配置,簡單易用。大部分擴展也支持定製。
Language Server Protocol
這個不是 VS Code 特有的,但是微軟最初提出來的,專門為編輯器或 IDE 解決不同語言的特性,像自動完成、跳轉到定義、查找引用等。只要語言實現了這個協議,加上對應的 VS Code 擴展就可以實現這樣的功能。後文介紹的 gopls 就是一個 Go 語言的實現。
同步設置
因為強大的配置能力,每個人可能都會對自己的 VS Code 進行一番配置。家裡的電腦和公司的電腦如何做到用同一份配置?將來電腦怎麼避免再次折騰配置?
VS Code 提供了同步配置的功能。在左下角有一個圖標,可以開啟同步。

選擇同步項,然後登錄微軟或 GitHub 賬號即可進行同步。
其他特色
上面 Sublime Text 中提到的功能、特色,VS Code 都有,使用方式也基本類似,因此 Sublime Text 用戶可以很輕鬆切換到 VS Code。
當然 Git 現在這麼流行,VS Code 內置也支持 Git,同時還有強大的第三方擴展可以使用,後面也會專門介紹。
此外,VS Code 還可以進行 remote container 開發,只要你願意花點心思,定會讓 VS Code 成為你最得力的編程工具、助手。當然如果你不願意折騰,你也可以跟着我一起來玩轉 VS Code。
對了,Sublime Text 和 Atom 都有問題的 GBK 編碼文件,用 VS Code 打開也亂碼,因為識別為 UTF-8 文件了,不過可以通過點擊狀態欄的 “UTF-8”,打開切換編碼窗口,通過 Reopen With Encoding 的方式,選擇 GBK 即可正確打開文件。
不知道你有沒有發現,VS Code 的狀態欄很強大。
總結
VS Code 因為有微軟強大的支持,在各方面確實做的很好,文檔也很全。本文沒有對比具體編程的體驗,這部分涉及到太多具體細節。而且很顯然,本文是推薦你使用 VS Code,因此編程方面的細節體驗,後續只會涉及到 VS Code,只有在某些方面做的不好的時候,才會看看另外兩個編輯器是否做得更好。
我認為,除了 Android、iOS 等這類強依賴特定 IDE 的開發,其他開發都可以用 VS Code 搞定。Go 更不用說了。因此如果你不想花錢購買 Goland,可以從今天開始試試 VS Code,跟着我一起玩轉 VS Code。
關於資源佔用方面,編輯器都是輕量級的,因此佔用資源都不多。相對來說,似乎 VS Code 佔用最少。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/280132.html
微信掃一掃
支付寶掃一掃