Atom, Vim, Visual Studio Code, Emacs 哪個好?

我在自學 Stanford 的 CS107 Programming Paradigms,裡面的第一份實驗就要求用 Unix 和 Emacs (https://see.stanford.edu/materials/icsppcs107/10-Section-Handout.pdf)

是不是這門課有些過時了,現在又出了好多類似的東西。還有必要用 Unix 和 Emacs 嗎?


那課上明確寫明了將會用到lisp語言……

emacs本身就是個lisp方言(Emacs-Lisp)的解釋器,所以要求是對的。

另外emacs不是啥老古董。這項目最近很活躍。而且一直活躍了30年……

你可以去看看@陳斌 的「一年成為emacs高手」,然後再做一些決定。

即使在其他裡面選,也堅決不要使用閉源軟體。否則你那課最後會學不成……


我看過的一篇文章說的不錯,分享一下:

Best Text Editor? Atom vs Sublime vs Visual Studio Code vs Vim

翻譯如下:

最佳文本編輯器? Atom vs Sublime vs Visual Studio Code vs Vim

有了今天這麼多的編程文本編輯器,選擇用哪一個變得令人生畏。

雖然本文沒有直截了當地回答「什麼是最好的文本編輯器?」,在這篇文章中我將與您分享四種最流行的編輯器之間的比較:Atom, Sublime,Visual Studio code和Vim。

在閱讀利弊清單後,我希望你有足夠的信息,以做出最適合你的需要的選擇。

免責聲明 :如同任何比較類文章,其中的一些觀點是主觀的,大多是基於我個人喜好。我是一個使用Sublime for Mac編寫Web(JS,CSS,HTML等)的人,所以我的觀點有點偏向於我的習慣。也就是說,我將試圖儘可能的客觀。

Code

  • 網址: https://atom.io/
  • 費用: 免費 (MIT許可證)
  • 開發商:GitHub上
  • 平台:OSX,Windows和Linux

Atom被描述為:

21世紀的hackable的文本編輯器

Atom是文本編輯器世界的一個新來者,但它自2014年首次發布以來獲得了巨大的發展勢頭。讓我們先來看一下它的主要特性:

能夠為編輯添加附加功能非常重要,這是Atom有優勢的一個領域。 默認安裝了包管理器,所有包都託管在Github上。

在寫作的時候,他們有驚人的6,452包和主題可用! 軟體包對於Atom來說是至關重要的,樹狀視圖和設置視圖等核心功能都是預安裝的軟體包。

編輯和工作流

一般來說,Atom中的一切都相當流暢。 最大的痛點? 確定從頭開始時需要安裝哪些附加軟體包。

比如,我喜歡minimap來幫助我直觀地跳到文件的某部分。 我還需要設置Autocomplete+來使用一些自動完成。 我是一個經常同時處理幾個文件的人,所以設置拆分窗格編輯的能力是必須的。這是Atom支持的一個特性。

我發現Sublime缺乏的另一個很好的功能是支持在樹視圖拖放文件/文件夾。 有了它移動文件是一個真正的享受!

最後,git集成是很好的...它是由GitHub做的!

定製化

能夠定製編輯器以匹配您的開發流程和風格是至關重要的。 就個人而言,我總是需要啟用諸如「保存時trim空白」,「保存上次的文件焦點」,這兩個都很容易在Atom中設置和覆蓋。

Atom對如何重寫style有很好的文檔頁面- http://flight-manual.atom.io/using-atom/sections/basic-customization/

總的來說,我喜歡Atom的配置能力,在基於文件類型的個性化設置上是很強的! 例如,使用Atom,設置JS,CSS和HTML的不同縮進非常簡單。

性能

如果說一個Atom的弱點,就是有時它很慢。 有時,打開文件或在標籤之間切換時的滯後感覺非常痛苦。 當我第一次試用Atom時,性能是一個問題。 它現在肯定已經變得更好,但失望仍然存在。

總結

Atom是一個偉大的工具,特別是對於那些想要輕鬆自定義他們的編輯器,以超越別家提供的功能。 作為一名網路開發人員,調整,添加和擴展您的編輯器的自由,帶來了令人難以置信的權力感覺。 我也喜歡它的文檔。

最大的缺點仍然是性能問題,但對於一個免費的編輯器,Atom已經很耀眼了!

Sublime

  • 網址: https://www.sublimetext.com/
  • 費用:可以免費試用,$ 70的許可費
  • 開發商: 喬恩·斯金納前谷歌工程師
  • 平台:OSX,Windows和Linux

Sublime於2007年發布,所以它已經有十幾年了。 據Stackoverflow的2016年調查它是最受歡迎的開發環境 。

V3 Beta是它的最新版本,雖然它是beta,不過你別擔心。 該產品其實很穩定。

任何Sublime用戶會告訴你,他們安裝的第一個包是Sublime包控制項插件。 我想大家都暗自希望Sublime3默認添加這個包,但是現在,你只需要進入其網站上的安裝頁面 ,並複製一些難懂的Python和...噹噹! 您接下來就可以從Sublime中輕鬆安裝任何包了。

像Atom一樣,Sublime有很多軟體包和主題! 對我來說重要的是:

  • SideBarEnhancements :沒有這個將不支持重命名/移動/複製文件。
  • SublimeLinter :添加不同語言的linter
  • GitGutter -左側的行號旁邊顯示git狀態。

還有很多選擇。 總的來說,Sublime的包支持是非常好的,只是一開始你必須安裝包管理器才能開始使用它。

編輯和工作流

對我來說,在Sublime里使用項目管理是至關重要的 - 它幫助我專註於相關文件。 能夠搜索當前文件和所有文件簡單快速。 我經常不得不在數百個文件中執行搜索以找到一段代碼,Sublime的速度從來沒有讓我失望。

和Atom一樣,一旦你安裝了一些關鍵的插件,真正的力量就會來臨。 獲得正確的語法高亮,JSON格式化,linters等需要一些時間,但是一旦安裝和設置,無需再動。

一個缺點是沒有像樣的Git插件來讓我做diff和改變stage。如有歡迎指正。

定製

再次,Sublime非常像Atom。 諸如「保存上次焦點」,「trim空白」等等是可設置的。 配置文件是簡單的JSON,有一大堆隱藏的設置等待你玩。

性能

這裡Sublime勝過Atom。打開,關閉,搜索等等非常流暢和快速。 我唯一遇到的性能表現的問題是因為性能差的插件 - 但即使這樣,當插件似乎花費太長時間時你會得到一個警告消息。

總結

正如我在開始時提到的,我是一個很長時間的Sublime用戶,所以我的意見在這裡可能有點偏頗,但一般來說,Sublime是一個靈活和快速的編輯器。 它仍然是2016年排前3名的開發環境。

Visual Studio Code

  • 網址: https://code.visualstudio.com/
  • 費用: 免費
  • 開發商: 微軟
  • 平台:OSX,Windows和Linux

Visual Studio Code(VSCode)是文本編輯器世界的一個相對新來者。 它只是在去年(2015年4月)發布,但它已經吸引了很多的注意。 微軟做了一個偉大的工作,創建一個強大和靈活的跨平台編輯器,引起了開發人員的很多興趣。

和我們的其他編輯器一樣,VSCode有一個很好的插件(擴展)生態系統。 擴展管理是內置的,已經有幾千個可用! 和Atom一樣,有些是默認安裝的。

您需要花一些時間挑選最適合您工作流程的插件。 我最喜歡的(也是VSCode給我的興奮點)是Debugger for Chrome。 它允許您在VSCode內設置斷點和調試JS。

可以在VSCode中設置斷點調試Node.js,並在終端中運行時單步執行。

編輯和工作流

雖然VSCode以類似於Atom的方式構建,它實際上速度更快,沒有任何真正的滯後。

我花了一個星期使用編輯器,它很像Sublime和Atom的感覺。 上面提到的調試功能是一種享受。 我還設置了一些IntelliSense自動完成(雖然最初配置比較痛苦)。它的好處開始顯示在一天左右。 我可以通過輸入一個函數名稱,而不必記住參數(或它們的類型)。

作為一個額外的好處,Git集成非常方便。 沒有像我使用SourceTree一樣強大,但對於常見的操作,如提交和diff,它被證明是完美的,加快了我的開發時間。

定製

與前兩個編輯器一樣,預期的自定義功能都有了。如wrap,縮進,主題,語言調整等。

性能

如前所述,它確實感覺很快(與Atom不同)。 我打開/更改文件時沒有遇到任何延遲。 搜索也很快。在任何情況下,性能絕對與Sublime一致。

總結

總體來說,我對VSCode印象非常深刻,我認為某個時間點後我會轉向永久使用它。 我還沒有採取這一步,但我認為這將是一個很好的假期實踐項目。

Vim

  • 網址: http://www.vim.org/
  • 費用: 免費 GPL兼容的許可證
  • 開發商: 布萊姆·米勒
  • 平台:OSX,Windows和Linux

我覺得所有的開發人員應該在某種程度上經歷一個「通過的儀式」:使用Vi或Vim做一個項目。 能夠通過終端編輯或查看遠程伺服器上的文件是一個非常高效和重要的任務。

對於那些花時間掌握了它的人來說,這是一個令人難以置信的高效環境!

有超過14000包,Vim能做一切! 包括樹探索器,語法高亮顯示,主題,Git集成等有各種版本可用。 Vim是非常靈活和強大的。 然而,和上面提到的所有其他編輯器一樣,知道要安裝哪些最佳插件需要一些內部知識和建議。

就個人而言,做為出發點可用去http://vimawesome.com/上看看最流行的插件。

編輯和工作流

首先,對於那些不熟悉Vim的人來說,它本質上是一個命令行文本編輯器。 因此,它不是一些應用程序,你不能雙擊並使用滑鼠移動。打開,關閉,編輯,保存的控制都是鍵盤快捷鍵。

當我在大學時,我們被迫只在Vi上寫整個模塊。 一旦你被迫做這樣的事情,常見的鍵盤命令開始成為你的直覺。 如果你真的想成為一個Vim用戶,它需要真正的努力,但我保證你最後會覺得自己像一個天才!

總之,我認為在Vim工作效率較低的原因是因為我不熟悉鍵盤快捷鍵。 我可以輕鬆編輯單個文件,搜索,替換等,但當工作在多個文件時,我開始不知所措。 所以對我來說,Vim有點太難了。

定製

Vim令人驚訝地可定製。 如果搜索.vimrc ,你會發現很多別人分享的vim配置文件。 總之,任何東西在Vim中幾乎是可能的。

性能

在Vim中唯一的性能障礙是用戶...換句話說是你!如果你是一個Vim強大的用戶,它是驚人的快!

總結

Vim是一個你可以得到的原始的編輯器。 它可以是一個令人難以置信的快速,高效的開發環境,如果你能有耐心地學習命令。 有一個不錯的網路遊戲http://vim-adventures.com/有助於教你基本的命令,比如用hjkl鍵四處移動。

最終總結

所有上述編輯都有自己的優點和缺點。 就個人而言,我會說在你的開發者的職業生涯中,你應該使用每個編輯器至少一個星期,看看自己喜歡什麼,什麼不適合你。 我希望總結這四個最受歡迎的文本編輯器將有助於設立一個良好的開始點。


回答題主的疑問,現在還有必要用UNIX和Emacs嗎?

UNIX作為上世紀70年代開發的里程碑式操作系統,可以說是挑起了當時計算機科學圈的大梁。大量的科學家、黑客在它上面發明了無數有深遠影響的技術、工具、語言, 比如C語言、emacs、vim。

雖然現在較少有人使用原生UNIX, 但從它衍生出來的類UNIX系統可謂桃李滿天下, 比如Linux,、FreeBSD、 Darwin等。其中,使用Linux作為內核的Android和使用Darwin作為內核的iOS更是使它活生生地存在於每個人的手機里。與此同時,由於被各大互聯網公司應用於伺服器操作系統,Linux也通過網路與每個人的生活緊密結合在了一起。此外,還有嵌入式領域、科學計算領域,Linux都佔據著相當大的份額,不再列舉。

可以看到,UNIX在當今社會已經形成了一個巨大複雜的生態系統。類UNIX系統不僅不過時,還在世界中扮演著越來越重要的角色。

再單純從學習C語言、學習編程的角度說。C語言當初就是為了方便開發UNIX系統而發明的,所以C語言的很多特性、很多標準庫函數都有UNIX的影子,比如命令行參數、輸入輸出重定向等等。所以在類UNIX系統中學習和使用C語言是最自然、最舒服的。

綜合以上兩點,大學的計算機系課程選擇UNIX作為教學系統是自然而然的選擇,是必要的、絕不過時的。

再說Emacs。Emacs作為一個幾乎與UNIX同樣久遠的工具,其出生之時就是一個讓當時的黑客們在終端上提高編輯效率的工具,這一點與Vim是一樣的。到了現在圖形化的時代,各種IDE花哨易用的界面的確讓Emacs顯得有點過時,但回到編輯文本這一目的上來,至今Emacs和Vim仍是最高效的編輯工具。而且Emacs作為「偽裝成編輯器的操作系統」具有極其強大的擴展能力,一旦你習慣了它,用它幹了各種事情,就再也不想離開它了。

==========================================================================

答主目前研一,現在幾乎只用Linux了,遇到實在要用Windows的情況就開一個WindowsXP的虛擬機:-)

雙11買了一本很早就想買的古老的《UNIX編程環境》,因為覺得UNIX深入了解起來挺有趣的。有關LInux的發明故事可以讀林納斯的自傳《Just for fun》。

再附上Emacs的使用截圖~這是PHP+HTML

這是C

這是在emacs里用gdb調試C

這是用emacs開Octave(可以看成MATLAB的開源克隆)

這是用emacs的org-mode記課堂筆記,轉成LaTeX、html、PDF隨心所欲

這是用org-mode記筆記後轉成的PDF

這是用org-mode做計劃、記賬

至於用emacs看網頁聽歌煮咖啡這種花哨的玩法我就不提了哈哈,應該沒有編輯器能做到emacs這種程度吧?題主自行選擇,喜歡就好。Table of Contents 附上當初學習emacs的教程,完全面向初學者,是英文的,但很詳細易懂。


由於我給 code 推過代碼(code 的斷行和禁則是我寫的),但是沒給 atom 和 emacs 推過(倒是給 electron 更新過文檔)所以我推薦 code……

(圖標:Nomo Dark Icon Theme;主題:Railgun Theme - Railgun Corona)


Vim

;; 我就是為了讓回答里有個 Vim 的。


借這個題吐槽一下vscode

python插件的調試有蜜汁bug,單步調試時進程必定假死,只能強行stop。

這個bug只在我mac的3.5上穩定出現,自帶的2.7和conda的3.6都沒問題

已經有半年了吧,去報了issue然後最近又試了一下還是不行

雖然平時基本用不到調試,但是知道自己常用的編輯器上有個沒修復的bug,就像襪子上有個洞一樣難受呀╮(╯▽╰)╭

還有vscode對某些庫的自動補全奇慢無比(比如matplotlib)


為 Vim 插件忙前忙後幾個月結果你們連名字都不提,讓我去哭一會兒。


推薦vs code,更新很活躍,插件越來越豐富,今天更新到了1.7,他們新添加的自動安裝typings 的功能。對於vim 輕度用戶,他們的vim插件也很不錯。跨平台都支持!真心推薦!方便!不折騰


Sublime Text 好


Atom,因為 Nuclide 太好用了


故意不說vim,果然是要引戰啊。vim和emacs粉本來就在學術界最多,這妥妥的是從小培養emacs粉的節奏啊。俺雖然是vim粉但是俺教學生linux基本命令從來一碗水端平教nano,雖然我討厭nano.


沒有那個好,因為個個都好,不過我一直烏干達


對於 emacs ,絕對值得一用,畢竟偽裝成編輯器的操作系統不是吹出來的。

然後推薦的是 vs code,微軟的vs已經是世界上最好的IDE了,沒有之一,你覺得vs code會差么,雖然 vs code 與 vs 幾乎沒有半毛錢關係, ,vs code 寫 .net core 或者前端還是不錯的,

至於atom,也是相當好的一個東西,也推薦用一用,至於優點有哪些,不好意思,猛的一下忘了

至於vim,emacs用戶表示,雖然是個好編輯器,但是用它幹啥,我在emacs 裡面都可以打開vim,

最後其實還有一個叫 Nano 的編輯器,也比較推薦,十分小巧可用。


Emacs.

// 我就是為了讓回答里有個 Emacs 的。


當然是看哪個東西對你的語言有完美的intellisense和debugger的支持。沒有的話,還不如用notepad/gedit。


vin,emacs 沒用過,但有用過 sublime,atom,vsc,這邊就說說三個工具的使用感受。

1. 外觀

個人覺得 Atom 顏值最高,但經過字體和主題配置後,Sublime 和 VS Code 也很不錯。

2. 寫作/markdown

Sublime 支持顯示大綱,而且帶縮進的,閱讀的時候很方便,但預覽的時候需要在瀏覽器打開,不夠方便。

Atom 也支持顯示大綱,沒有縮進(看 Github Issue 提了好久,也不見優化),實在沒法看,但可以直接在編輯器里預覽。

VS Code 可以藉助插件 Markdown Navigate 來顯示標題(感謝 rebornix 提醒),而且也支持直接在編輯器里預覽。

3. 前端開發

三個編輯器都寫前端程序都挺好用的,推薦使用 VS Code

1)代碼跳轉:VS Code 支持的很好,支持誇文件跳轉。而 Sublime 似乎是用字元匹配來跳轉的,很不精確。Atom 也支持的不是很好。需要閱讀項目源代碼的,首選 VSCode

2)代碼自動完成提示:VS Code 支持的比較好,很多 JavaScript 方法都有提示,不怎麼用查 MDN 文檔了,而且還能夠識別自己項目模塊的屬性和方法,不用打開那個模塊也可以提示那個模塊的可用方法。Atom 自動完成提示沒有那麼強大,而且默認開啟「Alternate Scoring「,感覺提示的很不正確,還要自己上下選擇,有時候很煩自動完成提示。Sublime 中規中矩,沒有 VS Code 那麼強大,但也不不存在什麼問題。

3)其他的遇到了再補充……

4. 性能

Sublime 啟動速度最快,其次 VS Code,Atom 最慢。

總結:平時看做什麼,再選擇適合自己和適合需求的工具

Markdown 寫作和在資源管理器查看文件的時候,我一般使用 Sublime。

看項目源碼,寫前端程序的時候,推薦使用 VS Code。

沒有最好,只有更適合!


編輯器可以比作火鍋湯底,插件即為你點的菜。

編輯器最重要的是可擴展性,可定製性,而不是本身的功能。從vim,emacs,sublime等編輯器的脫穎而出來看,正是這兩點起到了決定性作用。

atom 具有極強的可擴展性,以及可定製性。

好的編輯器,就像貼身的衣服,atom這種依身定做的衣服,比「名牌」店裡掛著的vsc,選哪個,你說呢?


有必要,至少應該嘗試一下。

感覺很多人的回答都沒有看問題的補充說明啊,

我在自學Stanford 的CS107 Programming Paradigms,裡面的第一份實驗就要求用Unix和Emacs(https://see.stanford.edu/materials/icsppcs107/10-Section-Handout.pdf)

是不是這門課有些過時了,現在又出了好多類似的東西。 還有必要用Unix和Emacs嗎?

題主是要自學CS107啊。課程鏈接如下

Stanford Engineering Everywhere

人家赫然寫著LISP(翻了一下課程文件,似乎用scheme)。我承認場上其他IDE/編輯器在C/C++都自己的獨到之處,但在LISP的問題上還是不要跟emacs爭了吧……

至於UNIX workstation,你隨便搞個linux的虛擬機都可以。在Windows上搭C/C++的環境不難,但要搭scheme的環境,最好還是課程所用scheme方言的環境,恐怕就不是那麼容易了。

另外,如果要用UNIX/Linux,你確定不學一個命令行下的編輯器嗎?nano也好啊……

利益相關:不怎麼寫代碼的emacs用戶。


eclipse 表示「哼」……

JetBrains 情緒穩定……


話說我們公司的咖啡機還真的是可編程的。


推薦閱讀:

C的結構體成員變數的命名有必要加前綴嗎?
dos與unix區別?
為什麼好多人說大牛都玩Unix/Linux?
為什麼 Python(或 Ruby、Perl 等)沒有取代 Bash 成為系統 Shell?
Unix和Linux操作系統有什麼區別?

TAG:編程 | Unix | Emacs | vczh知乎用戶 | VisualStudioCode |