Spacemacs 使用心得

Spacemacs 使用心得

前言

身為一個programmer,一定會用過許多不同的editor or IDE,目前用過感覺不錯的就大概是下面這幾個,

以上順序並沒有按照好用程度安排,上面是列出比較general use的,像對於python而言,當今算是頗強的IDE,應該就屬pycharm了吧,不過這就不列入心得,這邊是註記general use而且偏向editor。

上面這些其實我都有用過才列出來的,最剛開始我是用sublime text,在他剛出來的時期,真的是輕巧,好用,就算是現在應該也不少人在用啦,對於我本身是用python開發的,也有套件支援一些比較基本的 code completion, find usages 等等功能, 只是之後就出現基於electron開發的editor, vs code和atom這兩者都是,這兩個都不錯用,我後來也從sublime text轉到atom,原因其實很簡單 :) 因為atom的theme十分漂亮,畢竟electron嘛~ 可以輕易用css刻介面,而且老實說插件品質也不錯,另外sublime text感覺已經幾乎沒啥重大更新了,另外關於vs code我只能說如果你的專案是前端相關的,後端又是用nodejs,那我想這個絕對非常符合你的需求,另外專案如果很肥,用vs code會比較順,許多朋友用過也是說vs code效能比較高,甚至有朋友說他電腦用atom,有時候會當@@ 我個人是沒遇過啦~ 這邊就不引戰 :p

或許你們會說用一個編輯器熟悉熟悉就好,幹嘛學那麼多套,其實我也這樣想過~ 其實我當初以為atom我會用挺長的時間,只是莫名的我發現spacemacs,試玩過後,我發現似乎回不去了xd 可以先跟你說說atom可是有插件特意學他的快捷方式呢~ 首先就先來大致上的介紹一下spacemacs

正題 spacemacs

一進去官網你會看到大標寫說,他是community-driven,好啦,現在應該大都是這樣了,重點是接下來你會看到的三個單字

  • ergonomics
  • mnemonics
  • consistency

第一個人體工學? 很好,我當初看到也覺得只不過是一個編輯器,是在人體工學啥? 這邊個人認為是快捷鍵的問題,emacs一直以來被人詬病的就是快捷鍵充滿的Ctrl or Alt的prefix,就是說你得先按ctrl or Alt的輔助鍵再按其他鍵,實在很難按~ 按久了手指可能會有問題吧,雖然一堆emacs神手說,好按、有邏輯,但是我用了不到一個禮拜就先放著了xd 阿! 這邊忘了說,其實emacs我很早有碰過,但是沒特別繼續深入就先放著了,實在上手度太高,那時候反而是學vim先,學了一些基本的text object move, edit的東西,這邊也造成我後來要用的editor都一定要有vim mode,實在不得不說就是好用! 編輯快速!

第二個記憶法,這邊指他的快捷設定是有邏輯的設定, 舉例: 他的快捷開頭是要先按 SPC (空白鍵)

  • 要看buffer list,就按 SPC b b
  • 要看project的buffer list,就按 SPC p b
  • 要看project list, 就按 SPC p l

看到這邊大家迫不及待想試試到底有多麼厲害吧~ 接著就來安裝

安裝方法其實不難,首先先裝好emacs,然後github有教怎麼安裝spacemacs,其實~ spacemacs說穿就是一個幫你整合各方好用插件,然後自己本上有個類似插件loading system去管理的 emacs 設定檔, 所以安裝就是把github整包丟入 ~/.emacs.d,簡單明瞭,接著就是開始emacs,就會自動下載安裝啦,過程中會問你的什麼習慣忘了xd 反正就是選擇, 印象中是會有問你想要使用 evil 嗎? 這邊我當然選是啦~ evil 就是 vim-mode, 老實講 evil 是我用過,模擬vim快捷,模擬最齊全的套件了,真的很強,他連vim的ex mode都有, 舉例來說就是 1,3d 把一到三行的內容刪掉這樣,evil 可是可以做呢~

安裝完畢後,當你按下神聖的SPC ,你就會看到下面有彈出提示如圖preview img , 這是其中之一的原因讓我回不去,我只能說這太屌了,我不用硬是把各種快捷功能記下來,我只要用mnemonics way,去記憶相關大概鍵就好,剩下都會有提示,實在很棒,然後其實emacs功能實在是太多, 其實不是每個功能都會配置在 SPC x x 上面,這時候你就可以用 M-x (M是指meta key通常是指Alt鍵啦),不知道mac上是怎樣喔~ 我沒用過mac, 按下 M-x,可以進行功能搜索,打出你要的功能名字就可以使用~ 這也是我很喜歡的功能!

再來就是emacs的window manager和buffer的概念,讓你檔案之間跳轉阿,編輯,或是查看code,文檔之類的十分好用, 幾乎是只要開啟emacs後,就可以做幾乎任何事了,甚至emacs內建 terminal emulator,算是不錯用,雖然個人目前還是幾乎在作業系統上的terminal做事比較習慣。

preview image
上圖示範就是window隨意切割,另外鼠標跳轉也很方便,SPC w [H J K L], 左 下 上 右, 視窗間跳轉,spacemacs本身功能就算是非常齊全了,想當然爾身為一個好~~~用的editor,一定都有所謂的plugin系統,這邊只要SPC f e d, 就會跳去設定介面,在spacemacs裡是叫做layer

preview image

上圖就是內容,如果你想要讓你的editor,對python擁有像ide般一些功能,就把python加入後並儲存,之後要進行refresh, SPC f e R,等待下載安裝完成就可以開始享用啦 :)

第一次用emacs很多疑問?

我只能說是的,基本上網路上教學不少,但是沒很深入! 可以先簡單看過後,邊用邊學,然後其實emacs本身就充滿文檔說明,所以他也常常被說 self-documented, 你可以按 C-h,就會看到下面跳出,提示,按下相對應鍵,就會看到針對什麼功能做說明, 我常用的是 C-h b ,可以幫你找到對應功能的key binding, 另外有一點很重要,有些模式下按? 可以得到提示按鍵說明,像是你在neotree視窗裡面按下? 就會有說明,比如按 c 就可以創造檔案之類的,是個好用的訣竅。

再來就是可以針對emacs的某功能進行網路搜尋解說了,因為emacs其實本身就是用elisp寫的,其實本身就是個超級插件大集合啦xd , 所以一定會有相關說明,當然如果你本身懂lisp,我想你大可直接進入源碼,或許會看懂不少東西? 我是沒看過啦 哇哈哈~

目前工作上使用方式

因為我是用python開發,version control是用git,所以其實跟spacemacs剛好也很搭拉xd 尤其是spacemacs用magit,這個實在是超級好用!!! 為此特別稍微介紹一下magit,我只能說真的讓我不用在terminal打那麼多東西啦 :) 不過用慣IDE的人就看過去就好xd

magit

實在不得不說,這個真的是一個另我對gui介面類型?git的軟體有所改觀的東西,以前用過source tree類型的軟體,算是好用啦,但是說實在的,專案一大每次loading都要一段時間,而且操作彈性實在不大~ 或者其實是做的到的,只是不好找怎麼點,說到這裡你一定還是很好奇,magit厲害在哪? 其實應該這麼說,搭配spacemacs+evil,實在好用,舉例

首先SPC g s,這樣就會進入mgit模式,接下來呢? 不知道可以按什麼鍵對吧? 記得前面講過的在很多模式下你可以按,就會跳出提示,如下圖的右下角

image

有看到s快捷指的是stage吧,再來對於這功能來測試看看

選擇我想stage的檔案

只要進入visual mode,選到你想選的檔案,再按s鍵(快捷鍵),就相當於 git add [files you choose]

藉由類似這種搭配,像是commit,diff之類的,其實視窗跳轉都在emacs內,非常方便,而且一堆git指令都有綁定按鍵,像是pull from origin,按個 p u 之類的, 讓我雙手保持不離開鍵盤,同時又可以讓我非常快速的進行version control,以前我都是用terminal直接打指令,老實講打到手好酸阿xd 哈哈,magit就像magic一般,我沒想過可以享受輕鬆的按幾個鍵,就可以做完這些version control。

可惜的是目前只有git有這麼棒的套件,mercurial個人是還沒看到~

python

spacemacs本身就有個python layer,做了挺完全的功能支援,尤其是虛擬環境挺容易啟動的(, V a),追尋源碼(使用evil的話,快捷是g d十分方便),還有對於ipython repl的一些send code buffer的功能,這個好用,對於想要即時試用部份代碼的功能是否正常運行很方便,個人常用, s R 這會將我目前選取的code傳進ipython的repl。

debug的話,目前個人還是在terminal裡使用pdb, emacs本身是有作結合啦,就是GUD,讓你像一般ide debug那樣的fu,但是我沒有特別使用,所以這邊就不多敘述了。

總結

我這邊講到的還只是spacemacs冰山一角,他的layer(plugins)實作非常豐富,對於我工作上,開發效率是有所提昇的。唯一比較讓我比較卡的地方可能就是,因為emacs都是用elisp寫的,所以你要改插件或自寫插件會比較麻煩~ 除非你本身就滿懂lisp的, 總之呢,spacemacs還有很多東西可以去碰,去學,像是macro, undo-rings 有的沒的,現在我也才用spacemacs大概兩個月,而且也沒特別深入學習,因此暫時只能記錄這些心得。

tags: editor