国产精品夜色视频一级区_hh99m福利毛片_国产一区二区成人久久免费影院_伊人久久大香线蕉综合影院75_国产精品久久果冻传媒

您的位置:首頁 >智能 >

我的 IDE 太重了,所以遷到了 Emacs|世界微頭條

2023-02-28 10:25:47    來源:騰訊網(wǎng)

作者 | Renato Athaydes


(資料圖片僅供參考)

譯者 | Sambodhi

策劃 | 褚杏娟

IDE(Integrated Development Environment,集成開發(fā)環(huán)境)是一種偉大的工具,可以使開發(fā)者的生活更輕松。我簡直不敢想象,沒有它們的工作會(huì)是什么樣子。

但是,它們?yōu)槲覀兲峁┑膸椭⒎菬o償,而我也正遭受著這種后果。我使用 2019 年左右生產(chǎn)的、性能不佳的 MacBook Air ,在它上面運(yùn)行我最喜歡的 IDE、Jetbrains 的 IntelliJ IDEA 社區(qū)版,但整個(gè)經(jīng)歷一直都不怎么愉快。

在這篇文章中,我想提出一個(gè)問題:IDE 是否真的需要這么重,以致于我們在數(shù)年前價(jià)值一千美元的筆記本電腦上幾乎無法使用 IDE?

我遇到的問題

使用 IntelliJ 2022.3 的截圖

IntelliJ 是一款非常出色的產(chǎn)品,對(duì)于專業(yè)開發(fā)來說,我根本不會(huì)考慮換成其他東西。因此,在這種情況下,擁有最好的筆記本電腦和最好的工具應(yīng)該是優(yōu)先考慮的。在我這臺(tái)擁有 64GB 內(nèi)存和 10 個(gè) CPU 內(nèi)核的頂配 Mac M1 上,一切都感覺輕盈流暢(好吧,幾乎一切……但在上面運(yùn)行帶有幾個(gè) Docker 容器的 Kubernetes,Mac M1 居然有點(diǎn)跑不動(dòng)了?。?,所以我在工作中沒有任何問題。

但當(dāng)我在家里想做一個(gè)業(yè)余愛好項(xiàng)目時(shí),為了不讓工作與私人事務(wù)混在一起,我試圖將它們嚴(yán)格分開,我寧愿選擇我家那臺(tái)性能較弱的筆記本電腦。

問題在于,僅僅在使用 IntelliJ 編寫代碼和運(yùn)行測試一個(gè)小時(shí)左右之后,這臺(tái)筆記本電腦就變得非常燙手了。風(fēng)扇的噪音越來越大,最后實(shí)在讓人討厭了。

這還不算,當(dāng)你幾乎無法使用任何 IDE 功能的情況下對(duì)內(nèi)容進(jìn)行“索引”時(shí),這個(gè)過程要花上整整一分鐘,甚至更長的時(shí)間……而且那是在花費(fèi)了相當(dāng)長的時(shí)間之后,僅僅掃描要索引的東西!

我還有一臺(tái)戴爾 XPS 13,運(yùn)行的是 Linux,配置相當(dāng)不錯(cuò),但情況也是一樣,而且風(fēng)扇的噪音更大。

我可以毫無問題地看高清視頻、聽歌、上網(wǎng)沖浪和許多其他事情……但顯然,在不是頂配的任何機(jī)器上編寫代碼,要求都太高了。

問題的出現(xiàn)和我所用的語言堆棧沒有任何關(guān)系。例如,我在 Java、Groovy 和 Dart(這些是我最近寫得最多的編程語言)中遇到了或多或少相同的問題。我還注意到,在我使用 Kotlin 和 Java 的項(xiàng)目中,情況明顯更糟。因此,問題看起來跟某種特定的語言或者插件沒有關(guān)系。

盡管這樣說有點(diǎn)傷人,但作為 JetBrains 及其工具的忠實(shí)擁躉,IntelliJ 似乎已經(jīng)變得過重,無法在 2020 年初的筆記本電腦上正常運(yùn)行,而這臺(tái)筆記本電腦又不是很高端的產(chǎn)品。

我最近一直在向 Jetbrains 報(bào)告問題,在最后一次他們告訴我關(guān)閉一些插件,因?yàn)橥ǔ?huì)有一個(gè)流氓插件導(dǎo)致問題……從某種意義上來說,這是對(duì)的,因?yàn)槲乙呀?jīng)禁用了我不太在意的插件(WASM、Scala、Makefile、Clojure-Kit、JMH、Gradianto),這個(gè)問題的確沒有那么明顯了……但它肯定還是存在的。

IntelliJ 替代方案

Jetbrains 正在開發(fā) Fleet,這是 JetBrains 的一個(gè)新的、更輕的編輯器,雖然它看起來很有前途(它非常美觀,考慮周全,非常時(shí)尚),但在我的筆記本電腦上仍然感覺不夠輕……它畢竟使用了與 IntelliJ 相同的后端,這也許就是問題所在(不過這也是一個(gè)很大的優(yōu)勢,因?yàn)?IntelliJ 的大部分出色的功能也存在于 Fleet 中)……

我可能最終會(huì)轉(zhuǎn)向它,但鑒于它仍然存在一些相當(dāng)嚴(yán)重的問題(這很自然,目前還處于測試階段),所以估計(jì)它還需要一段時(shí)間才能準(zhǔn)備好投入使用。

當(dāng)我在十年前使用 Eclipse 的時(shí)候,它是一個(gè)不錯(cuò)的 IDE,但不幸的是,它變得(我最近確實(shí)試了一下!)對(duì)用戶相當(dāng)不友好。我不想冒犯任何喜愛它的人,但現(xiàn)在我不會(huì)考慮重新使用這個(gè)工具了。更不用說,它對(duì)大多數(shù)非 JVM 語言,特別是較新語言的支持非常差,因?yàn)樗呀?jīng)失寵了相當(dāng)長的一段時(shí)間(它曾一度是有商業(yè)頭腦的語言設(shè)計(jì)者的首選 IDE)。

很遺憾,對(duì)我來說,Vim 是一個(gè)我從未想過要使用的工具。我知道有幾個(gè)基于 VIM 的、新穎有趣的 IDE 項(xiàng)目,比如 neovim,考慮到其廣泛的應(yīng)用,這使它成為一個(gè)有吸引力的選擇。但我偶然發(fā)現(xiàn)自己在舊編輯器之戰(zhàn)中堅(jiān)定地站在 Emacs 一邊,正如我們將看到的那樣。我想,有一天,我可能會(huì)跳到另一邊去看看,但那一天并不會(huì)很快到來。

可能有人會(huì)問:為什么不是 VS Code?好吧,我實(shí)際上已經(jīng)安裝了它,但我不能讓自己使用它。在我看來,它的快捷鍵并不符合人體工學(xué)(而且我也懶得去定制它,因?yàn)榻酉聛淼脑颍?,它仍然很重,基?Electron,而且和其他的替代方案比起來,在使用我關(guān)心的語言時(shí),我覺得它很慢。我承認(rèn) VS Code 看起來不錯(cuò),也知道它是當(dāng)今最流行的編輯器,但它就是不適合我。如果你覺得它足夠好,那也可以了……但我肯定需要?jiǎng)e的東西。

Emacs 來拯救?!

這就是為什么我目前正嘗試重新使用 Emacs。

可能你不了解 Emacs,這是一款與 Vim 一樣具有傳奇色彩的文本編輯器,但是它所能做的事情要多得多。它存在的時(shí)間很可能比你活著的時(shí)間還長(當(dāng)然比我還長),而且仍在繼續(xù)發(fā)展!

它是 GNU 項(xiàng)目的一部分,可以說是早期自由和開源軟件的最成功的例子之一。

與我嘗試過的其他軟件相比,Emacs 是非常輕量的(有趣的是,在它剛創(chuàng)建出來的時(shí)候,它被認(rèn)為是一個(gè)重量級(jí)的軟件……事情發(fā)生了怎樣的變化)!最近一些開發(fā)給大多數(shù)編輯器帶來了先進(jìn)的 IDE 功能(當(dāng)然,我說的是 LSP),今天,Emacs 是一個(gè)功能非常強(qiáng)大的 IDE。

它確實(shí)需要任何從未嘗試過的人進(jìn)行初始投資,因?yàn)槟銖囊粋€(gè)現(xiàn)代編輯器中期待的大多數(shù)東西要么必須手動(dòng)配置、要么內(nèi)置,但以完全不同的方式工作。你還需要對(duì) Lisp 有一點(diǎn)了解(Emacs 是基于它自己的 Lisp 方言 elisp 構(gòu)建的),但如果你是那種甚至考慮像 Emacs 這樣的東西可以徹底破解的人,這實(shí)際上也是樂趣的一部分。

我注意到,有更多“開箱即用”的 Emacs 發(fā)行版,如 Spacemacs 和 Doom Emacs,對(duì)于那些想要一個(gè)現(xiàn)代編輯器而不必手動(dòng)配置一切的人來說,會(huì)感覺更舒服。

幾年來,我已經(jīng)成功地將 Emacs 配置為最基本的現(xiàn)代快捷鍵,這些快捷鍵在 90 年代后的大多數(shù)其他應(yīng)用程序中都能使用(比如 Cmd+S 保存,Ctrl+Tab 切換緩沖區(qū)等等)。而且對(duì)我喜歡使用的所有語言(Java、Go、C、Rust、Dart、Groovy、Common Lisp 甚至 Zig)都有很好的支持,包括自動(dòng)完成、內(nèi)聯(lián)文檔、代碼導(dǎo)航(轉(zhuǎn)到定義、查找實(shí)現(xiàn)、返回 / 前進(jìn)到上一個(gè) / 下一個(gè)位置等)、項(xiàng)目范圍內(nèi)查找文件 / 類型 / 符號(hào)、一鍵測試運(yùn)行器以及其他許多我認(rèn)為是 IDE 基本功能的東西。

不過,我的 Emacs 設(shè)置(請隨意取用其中的一些片段),仍不太符合我在 IntelliJ 中得到的開箱即用的效果。

例如,在 IntelliJ 中,配置想使用的 Java 版本是很容易的,不僅包括編譯器,還包括你想堅(jiān)持使用的 Java 標(biāo)準(zhǔn) API 版本(因?yàn)楝F(xiàn)在 Java 發(fā)展很快,這一點(diǎn)很重要),如果你要使用的特性在你使用的版本上不可用,它會(huì)警告你,這點(diǎn)非常好。但在 Emacs 上,這樣做就很有問題,因?yàn)榘凑瘴沂褂?lsp-java 的方式,配置 Java 項(xiàng)目需要通過 Eclipse 完成!

當(dāng)我試圖改變代碼格式,并被迫下載 Eclipse 來改變它的默認(rèn)規(guī)則時(shí),我才痛苦地意識(shí)到這一點(diǎn)(它會(huì)強(qiáng)制刪除換行符,讓行填滿所配置的整個(gè)最大寬度,把代碼弄得一團(tuán)糟——我真想知道,誰他媽會(huì)認(rèn)為這是一個(gè)好的默認(rèn)做法?。?。

另一方面,Emacs 有 Magit,這是一個(gè)令人驚嘆的 Git 用戶界面,感覺很棒。Org Mode 給文本文件帶來了神奇的力量,甚至還有像 elfeed 這樣的東西,它可以讓你不離開編輯器就可以閱讀你最喜歡的新聞(來自 RSS feed 和類似 HackerNews 和 Reddit 的東西)!

但 Emacs 真的更輕嗎?

為了回答 Emacs 是否真的更輕的問題,我實(shí)際上在一個(gè)星期六的 24 小時(shí)內(nèi)截圖了我的筆記本電腦的電池使用情況,當(dāng)時(shí)我花了一天的大部分時(shí)間在 IntelliJ 編碼,然后第二天做了同樣的事情,但是使用 Emacs (在同一個(gè)項(xiàng)目中工作,做非常類似的事情)。

盡管周日我花在編程上的時(shí)間比較少,但我認(rèn)為這些圖片讓事情變得非常明顯。

使用 Emacs 的情況,請注意,在一個(gè)美好的下午編碼過程中,電池曲線出現(xiàn)了平滑的向下傾斜。

在早上使用 IntelliJ 的情況,你可以看到充滿電后,電量被“兇猛吞噬”,在我晚上回到 Emacs 之前,電量就恢復(fù)了正常的使用模式。

并不是說我需要這個(gè)才知道 IntelliJ 真的非常耗電!我之所以知道是因?yàn)楣P記本電腦總是在我使用它的時(shí)候明顯變慢了。像工作區(qū)切換動(dòng)畫這樣的體驗(yàn)變得極其糟糕。

雖然你可以在上面的截圖看到,我充一次電就幾乎可以在 Emacs 上呆上一整天,但使用 IntelliJ 我只花了半個(gè)上午就不得不插上充電器。

然而,我在意的主要問題是,風(fēng)扇的聲音太大,這雖然試圖讓 CPU 保持涼爽,但鍵盤變得太熱,觸摸起來很不舒服。這些因素加在一起,讓我?guī)缀醪豢赡芾^續(xù)在我的小筆記本電腦上使用 IntelliJ,或者至少讓我感到真的很不舒服。

最后的感想

很長一段時(shí)間以來,我一直想寫一篇關(guān)于這個(gè)問題的文章??峙陆Y(jié)果可能不是很有啟發(fā)性。但我仍然認(rèn)為我上面說的話需要說出來。

Emacs 比任何現(xiàn)代 IDE 都輕得多,同時(shí)仍然具有所有重要的特性。我希望 JetBrains 能聽到我的心聲,并把它放在心上、為此做點(diǎn)什么!也許,F(xiàn)leet 就是解決辦法?!

Emacs 很棒,但它基本上是用愛發(fā)電的志愿者在為其努力,因此很多東西感覺真的很不成熟,比如沒有文檔、難以使用等等。這很大程度上表明,只有一家大公司(或少數(shù)公司)支持一個(gè)產(chǎn)品時(shí),用戶才能真正得到一個(gè)完美的東西。但就目前而言,它似乎是我除專業(yè)用途外的最佳選擇。我真的很高興它的存在。

https://renato.athaydes.com/posts/switching-from-heavyweight-ides-to-emacs.html

聲明:本文為 InfoQ 翻譯,未經(jīng)許可禁止轉(zhuǎn)載。

關(guān)鍵詞: 所以遷到了 Emacs

相關(guān)閱讀