1. 程式人生 > >如何評價 GitHub 釋出的文字編輯器 Atom?

如何評價 GitHub 釋出的文字編輯器 Atom?

用過不少編輯器:UltraEdit / EditPlus / (G) Vim / GEdit / NotePad++ / TextMate / ProgrammerPad / Sublime 。確實是工作上用他們寫過程式碼的。而 VSC / Emacs 只是體驗了一下基本使用方法,算不上真用。用下來的結論是:Atom 比 Vim 更 Vim,比 Emacs 更 Emacs,同樣,比 Sublime 更 Sublime。

Atom 唯一的槽點就是“卡”,不過那是去年的情況了,1.0後效能數次大提升,比起sublime/vsc之類雖不算流暢,但同時編輯20個數千行的檔案沒有壓力。如今讓人感覺慢的地方主要是啟動loading(也大大短於eclipse, idea),使用時並沒察覺它比其他編輯器慢再哪。而文字編輯器的快慢,更重要的是“讓你工作更快更有效率”。下面說說為何 Atom比其他更有效率:

相容VIM模式

這無疑團結了一大班 Vim過來的使用者,Sublime雖然也有VIM模式,但是Sublime在 mac下面的vim模式有bug,我習慣用 hjkl來移動游標,sublime再mac下hjkl移動有問題,且我習慣CTRL_[來返回NORMAL,手指不離開主鍵盤區,而sublime的vim模式只支援ESC返回,加上其作者經常神祕消失,最穩定的2.x版本已三年沒有更新,這些問題一直得不到修正。

由於Atom的定製程度直追 Vim/Emacs,它的vim模式能夠使用外掛來實現,而不像sublime必須builtin,Atom的VIM模式除了官方實現外還有很多使用者實現,各有所長,你不喜歡可以換,Sublime就傻逼了,覺得builtin的不行,你就沒辦法了,而且作者不更新你也沒辦法。

Atom裡的Vim模式並不是強制的,你可以用也可以不用,這樣入門使用者也不會覺得困難,但是如果你用慣Vim的話,使用Vim模式可以取得更好的效率,我覺得Vim/Atom-VimMode能夠提升效率的地方有以下三方面:

1. 手指不離開主鍵盤區:
所有功能皆能在主鍵盤區完成,不用去按方向鍵,不用把手挪去按Home/End,更不用動滑鼠。就像詠春中強調中線理論,認為一切動作圍繞中軸線開展,守護自己中軸線的同時攻擊別人的中軸線。Vim/Atom-VimMode中,雙手不但從不離開主鍵盤,並且八根手指隨時守護再HOME位(ASDF, JKL;)有動作就移動,然後馬上歸位。

2. 細粒度微操作:
星際/dota玩的好,微操基本功,微操又快又精確,Vim/Atom-VimMode一樣,比如:
if
(xxxx) { }
很多人編碼時習慣“成對編碼”,寫了申請資源的程式碼,先把釋放資源寫了,寫了左括號,先把右括號給補充完,當你寫完第二行程式碼時,需要用到“再1-2行中間插入一行”,此時你的游標停留在第二行,傳統編輯器你需要:按上箭頭移動游標到第一行 -> 按END鍵去到第一行末尾 -> 按回車插入一行,mac下的END鍵還需要用CMD+右來組合出來,而Vim/Atom-VimMode中,你只需要shift+o即可,手指完全不離開主鍵盤區,不用像傳統編輯器那樣,右手先移動到箭頭區又移動到HOME的小鍵盤區,再移動回主鍵盤區這麼麻煩,類似還有:
使用o直接再下一行插入,避免 END/回車
使用I再行首插入,避免移動半天游標。
向前/後移動一個單詞到單詞頭、尾。
快速更改當前單詞,用/來快速搜尋移動游標。
dd+p來快速移動程式碼塊,取代shift+方向鍵半天。
shift-j 來兩行合併成一行,代替 HOME, back 若干次。
。。。
你再編輯程式碼的時候,90%的情況可以直接一步完成,這就叫細粒度微操,而且整個過程手都不需要離開主鍵盤,不像傳統編輯器那樣,若干笨重的操作組合再一起,操作不夠細步驟多的同時手還要再:主鍵盤區,方向鍵區,擴充套件鍵區 來回移動,效率奇低。而Vim/Atom-VimMode下,手指隨時守護在home區(ASDF JKL;),所有微操都是圍繞HOME區進行,不會移動到任何主鍵盤以外的區域,更別說用滑鼠、觸控板。

3. 批量操作:
比如要給下面程式碼每行後面加一個分號:
var
x = 1 var y = 2 var z = 3 console.log('result is ' + (x + y + z).toString())
一般做法是:移動游標到行末->END->分號->移動游標到下一行,Vim裡面不需要移動游標到行末,只需迴圈敲入:“A;<ESC>j” 即可,本來操作就少很多。這還不是最少操作,更少操作是利用Vim裡面的句號“.”功能重複上一次操作,即第一行“A;”補充了一個分號後,第二行只需要按一下"."即可重複,於是最後操作變為:
第一行:A;<ESC>
後面所有行:J.

超級爽快的操作,這樣的操作還很多,你還可以單條命令對一萬行程式碼重複上述步驟,或者把c程式碼拷貝到go裡面先一句話把所有分號給刪除了。Vim下面的名言:絕不重複。

總之如果你熟悉 VIM模式,用 Atom能感到完全自由的方式,隨心所欲的書寫程式碼,而不是被書寫這件事情費腦筋,解放大腦完全用於思考而不用於打字。但是同時對不習慣VIM的人照樣友好,或者對想使用VIM的便利卻又痛恨VIM這個軟體的簡陋的人帶來了福音。