Categories
程式開發

用了VS Code、IDEA等十幾款編輯器後,我總結出優秀編輯器的特質


本文最初發佈於phaazon.net網站,經原作者授權由InfoQ中文站翻譯並分享。

最近,我一直在嘗試各種編輯器,花了不少時間配置和使用它們。主要有:

  • neovim:我日常的主力編輯器,幾乎所有項目都會用它。
  • IntelliJIDEA:用來對付Java代碼庫。
  • VS Code:我主要用於Rust、TOML和Markdown中。
  • emacs:我很喜歡在Haskell和Rust代碼庫(以及YAML/Markdown/TOML)上使用它。
  • DOOM Emacs:以前見同事用過它(UI的“統一”感和順滑體驗給我留下深刻的印象),所以我嘗試了一下。
  • atom:GitHub的編輯推薦,主要用於Rust、Haskell等。

本文主要談論個人對這些編輯器和該領域現狀的看法(不喜勿噴)。我使用vim,尤其是neovim已有十多年。首先,我會解釋一下自己目前的工作流程、我對編輯器看重哪些方面。當然,文章僅是一家之言,不代表其他人的情況。

一款強大的編輯器應該具備哪些要素

鍵盤佈局

我是法國人。我用的鍵盤佈局可以快速輸入法語並進行編程。其實,我用英語輸入的次數更多,也許應該選擇其他鍵盤佈局,但現在用的這個體驗很不錯,所以一直用它。

這個鍵盤佈局叫歐洲專利局。它要求我用所有手指打字,並且鍵盤上的每個鍵都被分配了一個指頭。這樣可以加強肌肉記憶並減輕手腕疼痛(當我在鍵盤上打字時手腕幾乎不動)。打字準確和舒適的附加好處就是打字很快(我的打字速度為每分鐘120到130個單詞)。

不過,我認為編程時,速度並不重要,所以這裡最重要的部分是舒適度:無論輸入速度如何,手腕都不會動。

模態編輯器

模態編輯器之所以這麼好用是有很多原因的。

首先,我很討厭被迫使用鼠標來完成某些明明用鍵盤就能搞定的事。例如,我在自己的機器上運行應用程序只需用alt d,程序名稱(自動完成會補足程序名稱)並按回車。所有這些全都用鍵盤完成。這種方法是針對firefox、kdenlive等程序的。至於終端應用程序,我只需要在終端中輸入並自動完成即可。

簡言之,我認為用鼠標在編輯器中的光標周圍移動太麻煩了,尤其是我們大多數時間都在寫代碼(即敲鍵盤),因此,用鼠標移動意味著要多次在鍵盤和鼠標之間切換。也許你不在乎,這對你來說很酷,但對我而言,這確實是很可怕的體驗。

另外,非模態的現代編輯器通常使用箭頭鍵來移動光標,但這些箭頭鍵要么在你鍵盤很遠的位置,要么就沒有單獨的按鍵,而要用組合鍵來代替。

這就是模態編輯器的第一個好處。它們更聰明地使用鍵盤來實現簡單而常用的功能,例如四處移動。

第二個好處是它們還有非模態編輯器的模式(即正常模式),你會有一個完整的鍵盤/很多按鍵來綁定常用的許多鼠標動作。你可以將編輯器劃分為幾個緩衝區、在緩衝區間移動、跳轉到段落開頭、搜索和替換、將動作註冊為宏並重播它們,等等。

所有這些甚至都不用挪動手腕。如果你習慣用鼠標,那麼這裡的學習曲線會很陡峭,但一旦你克服了心理障礙,我覺得再回去用鼠標就會非常不適應了。

我喜歡四處移動

程序員在編程時有幾種風格:

  • 在模態編輯器中使用箭頭按鍵或h j k l移動,看光標在文檔中的移動方式就能看出來。通常他們會按住一個鍵,直到光標到達目標行,然後再按下另一個鍵,直到光標到達給目標列,最後再細調光標位置。
  • 使用鼠標,直接點擊想要放置光標的位置。
  • 使用相對數字。這是第一種風格的增強版本:他們通常使用相對數字來定位要快速跳轉的目標行,這樣就不必按上/下方向鍵了。他們會查看代碼行的行數,輸入目標數字就跳轉過去了。接著使用vim中的典型動作,例如$(轉到行尾)、f(轉到在f之後鍵入的下一個字符的第一個匹配項,例如f(將使光標移至下一個(上)、%(轉到匹配的定界符)或w(轉到下一個單詞的開頭)/b(轉到上一個單詞的開頭)等,在一個代碼行上快速移動(這種方法也可以跨行工作)。

絕大多數程序員都屬於這幾種風格之一,但實際上,我自己是個異類。我使用h j k l和第三組中描述的vim的所有動作(我用的動作還要多很多),但這都取決於我需要移動的距離。如果我的光標位於一個單詞上,並且我想移至與我的光標在同一行上非常接近的另一個單詞的開頭,那麼如果相隔三個單詞,我將只輸入www(或者3w)。如果距離較長,我會使用一個名為[EasyMotion]的工具。

Easymotion確實是一個很棒的工具。它有幾種模式,具體取決於你要執行的移動類型:

  • 按行:此模式允許你跳至當前(或所有打開的)緩衝區中的任何行。
  • 按單詞:此模式允許你跳轉到當前(或所有打開的)緩衝區中的任何“單詞”。
  • 按字符:如果單詞模式無法跳轉到特殊的運算符或字符(因為無法識別為單詞),則可以使用此模式跳轉到當前緩衝區(或所有打開的緩衝區)中的任何字符。
  • 它還有其他一些模式,但是我從來沒有真正為它們找到對應的用例。

我習慣的做法是將三種模式映射到lw>c上。

在我的當前緩衝區中鍵入SPC l會發生:

用了VS Code、IDEA等十幾款編輯器後,我總結出優秀編輯器的特質 1

鍵入任何高亮顯示的字符將使我的光標跳至該字符。對於單詞也是如此,命令是SPC w

用了VS Code、IDEA等十幾款編輯器後,我總結出優秀編輯器的特質 2

對於字符模式,輸入SPC c後我必須按另一個字符(我想跳到的字符)。假設我們要跳轉到一個#(不是單詞的一部分),則輸入:SPC c #:

用了VS Code、IDEA等十幾款編輯器後,我總結出優秀編輯器的特質 3

這種移動方式初看上去並不直觀,但一旦習慣就離不開它了。

其他模態技巧

對模態編輯而言,以下是我希望編輯器具備的功能列表,當然不止這些:

  • C-iC-o:這些使我可以跳轉到緩衝區中的某個文件/某個位置,然後返回到C-o之前我所在的位置,或者輸入C-i再跳過去。
  • 宏和寄存器:我​​可以指定單個按鍵將內容粘貼到不同的寄存器(如剪貼板)中。例如,我可以使用”tyit寄存器中添加一些行(”是動作觸發,t是寄存器編號,yi是首尾字母,(是匹配值),然後用"tp剪切這部分內容。宏可以通過指定按鍵來實現更強大的編輯控制,q關鍵字是觸發鍵(例如qa會將之後的按鍵動作註冊到a宏上),然後使用@a重播該宏即可。
  • 所有基本的vim移動方法,例如d(刪除)、y(複製)、c(更改),t(轉到要搜索的字符之前的字符),(轉到另一個定界符),等等。以及更複雜的文本操作,例如“讓我們更改此函數參數列表中的內容,並用(定界”:ci(

總之,編輯代碼時我們需要模態功能。

編輯器

下面就具體講講前面提到的那些編輯器。我會對它們發表自己的看法,根據我的編程習慣給出它們的優缺點評價。

新病毒

我目前使用neovim的TUI版本,因為到目前為止,這帶給我最穩定、最快、最簡單的neovim體驗。我嘗試過多個GUI版本,但沒有找到想要的東西——主要原因是它們幾乎都使用Web™技術,這對我來說是不可接受的。我應該詳細說明一下最後一點的原因。

為什麼不使用Web技術:

  • 在計算機上編輯內容與Web技術無關。其他許多事情都適合用Web技術,但在很多層面上,在編輯器中運行複雜的JavaScript VM/CSS引擎並不是什麼好事情(性能是第一個麻煩)。
  • 大多數時候,基於Web技術的編輯器需要花費很多時間,甚至VS Code都是如此——我的日常編輯器是neovim,它能在23ms內加載差不多50個已安裝的軟件包(你可以使用:profile進行分析以獲得這個數值)。而病毒大約需要12ms。
  • 腳本。用JavaScript或CoffeeScript編寫腳本對我來說很難。
  • npm是有史以來寫得最糟糕的軟件之一。請不要再讓我用它。

我的neovim設置

這裡,我介紹用的幾個插件。我認為大家應該了解這些知識,不要還是把vim/neovim當成是過時的編輯器。事實並非如此。

  • ryanoasis / vim-devicons

    添加許多unicode圖標以便其他包使用,以提供更時尚、更性感的界面體驗。

  • 森河/聲海

    我正在使用的顏色方案。它與DOOM Emacs很像,只是對比度略低。

  • neovimhaskell / haskell-vim

    neovim的Haskell語法支持。

  • 長期休息/ rest.vim

    neovim的Rust語法支持。

  • plasticboy / vim-markdown

    neovim的Markdown支持。 neovim已經為Markdown提供了很好的默認支持,但是這個軟件包有一些很酷的功能,例如折疊。因為我經常使用折疊,所以很喜歡用它。

  • mzlogin / vim-markdown-toc

    一個非常酷的軟件包,提供了一種在Markdown緩衝區中創建目錄的方法,並讓neovim在編輯標頭時自動更新section。

  • 季霍米羅夫/ vim-glsl

    neovim的GLSL語法支持。

  • cespare / vim-toml

    neovim的TOML語法支持。

  • ElmCast / elm-vim

    neovim的Elm語法支持。

  • idris黑客/ idris-vim

    neovim的idris語法支持。

  • posva / vim-vue

    neovim的Vue.js語法支持。

  • 巴斯克維爾/ vim-sxhkdrc

    neovim的sxhkd支持。

  • norcalli / nvim-colorizer.lua

    一個超酷的擴展,可以自動更改包含十六進制值文本的背景顏色,例如#f8324F或#42cf69。

  • 氣刀/ vim-gitgutter

    我安裝的最好的插件之一。它提供了在編輯git版本文件時在緩衝區中看到的標誌(添加、修改、刪除等):它能做的事情還有很多,甚至可以預覽hunk,在編輯器內部暫存或丟棄它們,對我來說太好用了。

  • tpope / vim逃犯

    為neovim提供git中你喜歡的所有功能,包括diff、解決合併衝突、編寫提交消息等。但是我還不太明白這個插件在一般情況下如何處理fixup和squashing問題,因此,我仍然傾向於使用命令行。

  • rhysd / git-messenger.vim

    這是一個blame-at-cursor工具。其實,它也沒那麼有用,因為fugitive已經有了一個git blame窗口,能用commit註釋每一個代碼行。有時我會用這個,但也可能會放棄它。

  • tveskag / nvim-blame-line

    在代碼行的右側內聯一個git blame。很像VS Code中的默認git插件。

  • 六月內

    如果你只想安裝一個插件,那留下來的肯定是它。它有許多功能:打開文件、git文件、緩衝區、rip-grepping、搜索歷史記錄、命令、顏色方案等等。顧名思義,它使用fzf作為後端,因此你會得到非常酷的模糊搜索體驗(其他編輯器很少有這麼棒的搜索——例如,你可以鍵入一些內容,然後放一個空格並再次輸入,就能快速匹配結果了) 。

  • machakann / vim-highlightedyank

    很有意思的包:它能高亮顯示你拖動的線條/對像以獲得更好的視覺反饋。 neovim默認竟然沒有這個功能。

  • 劉成旭/ vista.vim

    我經常使用這個包來獲取符號樹,但我現在不太滿意它的輸出,可能也會拋棄它。

  • 新黴素/coc.nvim

    它是neovim目前最好的自動完成引擎。我也用過其他選項,例如ale,但這個包是王牌。它為你提供了多種語言的LSP補全。它有一個集成的市場,可安裝新的LSP服務器和集成,它甚至還支持一些完全不相關的東西(有點奇怪,我認為這些應該是獨立的插件),例如coc-explorer(它是NERD Tree的替代),coc-snippets等。

  • tpope/vim註釋

    輕鬆註釋/取消註釋行,而無需自己插入註釋符號。

  • 劉成緒/ vim-which-key

    就像emacs的which-key,但適用於neovim。正確設置後,它將為你提供一個可行的鍵綁定的可視列表。我認為它沒什麼用(或許有人安裝的插件帶很多鍵綁定,就會喜歡它吧),但是它看起來很酷。

  • itchyny / lightline.vim

    看起來很酷的狀態行。

  • SirVer / ultisnips

    snippet支持。 ultisnips的代碼片段引擎能力很強,例如通過shell、viml、python等進行插值。

  • honza / vim片段

    常用語言和文件格式的snippet集。

  • 朱尼根/ vim-easy-align

    一個非常簡潔的插件,只需點擊幾下即可輕鬆對齊文本/表格。

  • liuchengxu/vim-clap

    它有一個現代化、快速的用戶界面,在其中統一所有可能的搜索/模糊查找器源。不幸的是這個插件在我這裡還不夠穩定,因此我還在繼續使用fzf。

  • easymotion / vim-easymotion

neovim的優點

  • 它很快。真的是立即啟動。無論我使用的是哪種終端(即使我當前使用的是Alacritty),移動、滾動等操作都會很流暢。
  • neovim的插件和效果確實很棒。我非常喜歡vim-gitgutter;我也很喜歡著色器插件。目前為止,coc.nvim一直很好用(大部分情況下)。 EasyMotion簡直是我的情人。 fzf太快了,快如閃電。
  • neovim的社區對他們的工作充滿熱情,新版本添加了許多非常酷的功能,我們很快將它們引入新的插件中,例如彈出/浮動窗口/用於linter註釋的虛擬文本等。
  • 它是輕量級的:你的內存不至於不堪重負。
  • 我還沒提過vim/neovim的殺手級功能:help頁面。我認為沒有其他軟件可以提供如此出色的幫助頁面。真的,請嘗試一下。你想知道如何配置coc.nvim嗎?只需鍵入:help coc-nvim即可。
  • 帶有插件管理器(我個人使用vim-plug,還有其他很多選項),它們能讓你的生活變得更加輕鬆。

neovim的缺點

  • 儘管我喜歡TUI的速度(到目前為止,我確實還沒見過更快的編輯器),但TUI對我來說,還是很爛。例如,如果你將一個窗口分成兩個緩衝區,則你想要調用的垂直“標記”“邊緣”都是實際的Unicode字符。終端的工作機制可以忽略那些字符,但仍會給人很笨的感覺。如果你想要minimap或某些文本周圍的細邊框,或者想要稍微複雜一些的視覺反饋,基本上都是做不到的。
  • neovim的GUI……不符合我的期望。它們大多數都是基於Web技術的,因此對我來說不是很好的選項。其他基於Qt的客戶端感覺有些過時了。也有人想要做些新的GUI,但他們還沒有準備就緒。
  • coc.nvim有時會感覺很奇怪,容易出問題。例如在編輯Java時,嘗試跳至符號的定義(或只是向上查找符號)時,它經常會超時,體驗很差。
  • 在編輯器運行時更​​改我的顏色方案是在浪費時間,而且會造出來很多損壞的語法高亮模式bug。真可惜!

IntelliJIDEA

這個編輯器,我只能簡單談一談,因為我才開始在工作中使用它(社區版)。我用的是原始版本,幾乎沒有修改。我只用它編輯Java。

IntelliJIDEA的優點

它對Java的支持確實很完美。它能為你做很多事情,其中​​​​一些真的給我留下深刻印象:

  • 允許我在函數內選擇代碼塊的重構機制,要求編輯器“將其移至專用函數中”。其實,所有編輯器都可以做到這一點,但令我印象深刻的是,IntelliJIDEA能找出需要捕獲的變量並將其作為函數的參數,然後在替換要移動的塊時自動傳遞它們。真的很整潔。
  • 查找符號、查找實現的函數、繼承的類、超類……速度都快如閃電,並且都可以很好地呈現給你,我喜歡。
  • 語法高亮很不錯。我特別喜歡var聲明以及將參數傳遞給函數時的內聯類型說明。

IntelliJIDEA的缺點

  • 我正在使用社區版,它僅支持Java和其他一些配置語言。你沒有profiler這樣的東西,將來要是能加進來就太好了!
  • 儘管編輯器的異步部分令人印象深刻,但有時它會時不時索引項目,如果你使用的是筆記本電腦,那就做好電腦全速運行的準備吧!風扇會發出地獄般的聲音,機器會迅速變熱。
  • 我嘗試了Vim集成,但無法正確地與bépo鍵盤映射搭配使用。我無法重新映射某些運動和/或模式開關,結果只能遺憾地禁用它。
  • 沒有Vim支持,即使編輯器有很多快捷鍵,你還是要用鼠標來執行一些非常基本的任務。

VS代碼

這個編輯器是很重要的,因為它是微軟的編輯工具。大家似乎都很喜歡VS Code,我也能感同身受。它的UI流暢、快速——要知道這可是基於Web的編輯器。 LSP支持顯然是很專業而完美的。它有很多社區插件、主題和集成。就算它是基於Web的,總的來說,我也一直很喜歡它。

VS Code的優點

  • 編輯器/UI的流暢度。
  • 語言支持很專業,並且用它編輯代碼感覺很可靠。
  • 數以百萬計的插件。
  • 大型社區和今天的大多數人都在用它,所以我想如果你遇到什麼麻煩,隨便問一下應該就能得到答案。

VS Code的缺點

  • 畢竟,它還是用Web技術編寫的。在所有基於Web的編輯器中,它是最快的,但如果你習慣使用vim/neovim,就很難滿意它的速度了。
  • vim集成不夠好/無法正常工作(我嘗試將h映射到c,請記住我用的是bépo鍵盤佈局)。總之就是沒法用。

emacs和DOOM emacs

我最近一直在使用emacs(原始版本),因為我看到一位同事在使用DOOM emacs,就開始嘗試了。這兩款編輯器放在一起介紹,因為它們非常像。在我看來,emacs和DOOM emacs的關係可以用一個詞來概括:團結。我不知道他們是怎麼做到的,但是所有插件互相之間都融合得很好。我使用ivy界面做自動完成和模糊搜索,一切都做得很好。 UI非常漂亮,主題很棒(我喜歡默認的深色主題DOOM One),編輯器非常快——當然還是比neovim慢,尤其是在滾動時,但總比基於Web的編輯器快得多。

emacs/DOOM emacs的優點

  • 一旦設置正確(更好的默認設置等),這個編輯器就會給人很現代化的感覺(就像你在VS Code/atom中體驗的一樣)。它很流暢且設計精良。
  • Evil模式(Vim模式)對我而言是最好用的(當然,除了vim和neovim本身)。它們涵蓋了幾乎所有內容,甚至還支持EasyMotion!
  • 你可以使用Lisp編寫/配置腳本,這真是太好了! Lisp是一種老派的精英,它已經存在很長時間,並且仍然給人新潮的印象。我很喜歡這一點。
  • 如果你使用的是DOOM emacs,那麼就能免費獲得許多小實惠。它的模塊方法效果很好,並提供了一種非常新穎的方式來啟用/禁用功能。社區有大量資源可以幫你學習使用DOOM emacs,即使你不打算使用emacs或DOOM emacs,我也強烈建議你看一看。例如,我就是通過這種方式發現了我現在在neovim中使用的which-key。
  • LSP集成非常好用。它會為你下載服務器,如果你打開的文件從來沒有連接過服務器,它會禮貌地詢問你是否想要這樣做。
  • 總的來說,emacs和DOOM emacs比vim或neovim等編輯器更具交互性,我認為這種方法更好用。
  • 它使用gtk作為Linux上的主後端。我覺得這一點很值得一提,因為它不是基於Web的!
  • Magit是一個很棒的工具。
  • Org-mode也確實很棒,雖然我覺得它對我來說太大了。
  • daemon模式很厲害,我認為所有編輯器都應該有這種東西。它允許你啟動一個emacs實例並將emacsclient連接到它,從而徹底避免了加載時間。非常厲害,非常有用!

emacs/DOOM emacs的缺點

  • 瀏覽大量代碼時會出現卡頓,有時讓人感到很不爽,特別是當你習慣用vim/neovim的話。大多數時候,這應該沒什麼問題,但是請記住,在emacs中滾動一直是一個問題。
  • 儘管這甚至可以看作是一個優點,但我認為emacs的所有出色插件讓它膨脹得太厲害了,這對我來說是個問題。例如,Org-mode是一個很棒的軟件,如果它是一個獨立的應用程序就好了,能讓更多的人受益。開始使用emacs,意味著你的計算機要運行emacs以及emacs中的所有應用程序。它甚至有一個IRC插件和一個電子郵件閱讀器插件!
  • 我不確定這是怎麼回事,但是LSP服務器感覺……同步嗎?首次打開文件時,LSP服務器啟動,你需要等待幾秒鐘才能進入文件。我真的不知道這是否是因為配置的原因,但總之感覺不爽。
  • emacs的默認設置確實非常糟糕。而且為了讓整個過程像DOOM emacs一樣舒心,你需要花費大量時間閱讀文檔並調整配置。我很喜歡這樣做,但到頭來……為什麼emacs不從一開始就設置好這些默認值呢?這是出於歷史原因,然後現在沒有人在乎嗎?

原子

最後來談GitHub的編輯器atom。我記得我首次運行atom時的第一反應是:“這個編輯器真漂亮。”默認的顏色方案One是大家都熟悉的通用顏色方案。在許多不同的編輯器中都有這個方案的fork。

對我來說,atom看起來很像VS Code,但是前者的UI比較漂亮——與VS Code相比,我更喜歡atom的UI。它的UI流暢且非常乾淨。從LSP集成到Markdown預覽和Vim模式,你都可以找到許多擴展/插件/主題。

atom的優點

  • 對我來說,atom的殺手級功能是它能告訴你,你正在按下的按鍵綁定了(或清除了)哪些命令。很容易調試鍵綁定問題,我希望有更多的編輯器有同樣的體驗。其他編輯器也有類似的功能,但不如鍵綁定的echo模式那麼好用。
  • 它的主題非常酷,整體的打字體驗/自動完成過程非常可靠且一致。
  • 有很多可玩的插件。

atom的缺點

  • Vim模式。它對我來說並不完整,因為它也不能很好地支持我的bépo鍵盤佈局。更糟糕的是,他們在alt-gr上有一個怪異的錯誤(他們在配置中稱其為altgraph),無法正確識別它。有時它可以工作,但我從不記得要解決此問題所必須採取的步驟,而且在大多數情況下,我花了很多時間只為這麼一個非常基礎的功能而已。
  • 太慢了,你能感覺到Web世界的惡意!
  • 有時,編輯器更新後插件會損壞,然後你就少了一個功能。我在使用其他基於Web的軟件(例如GNOME桌面環境)時觀察到這個問題,這讓我越來越懷疑這種技術選擇。

總結

當開始編程時,我記得見過有人談論IDE/編輯器之戰。如今,由於我嘗試了許多編輯器,因此可以說並不存在所謂的編輯器戰爭。所有編輯器都有自己的缺點,選擇合適的編輯器往往取決於個人習慣和經驗。我是鍵盤愛好者(我自己做鍵盤),而且我真的很喜歡打字——不一定是代碼,因此emacs和vim在那時是很明顯的選項(我實際上是從emacs開始編碼的)。幾年後,我開始使用vim和neovim。一年前,我又開始嘗試emacs,想要看看它發生了什麼變化。結果我發現它多出來這麼多有趣的事情!

我喜歡測試編輯器,是因為每個編輯器都至少有一個同行沒有的殺手級功能:

  • vim和neovim具有模態編輯功能,並且速度很快。幾十年來,它們一直是模態編輯的首選編輯器,並且所有運動、宏、命令和助記符在這兩種編輯器中都是實現最好的。
  • 對我來說,IntelliJIDEA有著最好的Java體驗,並有令人印象深刻(非常有用!)的重構功能。它並不是提高你生產力的必要選項,但它會讓你在使用Java代碼庫時感到輕鬆自在,我真的希望在我使用的編輯器中有這麼一個插件!
  • VS Code有最佳的LSP實現,並且它的社區是最大的。如果你喜歡基於Web的編輯器,那就不要浪費時間再尋覓了:它就是適合你的編輯器。
  • emacs和DOOM emacs具有流暢、統一的界面,其中包含許多出色的插件和應用程序。你會非常中意Org-mode、Magit和其他許多插件!
  • atom具有用於鍵綁定的echo模式,用於主題和語法高亮顯示的默認值也很棒,並且是市面上最友好的編輯器之一。

在所有這些編輯器上花了幾週時間後,我對vim/neovim有了一些新看法:我覺得併不一定就要用它們,尤其是我用上了emacs/DOOM emacs的Evil模式。在我看來,一個好的Neovim客戶端可能是像emacs這樣的gtk應用程序:流暢、統一、具有出色的默認設置和對neovim功能的全面支持,以及對gtk浮動窗口和彈出窗口的支持(因為它是neovim原生支持的,在TUI中感覺有點麻煩)。我們有了很多不錯的插件,可用於git(fugitive/vim-gitgutter)、自動完成和語法高亮顯示(coc.nvim/vim-lsp/vim-treesitter)。我唯一缺少的是一個出色的GUI,它可以利用我們在TUI中要做的“hacks”來提供彈窗、“氣泡”之類的東西。一旦有了好用的Neovim GUI,我想這就會是我最喜歡的編輯器了。

在那之前,我會一直堅持使用neovim TUI,因為它與我想要的東西非常接近。我希望本文能對vim/neovim愛好者提供一些參考,幫助大家了解現代編輯器的方方面面。這裡我說的是Vim愛好者,但不是所有人。

我們尋覓的東西都是不一樣的,而這個美好的世界有這麼多編輯器可供選擇,這才是關鍵。

它們並不適合每個人,但每個人都有自己的最佳選項。

原文鏈接:

https://phaazon.net/blog/editors-in-2020