代碼如詩。 Code is poetry. ![]() Vim - the ubiquitous text editor 寫代碼本應(yīng)該是很享受的事情,我們有極客高效的 Vim,簡約美麗的 Sublime Text,從小至最為純粹的編輯器,到大至包羅萬物的 IDE。一個好的、美觀的、高效的代碼編寫環(huán)境著實能夠提高一個人的寫作、創(chuàng)作欲望。試想一個人把 VC 6.0 放在你的面前,黑底白字、沒有高亮、沒有顏色,有誰會愛上 C / C++?如果有人在 2018 年向你推薦 1998 年的 IDE,那么你覺得這個人的腦子該如何拯救? ![]() 生命不息,折騰不止。 經(jīng)過近 2 年的摸索,從高中的 Dev C++ 到大一開學時的 Codeblock 與 Sublime Text,到現(xiàn)如今的 Atom,我想總結(jié)一下:一個高效美觀、能激發(fā)一個人創(chuàng)作欲望的代碼編寫環(huán)境到底是怎樣配置出來的。以拯救那些大一剛剛開學,即將或是已經(jīng)被 C 語言 / Dev C++ / VC 6.0 荼毒半年有余的同學們。 壹 → Atom Atom:A hackable text editor for the 21st Century ![]() Atom 首先,介紹工具:Atom 文本編輯器,由 Github 出品的基于 Electron / Node.js 的半開源文本編輯器。官網(wǎng)位于 -> https:/// 為什么我從一眾優(yōu)秀的文本編輯器中選擇了 Atom,而不是 Vim,又放棄了我用了一年多的 Sublime Text? 開源。GitHub 上的大佬叫他是 Hackable 就不是吹的,配置文件是 cson,樣式文件是 CSS 和 Less,所以理論上你可以把 Atom 配置成任何你想要的樣子。 開箱即用。所謂的 Out-Of-The-Box Experience 說的就是 Atom。自帶 4 組 UI 主題、4 組 Syntax 主題,自帶 Markdown 渲染器、代碼美化插件等等。 簡單設(shè)置自帶圖形界面。無疑對我們這些 Spicy Chicken 很用戶友好了,一些簡單的設(shè)置是直接用下拉菜單的形式配置的,不需要打開諸如 vimrc 和 User.sublime-settings 然后費盡心思的直接改代碼。 又為什么我選擇了 Atom 而不是 IDE? 我只能說,就我們這些 Spicy Chicken 來說,寫的代碼還輪不到 IDE 的事情,畢竟剛開始的我們,C / C++ 一個項目不超過兩個文件,一個文件不超過 500 行代碼,用 IDE 來 cmake 一波豈不是很虧。因此我在 IDE 和輕量級可拓展的文本編輯器中選擇了后者,又在文本編輯器中選擇了半開源、可 Hack 的 Atom。以上。 貳 → 配置 Atom 成為寫 C/C++ 的「IDE」 文本編輯器的最大的優(yōu)勢在于你可以通過開源社區(qū)下載,甚至自己編譯開發(fā)「插件 - Plugin」來完善它,實現(xiàn)「開箱即用」中所沒有提供的功能。 1. 寫代碼的時候 一個有情懷的 IDE 基本都會實現(xiàn)代碼自動補全,代碼實時編譯糾錯,以及代碼高亮(為了美麗)和代碼自動整理。很可惜,Dev C++ 沒有,Codeblock 也沒有。因此,我們要完善我們嶄新的 Atom 來實現(xiàn)以上功能。 代碼自動補全 Plugin: autocomplete-clang ![]() 代碼實時編譯 Plugins: linter, linter-clang, linter-ui-default ![]() 代碼高亮 Themes,這里的問題主要在于個人審美,我相信一定有一個美麗的 UI 和配套的 Syntax 主題打動你。 ![]() 代碼自動整理 Plugin: Atom-beautify ![]() 2. 寫完代碼之后 一個能正常操作的 IDE 都能通過,或是綠色箭頭,或是組合鍵 Fn + F5 之類的方式編譯運行。 在 Atom 里我們也可以實現(xiàn): 編譯運行 C/C++ 一鍵編譯:script ![]() 插件 script 實際上是通過識別文件類型來執(zhí)行對應(yīng)的命令編譯源代碼。比如 C++ 的編譯命令實際上是 [Command: bash -c 'xcrun clang++ -std=c++14 -Wall -include stdio.h -fcolor-diagnostics -include iostream '$Path_To_CPP_File$/Test.cpp' -o /tmp/cpp.out && /tmp/cpp.out'],通過快捷鍵 ? + I 直接運行指令來編譯。 ![]() 調(diào)出終端:platform-ide-terminal ![]() 如果不滿意 script 一鍵編譯運行的話,可以通過這個插件喚出終端,這樣直接了當用 g++ -o $File_Name$ $File_Name.cpp$ 這一命令來運行,這時候程序也支持輸入,與 Windows 下 Dev C++ 中默認運行調(diào)出 Command Prompt 小黑框一般道理。同時這樣也方便用 gdb 來進行調(diào)試。 3. 一個有情懷的工作流開發(fā)者的加成 在 ACM 中,每段代碼都是有標準輸入和標準輸出的。在 C / C++ 中我們可以通過這樣的代碼片段來讀取輸入:in.txt 并將程序輸出、程序運行時間寫入文件:out.txt。在保證 C / C++ 源代碼和兩個 TXT 文件再同一個文件目錄下,這段代碼是這樣的: #ifdef SUBMITfreopen('in.txt', 'r', stdin);freopen('out.txt', 'w', stdout);long _begin_time = clock();#endif/* your code here */#ifdef SUBMITlong _end_time = clock();printf('time = %ld ms', _end_time - _begin_time);#endif 同時要在頭文件定義時加入:#define SUBMIT //本地運行這行留下,提交代碼直接注釋掉 這樣在 Atom 中就可以形成工作流:代碼區(qū)域 - 編寫 → 輸入內(nèi)容 in.txt → 編譯代碼 → 查看輸出文件內(nèi)容、運行時間 out.txt ![]() 直觀純粹,效率優(yōu)先。 ![]() 最后,上成果。這樣的 Atom 配置在寫 C / C++ 基礎(chǔ)程序的時候,基本實現(xiàn)了: Linter: 基于 clang 的實時編譯 代碼高亮與自動補全 代碼自動優(yōu)化美化 一鍵編譯運行 終端調(diào)試 我相信,這樣的配置不僅完美的適合小型項目的編寫,還能極大的提升對代碼的敏感和熱愛。至少,這種解決方式,比 Dev C++ 和 VC 6.0 體面,也比 Visual Studio 和 CLion 純粹、輕量。 感謝閱讀。 鞠躬。 |
|