想來紀錄自己用過的 IDE 與文字編輯器

這篇文章只是將之前在 facebook 的網誌上寫的東西用 org mode 重新做個排版。


IDE 是 Integrated Development Environment 的縮寫,直翻的話是整合開發環境,簡單來說就是將開發相關的功能包好好的一套程式,以程式來說像是 syntax highlight、除錯、編譯、連結、版本控制、專案管理等功能都可以在 IDE 中完成。 IDE 對於初學者或是大型專案的開發來說算是不錯的,很多好用的功能都會被包進去,但是缺點就是因為要支援這麼多功能,不管是在啟動速度或是記憶體消耗量來說都比較大,還有就是介面多半是被限制住的,所以可定製性會差一點。 而因為許多細節被隱藏的好好的對於初學者有時候會少了一些學習的機會。 如果不在意這些的話,IDE 是個不錯的選擇。

文字編輯器,顧名思義就是單純做文字編輯的程式,因為要處理的事情相對單純,文字編輯器在記憶體消耗與執行速度上會比較快,熟悉後在編輯上甚至可能比IDE來的有效率,而藉由擴充介面的設計,也可以利用插件等來達到接近IDE的效果,也因此可定製性比較高,如果是喜歡打造自己開發環境的人是個不錯的選擇。

基本上,不管是選擇 IDE 或是文字編輯器都只是個人的喜好而已,同時在選擇不同的 IDE,抑或是不同的文字編輯器,常常也只是每個人的口味不同罷了。以下簡單介紹我自己碰過的 IDE 和文字編輯器,也算是對自己的學習歷程做個簡單的紀錄。 因為我程式只會 C++,目前最喜歡寫的也是 C++,所以主要會講 C++ 的 IDE 與文字編輯器。


IDE

作為一個普通的正常人,我首先接觸的想當然爾是 IDE,因為教科書的介紹,我剛學 C++ 的時候使用的 IDE 是 Dev C++,跟其他的 IDE 比起來 Dev C++ 的功能算是比較陽春的,但是對於初學者來說還算堪用,它的其中一個優點是可以不產生專案而編譯程式。 有人說這樣會讓初學者不知道如何使用專案,這我不否認,畢竟我是等到了大三的時候才知道如何去使用專案(我從高一開始用 Dev C++ ),可是我認為給初學者的環境應當是簡單的,少了一些步驟,可以先專注在語言的學習上。 而且對簡單的程式來說,開專案反倒有點過頭了。 過去 Dev C++ 曾有一段時間停止開發,這也是一些人不建議使用的原因,因為有許多的 bug 存在,有時候因為這些 bug 而導致編譯不過,反倒成了初學者的阻礙。 後來有人接手將 Dev C++ 繼續更新下去,因此這個問題算是得到了解決,不過現在似乎開發又進入了停滯狀態,從 2015 年後到現在都沒有更新過。 而因為 Dev C++ 好像是使用 Pascal 開發的,所以就算想幫助也無法。(雖然就算是 C++ 也無法幫助就是了,根本沒這個能力)

之後因為在學習使用 linux 時接觸到了 Qt 這個 C++ Framework,當時也想學一點 GUI 的開發,所以就使用了其公司所開發的 IDE Qt creator。 Qt creator 的介面算蠻好看的,加上當時是第一次使用不同的 IDE,所以對它的觀感還不錯。 當時令我印象比較深刻的是對於 class 中變數與函式的 highlight、自帶良好的 Qt Framework文檔、純文字設定檔設定專案、預設較為乾淨的介面(文字編輯器占的比重也較大),支援版本控制等,這是 Dev C++ 所沒有的,但對於程式的撰寫與環境設定上有不少的方便,在學習 Qt 時也比較容易。 同時它也內建 fake vim,可以使用 vim 的按鍵,對於習慣使用 vim 的人還算不錯。 而 Qt creator 本身也是利用 Qt framwork 所寫出來的,因此可以支援不同平台,對於使用不同平台的人來說很方便。 想當初大三大四做專題時為了顯示 layout,還寫了一兩個簡單的 GUI,大四專題則是整個用 Qt creator 來做,不過現在也漸漸感覺到啟動速度有這麼點緩慢。

在開始學習 linux 之後,會覺得只學用一種程式好像不太好,所以為了體驗我也曾試用了一下 visual studio。 也許是因為不熟悉吧,其實體驗後的感覺不是很好。 可調整的東西算是比 qt creator 來的多,但相對較為複雜,想用的功能都不知道要去哪裡找,預設介面也較為複雜。 慢慢研究也許可以調成自己喜歡的樣子,但它複雜的介面讓我有點懶的去調它,因此用沒多久就棄置它了。 而且不得不說 visual studio 真的是有夠肥,啟動速度也真的是有夠久,我想只有等我想學 .NET 的開發時才會再去碰它吧。

基本上我主要碰過的 IDE 就這三個,雖然也有用過像是 ISE、Vivado 等其他語言的 IDE,但因為用的較少,而且我覺得它們的預設介面都有點複雜(雖然我覺得這很難避免),所以就不提了。

文字編輯器

接下來是我現在用的比較兇的文字編輯器,自從用了文字編輯器與學 linux 之後,基本上我都只想用文字編輯器來做事,也算有點中毒了吧,就連 word, ppt, excel 等都有在想要怎麼靠文字編輯器跟其他程式配合來產生(雖然是還沒到這種地步啦)。 值得一提的是,記事本這種東西我並不把它視作這裡講的文字編輯器,用計事本做程式開發根本是個惡夢。

我想我第一個接觸到比較專業的文字編輯器應該是 vim 吧,畢竟在學 linux 和使用工作站通常都會接觸到,vim 也是我現在最愛用的文字編輯器。 vim 和後面會講到的 emacs 算是文字編輯器的兩大經典,還曾經引發編輯器之戰,我看的 linux 書甚至稱兩者為編輯器之神與神之編輯器。 實際使用之後不難理解其原因,儘管現在也有其他熱門的文字編輯器,這兩者的地位還是蠻重要的。 這兩個編輯器的其中一個特點是它們都可以不用滑鼠,藉由按鍵的組合可以達到許多的功能,而這兩者的學習曲線也都算蠻高的,要簡單使用不難,但要用到好需要一段時間。

vim 與一般常見只有插入與取代模式的文字編輯器不同,vim 是一個 mode editor,藉由不同的 mode,讓按鍵可以有不同的效果。 因為這個原因,vim 可以直接使用英文字母與符號鍵做到很多事,也因為手指移動的距離很小,如果熟悉 vim 的按鍵可以達到高速的編輯效果。 而我目前用 vim 之後覺得它最強大的正是它的這些按鍵,因此不管用什麼編輯器自然而然都會想去找有沒有辦法在其中使用 vim 的 key binding。 說實在的,我現在最常用的是 vim 的分支 neovim,目前還算是在觀望,neovim 將 vim 的程式做了精簡,並提昇其擴充的能力,預設跟 vim 比起來是比較好的,不過 vim 好像也受到 neovim 的刺激而推出了功能大增的 vim 8.0,就現在看來對一般使用者的影響還沒有很大,但兩者的後續值得觀察。 vim 除了按鍵之外還有幾個優點,因為主要是在終端機執行,因此 vim 的體積算很小,而 vim 也可以跨不同平台,同時也是多數類Unix預裝的程式,因此如果會用 vim,在大多平台都能繼續使用。

自從學了 linux 之後,反而還蠻關注 Microsoft 在推出 window 10 後的一些作為,而在其中發現了其推出的文字編輯器 visual studio code,當時覺得蠻新奇的就來用用看。 使用後發現幾個特點,首先是內建終端機介面,對我來說這是很方便的功能,在使用 linux 後,也對使用命令介面有點中毒了,連電腦關機都會用指令介面,還被學長罵是臭宅。 我會從 vim 轉到 neovim 的其中一個原因也是因為 neovim 推出了內建終端機的功能。 vscode 也內建 git 支援,也提供 debug 介面。 同時 vscode 也提供了簡易的插件介面,可以直接搜尋,並且按幾個按鍵就可以直接安裝插件,算是很方便的功能。 目前最大的缺點就是不支援 grid layout,這對程式開發來說可是很好用的功能啊。 自從使用了 vim 之後就覺得自由的分割視窗是個好設計。 值得一提的是 vscode 好像是使用類似網頁的技術做成的文字編輯器,因此很容易達到跨平台,另外一個 github 出的編輯器 atom 好像也有用相同的技術。

跟使用 visual studio 一樣,為了多嘗試而試用了 nodepad++,比較特別的它的列編輯,在寫東西時是個很方便的功能,可以一次對多個列寫字,我也因為這個原因去學了如何在 vim 中達到相同的效果。 雖然看到它是用 C++ 而且是臺灣人寫的很高興,但我對 nodepad++的介面並沒有什麼好感,這單純只是喜好問題。 而且它只支援 windows 平台,對於使用多個平台的我來說並不方便。 但不得不說的是 nodepad++體積真的是很小 6MB 左右,不愧是最節能的編輯器。

我也曾安裝過 atom 來看看它的介面,質感算蠻不錯的,也像 vscode 一樣容易裝插件,因為是 github 開發的,所以很容易跟 github 配合。 如果我沒有碰 vim( 太好用 ) 跟 vscode( 關望其成長 ),作為 GUI 我也許會選 atom (不然就學太多了)。

最後講講最近新碰的 emacs,會想學 emacs 是因為想說它跟 vim 是兩大經典,總是得來看看它的特別之處,會在最近學也是因為 vim 用到現在一年多了,算有一定的熟悉度,因此可以來學學新東西。 在碰 emacs 幾天後就可以發現有人說它的擴充性比 vim 好是有原因的,首先 emacs 不像 vim 自己發展了 vimscript 做擴充語言,而是奠基在 Lisp 這個有一定歷史的語言。 emacs 是使用 major mode 與 minor mode 這兩個機制來對一個文件的環境做設定,major mode 對不同類型的文件設置環境,而 minor mode 就像一塊塊的擴充模組,可以插在不同的 major mode 。 還有一點就是,emacs 的所有按鍵都是對應到一個 lisp function。 從概念而言我認為這樣的設計本身就能有比較好擴充性。 與 vim 不同,emacs 是利用一連串的快捷鍵來產生不同的效果,因此也有人戲稱 emacs 為「Escape, Meta, Alt, Control, Super」,這是因為 emacs 快捷鍵用到的大量的修飾鍵。 emacs 是利用套件來擴充功能,一個蠻有名的套件是 Org Mode,是個好用的筆記工具,也可以做時間控管,甚至可以匯出成常用文件格式( 現在偶爾會用來產生 odt 這種像 word 的文件檔 )。 因為研究所事比較多,所以我現在也都用 Org Mode 來管理要做的事,課表也是用 Org Mode 的匯出做成的。 值得一提的是,有人說 emacs 是偽裝成編輯器的作業系統,雖然我還沒有很熟,但隱約可以看到一點跡象。


介紹大概就到這邊,應該還蠻籠統的吧,不過基本上就像前面講的 IDE 與文字編輯器的選擇是個人喜好問題,所以實際使用是最好的測試方式,當然使用不是一兩天,而至少要一個星期不斷使用才窺探到一點東西。 算是做個推銷吧,有興趣的話,vim 跟 emacs 可以都玩玩看,真的可以看到不同的東西。 目前用 vim 也算有點心得,所以有問題的話也可以來問我( 如果有人想問的話 )


Date: 2017-10-03 週二 00:00

Author: Flotisable

Created: 2019-07-15 週一 19:47

Emacs 26.2 (Org mode 9.2.3)

Validate