如何評價 Emacs 的配置文件 Spacemacs?
syl20bnr/spacemacs · GitHub
Introduction
You are a Vim user ?
You do not need to know Emacs to use Spacemacs!
You are an Emacs user ?
You do not need to know Vim to use Spacemacs!
===============================更新放前面===========================
大家別看我這個了,這是當時稍微試了一下就隨便一寫,推薦大家看一下一個優秀網友自己錄製的視頻:GitHub - zilongshanren/Spacemacs-rocks: Show you some cool parts of Spacemacs,specially powered by the configs of mine ===============================更新================================有的朋友使用了spacemacs但是沒有發現什麼神奇的效果,原因可能是沒有將各種層的支持加入到.spacemacs裡面。下面是方法:1. 打開~/.spacemacs2. 找到dotspacemacs-configuration-layers , 在後面添加你所需要的功能。3. 想要什麼功能,可以到contrib文件夾里查找。4. 更多的,需要你自己去文檔里閱讀。
follow me!!!
============================以上是更新==============================
今天下午逛知乎的時候無意看到了題主的這個問題,我平時是一個Emacs fans,所以看到這個問題就下意識的google了以下。
然後,就是下面的內容了。
首先, 這不是一個編輯器. 這就是一份配置工程.
vim 有vimrc. Emacs有.emacs.d. 這就是Emacs的.emacs.d配置工程. 它利用了Emacs的evil插件還有別的一些插件, 實現了Emacs中使用VIM的快捷鍵.
為什麼說他是一個編輯器呢?
可能是因為它已經將原生的Emacs改造成了另一個模樣把.我現在使用的配置是[oh-my-emacs](xiaohanyu/oh-my-emacs · GitHub),這是一個非常好的配置。特點如下:
1. 使用Emacs的org-mode模式的babel功能實現了整個工程.講代碼放在了文檔之中,非常有創意.2. 工程結構不錯, 它借鑒了[prelude](bbatsov/prelude · GitHub)的工程結構,比較清晰明了.但是也會因為第一點的一些問題,不是很容易拓展.3. 強大,是真的非常強大.功能非常豐富,大而全.支持非常多的編程語言,尤其是我經常使用的Python, 可以說是完美支持.4. 文檔非常好. 得益於第一點, `oh-my-emacs`的文檔就是程序的注釋,非常非常完善.5. 對evil支持非常好,也就是說在emacs中使出vim的快感.但是!!!!
我看到`spacemacs`之後,我打算換成`spacemacs`.
為什麼呢?
1. 它是我見過最好看的Emacs配置.
2. 工程結構太完美.3. 它是我見過文檔最全,最豐富,最易懂的Emacs配置.比`oh-my-emacs`好好幾個量級.4. 它非常容易拓展,工程結構簡直漂亮.5. 功能更強大.可以看一下這個截圖.6. 開發人員更多.在開源世界裡, 這個工程擁有上千的fork量,開發非常活躍.7. 對evil的支持更加好,它的主打就是evil.8. 它非常精緻.簡直給粗糙的Emacs上了一層美麗的妝.9. 操作更人性化,細節考慮太周到了,畢竟有這麼多人開發.
下面是我隨手截的一些圖片:
這是第一次安裝spacemacs的界面,完全看不出是Emacs,整個安裝過程很精緻.
這是helm補全功能, 做的很好用, 很人性化.遷移到Spacemacs
spacemacs 是 emacs 社區最近比較火的話題,水木上有不少相關討論。我目前使用的 emacs 配置是幾年積累下來的結果,本不想折騰,要遷移過去,想想都麻煩。
禁不住好奇,還是從 github 上下載了安裝包試一試,前幾次安裝並不順利,沒能順利用起來。有這樣幾個問題:
- 提示找不到某個 package。查看了包目錄,此包已經下載,但個別文件大小為 0。解決方法是把此包刪除,重新啟動 emacs 下載安裝。
- 下載包時提示找不到,這是網路問題,掛上 vpn 就行。
解決這兩個小問題後,就能用上了。啟用有點慢,在我 i5 的 PC 上,大約十多秒。我原來的 emacs 配置啟動較快,大約在兩秒左右。默認僅載入很少幾個包,但使用 orgmode 編輯時,lazy 載入 helm 會比較慢,也需要 6 秒左右。 Spacemacs 優點還是很多的,我覺得這幾點做得不錯:
- 快捷鍵歸類不錯,提示也很好。快捷鍵設計成三鍵式,第一鍵又叫 leader 鍵,是空格鍵。第二鍵是功能歸類鍵,比如:file 相關的快捷鍵在 f 鍵下, buffer 相關的在 b 鍵下,搜索相關的在 s 鍵下。第三鍵是具體功能健,比如刪除 buffer 是 d。每次按鍵後,mini-buffer 中有詳細的按鍵提示,告訴你下一步按什麼鍵是什麼對應的功能。基本不用專門記憶,用幾次就熟悉了。
- 即插即用式的安裝,多平台支持,方便遷移。在遠程 vps 伺服器上,下載安裝包後,安裝 spacemacs-base 就可以使用了。快捷鍵和基本編輯方式不用重新學習,比 emacs 裸奔強太多了,也不用把自已的配置文件全部搬過來,還沒那麼多平台差異問題。
- 最小化個人配置。自帶的包配置非常全面,個人只要做些微小的定製修改就能直接使用。版本管理時, .emacs.d直接使用 github 上 spacemacs 的 develop 分支,不做任何改動。自已的配置修改提交到私人 repo,比起原來 50 多兆的配置文件,這樣迷你多了。
目前已經把 orgmode 和 org2blog 配置完成,寫博客是沒有問題了。c-c++模式也啟動了,但還沒有詳細定製,有時間再看看。
Spacemacs配置方法
這兩天摸索了 spacemacs 的配置方法。定製的指導思想,除了 =.spacemacs=文件,不改動 spacemacs 的其它任何文件。以後升級或遷移配置時,直接從 github 下載最新 spacemacs 代碼即可,不用做任何改動。在 .spacemacs 配置中,重定義私有配置目錄為 ~/.spacemacs.private ,自定義 layer 和 snippets 都放在此目錄中。在 emacs 裸奔的機器上,下載並安裝完 spacemacs,再下載私有配置,就能使用了。配置過程中的幾個主要修改點:
自定義私有目錄
在 .spacemacs 文件中,修改以下配置
dotspacemacs-configuration-layer-path "("~/.spacemacs.private/")
修改已有 layer 的配置
spacemacs 中,部分 layer 會有 config.el 配置文件,該文件中保存 layer 的定製修改,但我並不想對 spacemacs 原始文件做任何改動。因為一旦修改了 spacemacs 的 layer 文件,就要把 spacemacs 代碼也納入私有 repo 管理 ,而我希望私有 repo 儘可能小,只有自已的配置,沒有第三方代碼。辦法是有的,在 .spacemacs 中,選擇載入包時,可以直接定製配置。
(auto-completion
:variables
;; auto-completion-front-end "auto-complete
auto-completion-return-key-behavior "complete
auto-completion-tab-key-behavior "cycle
auto-completion-enable-snippets-in-popup t
auto-completion-complete-with-key-sequence nil
auto-completion-complete-with-key-sequence-delay 0.1
auto-completion-private-snippets-directory (concat (car dotspacemacs-configuration-layer-path) "snippets/")
auto-completion-enable-sort-by-usage t
)
添加一個 package
自已原來一直用 org2blog 寫博客,但 spacemacs 中沒有集成這個包,怎麼辦?先用下面命令添加一個 layer,根據提示一步步完成。
M-x configuration-layer/create-layer
完成後,得到 http://README.org 和 package.el 。在 package.el 中,有詳細的說明,怎麼定義此 package 的引用和初始化函數。在定義過程中要用到 use-package 這個包,可以去 github 看下使用方法,簡單來說,初始化 init 部分在包載入前調用, config 部分在包載入後調用。
修改基本配置
如果不需要用到其它 package,只是修改基本配置,直接在 .spacemacs 文件的 dotspacemacs/user-config函數中修改就可以了。
修改完後,不一定需要重新啟動 emacs,使用快捷鍵 SPC f e R 可以重裝載入配置。但有些配置是添加到配置列表中的,重新載入配置不啟作用,這種情況就需要重啟 emacs 了。
Spacemacs WorkflowSpacemacs 的優勢在於預裝了很多有用的 package, 整合到一起,無衝突。並在此基礎上定義了一套方便的快捷鍵。使用 spacemacs 之前,擔心快捷鍵太多記不住。實際上,使用幾次後,發現快捷鍵定義還是很有規律的,而且有按鍵提示,不需要太多記憶。熟悉幾個主要操作後,可以提高 emacs 的使用效率。
打開文件一般情況下,我們經常操作的文件不會太多,都在最近文件列表裡,列出最近使用 buffer 的快捷鍵是 SPC b b 。另外一個比較有用的是 SPC TAB ,在最近使用的兩個 buffer 中切換。
如果要找的文件不在最近列表中,可以使用 SPC f L ,調用全盤快速搜索程序,windows 上默認使用 es.exe ,linux 上默認使用 locate ,快速定位到目標文件。
跳到函數定義在編輯配置文件,或查看 emacs-lisp 文件時, SPC s j 可以在 minibuffer 中列出所有函數列表,選中後司跳到定義處。
搜索字元串搜索功能有幾個常見場景
搜索游標下字元串
使用 vim 的 superstar 功能就,只要按一下 * 就能快速搜索。
搜索輸入的字元串
SPC s s 是 helm-swoop 的快捷鍵,類似於 multi-occur 的功能,輸入字元串,在 minibuffer 中列出該字元串出現的所有列,選擇後跳轉。
寫作 blog
打開 http://blog.org 文件後, C-z 退出 evil 模式,個人感覺在 evim 模式下,使用中文輸入法不太方便。
M-&> 跳轉到文件最後,輸入 blog-drawer ,這是我自定義的一個 snippet,用於創建 blog 標題和 drawer。
* $1
:PROPERTIES:
:BLOG: www.litchisoftware.com
:CATEGORY: ${2:代碼}
:END:
$3
寫完文章後, M-x org2blog/wp-post-subtree-and-publish 發布 blog。這個命令是個自定義函數
;;;###autoload
(defun org2blog/wp-post-subtree-and-publish ()
"Publish the current subtree as a page."
(interactive)
(org2blog/wp-post-subtree t))
一直在用 linode vps,安裝的 ubuntu 系統,遠程用 putty 連接,emacs 是主力編輯器。emacs 配置是 ftp 上傳的,安裝成功後就一直沒有更新過。沒有用 git 託管,配置同步終究是不太方便。今天有時間,決定把 spacemacs 配置同步到 github,再更新到 linode。
我的 spacemacs 配置一共有三部分:一個 .emacs.d 目錄,是 spacemacs 的原始代碼,未做任何修改;一個 .spacemacs.private 目錄,存放私有 layer 和 snippets;一個 .spacemacs 文件,就是 spacemacs 配置文件。
直接從 github 下載 spacemacs 的 develop 分支,作為 .emacs.d 目錄:
git clone https://github.com/syl20bnr/spacemacs.git .emacs.d
git branch develop remotes/origin/develop
git checkout develop
在本地建立一個目錄 .spacemacs.config ,並在目錄內新建兩個符號鏈接,保存 spacemacs 的私有配置,並將這個目錄上傳到 github。PS: junction 語法太 BT,參數順序與 ln 是反的。
junction -s .spacemacs.private ../fj/.spacemacs.private
junction -s .spacemacs ../fj/.spacemacs
遠程 linode 上,下載 spacemacs 的私有配置,並創建符號鏈接。
cd ~
git clone https://github.com/sweord/.spacemacs.config.git
ln -s .spacemacs.config/.spacemacs.private .spacemacs.private
ln -s .spacemacs.config/.spacemacs .spacemacs
啟動 emacs,沒有成功安裝,提示找不到某個 el 文件,查看 emacs 版本太老還是 24.3 的,需要安裝新版本的 emacs-25.1
add-apt-repository -y ppa:ubuntu-elisp
apt-get update
apt-get install emacs-snapshot
由於碼農的潔癖,老版本必須刪除。先查看安裝包的名稱:
dpkg -S emacs
再全部刪除:
apt-get remove emacs24-bin-common emacs24-common emacs24-common-non-dfsg emacs24-nox
啟動 emacs,spacemacs 自啟成功,自動安裝一百三十多個 package 後,成功啟動了。linode 伺服器網速不錯,整個安裝過程非常快。查看 spacemacs 啟動時間,才兩點幾秒,太快了。要知道,spacemacs 在我的 x200 筆記本上啟動時間大約 15 秒多,在我的 i5-2240 CPU 台式機上,啟動時間要 8 秒多,在 linode 上為什麼這麼快?查看了 cpu 信息,原來是 X5 2680 v5 , cache 有 30M,相當 NB 啊。
cat /proc/cpuinfo
前面都是扯蛋
===========當初用 vim 純粹為了撞壁。用了1個月24天攢了200來行配置。然而寫 YGO PRO 腳本其實用 Notepad 就可以了。其實我之前是拿 Xcode 裡面 的 Apple Script 高亮寫(抄) lua,homebrew 也不怎麼會用。事實上最後抄的遊戲腳本還不如配置多。反正都是黑歷史。
然後,用 vim 的第三個月,被一個沒用過 Spacemacs 的 Emacs 用戶安利了。(足以證明這營銷,就和龍族3裡面高天原攔路明非三人一樣……)然後,當然因為最初的動力是裝逼(為什麼公然說出來啊),我也順帶裝了Emacs。用小水管下載依賴包,重啟了三次以後裝上 Spacemacs。看著有一些基佬紫的界面,可惜現在已經忘了那時候有多感動。 那時候唯一比較遺憾的是習慣了寫完東西後用 :wq ,結果 Spacemacs 退出,又要重啟。現在我幾乎沒有用 ex 命令了,就算在vim裡面也是盡量用快捷鍵。
順帶,那個安利我的人,目前只安利成功了我一個,而我目前也沒安利成功過任何人,所以如果你因為我的故事用上了 Emacs/Spacemacs,當然 Vim 也行(真的會有這種事么),請讓我知道。
關於 Emacs Lisp
=============至於 Emacs Lisp,那時候第一次見到如此有趣的語言,感覺語法比 lua 簡單多了。靠水木的葉文彬的中文教程入門,然後折騰 REPL 。多看源代碼的實現能學一些不錯的東西。結果那時候不知道數組是啥,只會列表,原子,字元串,配置最多用用 setq 設置全局變數和加鉤子,宏是啥玩意也是慢慢明白的。
結果看了The Roots of Lisp之後,彷彿醍醐灌頂,讓我這樣的編程白痴出身明白了一些 Lisp 本質的東西,也能開始寫東西了。這篇文章講述了幾個要點,car cdr 是什麼,lambda 是什麼,Lisp 是如何只用7個關鍵字實現的,閱讀 Lisp 源代碼的技巧。Emacs Lisp 現存最接近原始 Lisp 的活化石,雖然語言的具體實現有了改變,但不像 Clojure Scheme 之類變了那麼多,概念上的東西是通的,道理就和不管地心說還是日心說,太陽月亮都在那裡一些。如果真有想像我這樣從 Elisp 入門的奇葩,我作為白痴前輩要告誡你們當心以後用不了別的編程語言,沒有為什麼。我後來學 ruby 都覺得有點痛,「為什麼沒有宏?!」。當然主要是面向對象的東西。ANSI Commom Lisp 裡面有用 Lisp 搞對象(誤)的介紹,結合 Clojure 能很好地入門 ruby。至於 Scheme,如果像我這樣不用修 SICP 的,可以先不用考慮。Haskell 這種…… 不提也罷,在外人眼裡看來和 Lisp 一些都是 SM ╮( ̄▽ ̄"")╭。但是要進階的話,得看看 ANSI Common Lisp 了,很大一部分包都用的是 CL 的東西,雖然 RMS 痛斥這是邪教(我亂說的)。
據說第一個用 Lisp 實現的 Emacs(不是 GNU/Emacs,RMS是看 Lisp Emacs 很成功,再加上 Emacs 原來用的 TECO 不適合做高度擴展,才用 Lisp 重做了 Emacs,也就是現在常見的那個可高度擴展的編輯器)的作者們忽悠他們辦公室的人說「這不是編程」,然後辦公室裡面的文職人員全都會用Emacs 辦公用 Lisp 寫擴展了,個個用得賊6。
所以說 Lisp 這門語言被妖魔化得很嚴重啊。
正文:如何評價Spacemacs
=====================終於說到 Spacemacs 了,歷史和良知告訴我們,不要重複造輪子,在用 Spacemacs 的時候一定要控制自己想從頭搞一份配置的慾望。Spacemacs 並沒有限制你自己搞東西,比如在了解 ELisp 以後會發現沒必要一定用 Layer 作為安裝插件的入口。新上手還是用 正式發布版 比較方便,有時候開發版會有一些不向後兼容的更新,導致配置出錯。我也是在自己的 ELisp 有所長進以後下決心用 develop 版本的,好處是能提早用新功能,順帶參與開發。
有關質量問題,由於不見得所有貢獻者都專精 ELisp,甚至有些小眾工具的 Layer 其主要貢獻者也沒在用,(比如 gnus layer,slime layer),有 bug 是難免的,一般來說這種情況能自行解決出PR是最有效率的(請去看看現在 Spacemacs 有多少未解決 issue),所以就算已經有了 Spacemacs幫忙做好的成套配置, 學 Elisp,學 Emacs 是必要的。以及,很多人學聰明,從 Spacemacs 裡面抄配置。我得提醒一下,目前來說 Spacemacs 提供的不一定是最新的配置,也不一定是最好的配置。比如 Java layer,之前用的 eclim 不見得是很好的方案,新的後端支持正在開發中,然後最近又在鬧那個微軟紅帽聯合搞的 LSP。Gnus 用來讀信體驗一般(evilfied 也不好),mu4e 算不上殺手級。所以我又要安利了,WanderLust 和 Notmuch,mu4e 開發的目的就是做出一個這倆的簡易替代品,所以這兩個的特點就是強大而缺乏說明文檔(許多優秀Emacs應用的通病,所以還是得會 Elisp,我提了第幾次了?)。WanderLust 幾乎沒有中文介紹,唯一?的一份中文簡介:LdBeth/Emacs-for-NoobsSpacmacs 不該作為折騰的終點,對我來說,它是學習編程以及探索 Emacs 的起點。學一件新事物的最大阻礙就是不敢追逐變化。可能以後 Spacemacs 乃至 Emacs 都會被取代,但是求知和鑒別能力會讓你永遠不會對這個時代感到無所適從。
副文:評價 Evil
============由於我只用了沒幾個月Vim,所以不敢隨便給Vim下評價。至少從我的實際使用來看,Evil 的細節很到位,不能說和Vi 100%一樣,但做的很貼心。但是 ex 模式對我這個不做正則替換的人來說基本沒有用,在用上 teco.el (可以在EmacsWiki上得到適用於Emacs 19的第7.9版(我修改了一點來讓它能在最新的 Emacp 上使用),要和Evil一起用得再改一點,我用的是自己秘制魔改支持UTF-8版,恕不公開發布)以後更覺得如此。Evil 對於Emacs 的優點在於能自定義編輯模式,比如 lisp-state,在這點上恐怕是超越Vim的。吹水
======有些自負的我,道出了這種的感慨:
我非常慶幸我在人生重要的抉擇中沒有把編程變成名義上的職業,很多故事都講了人被自己的職業帶來的不幸。可惜我現在沒做出多少可以讓自己自滿的東西。
同性交友
==========對了,如果有誰學的第一門編程語言是 VimScript 的,請一定要私信我,我很願意交個朋友。
最近在折騰各種 Emacs 實現,從GNU/Emacs 的間接分支 SXEmacs 到早期分支 MicroEmacs,新興實現 jed,原始祖先 TECO,每一個都別有風味。如果你有用過其他Emacs實現,歡迎交流。用了4年emacs。之前兩年一直是參考purecell的配置。見證了spacemacs從無到有,並不斷壯大的歷程。
應該來說從來沒有一個emacs配置有這樣的參與度和活躍度。purecell的配置在幾年前可以說是最好的參考配置。然而和現在的spacemacs相比,也有些遜色了。
spacemacs的架構可以說充分考慮了擴展性,以及社區參與。通過layer來隔離不同功能的配置,這樣它可以肆無忌憚包含所有emacs可以包含的功能,然後用戶使用的時候可以挑選自己需要的layer進行啟動。通過use-package非同步載入包,大幅度的提高了啟動速度,再也不用擔心配置太多,啟動變慢了。這樣讓一份配置更靈活,不在只是一個人特色的配置,而是適應一群人的通用配置。讓emacs配置從個人玩具進化成了平台。
最近我放棄了曾經使用的purcell的配置,加入了spacemacs.但這並沒有太影響我的使用習慣和體驗。我依然使用emacs的默認按鍵方式,但多出了leader key的新方式。我把自己老的配置中常用的功能也porting到spacemacs中,這也並沒有花費太多時間,還幫我過濾掉很多自己曾經的無用配置,並大幅度的提高了啟動速度。(剛開始用use-package確實讓我有點困惑,畢竟非同步)
結論就是不僅vim用戶適合使用spacemacs,老emacs用戶也適合遷移過去,關了它操蛋的evil模式就是了。13年的時候開始從 Vim 向 Emacs 遷移,但是很難放棄 Vim 原來便捷的快捷鍵,後來發現了 Evil,瞬間就遷移完成。
之後的故事應該跟大部分 Emacs 用戶一樣,開始自己折騰配置,參考各種配置來完善自己的配置。
15 年的時候聽說什麼結合了 Emacs 與 Vim 的編輯器叫 Spacemacs,就關注了一下,當時有點愣。丫不就是一個配置嗎,怎麼宣傳成一個新編輯器了??Evil 一下就成新的了?
16 年中的時候,忘記因爲什麼原因又開始折騰配置,每次折騰都是一場腥風血雨。然後小夥伴就建議試試 Spacemacs,遷移過程基本順利,需要的功能也都用。不得不說這方面 Spacemacs 做的真是挺不錯的。
個人覺得認爲,Spacemacs 應該是比較強大的一份 Emacs 配置了,但是社區營銷做的太狠了,讓人有點反感。不過如果不做營銷的話,說不定現在也發展不到現在這種程度。靜觀其變, 對Emacs和Vim的詬病和試圖改變的努力就沒停過, 比如NeoVIM Home - Neovim
原來使用@陳斌 的配置兩年,最近換了spacemacs爽的飛起。
小瑕疵還是有一些但是都可以同過谷歌來解決,比以前的配置完成度高很多。
對我來講vim除了比emacs快現在沒什麼不能替代的了
我大概有資格談談這個問題,因為Sylvain Benner是受了我的激勵和啟發才開發了spacemacs:
- spacemacs在我心目中大概是top2的地位,和steve purcell的設置不相上下,steve purcell的配置可能更成熟,唯一的缺點是不用evil
- spacemacs充分利用了evil-leader這個大殺器,一般從vim遷移不過來的人主要還是思想不夠開放,leader鍵用得少(leader鍵是什麼參考這裡vim - What is the &最後,讓我來點心靈雞湯,
成為Emacs高手,贏得世界性聲譽(象Sylvain Benner那樣,給自己掙得近2000顆github星星),實際上不難,關鍵是付之於行動,為社區做實質性貢獻(比如Sylvain Benner把leader鍵改為空格鍵,這是他的主打賣點)。國人應該比加拿大白人Sylvain Benner有優勢,我」一年成為emacs高手「最早是用中文寫的,英文版晚的多。在「一年」一文里我是知無不言言無不盡了,而Sylvain Benner和我的交流只是G+上的隻言片語。但他的執行力是超級強悍的。精神病人們終於擁有屬於自己的編輯器了~
vim其實挺好用的,主要是習慣問題。
看起來不錯,可是為什麼需要vim,當我有一個emacs
如果給如 @陳斌 這種實用性大於意識形態的人。自然很好用。因為它基本上可以把所有的事情都給你做了。而且封裝的很好。整個框架非常明確。總之不費勁。
但是我還是選擇使用Steve Purcell的配置然後自己加點東西。因為Steve Purcell的配置更偏向於傳統的emacs配置,我感覺自己加一些奇怪的東西會稍微方便點。
一句話總結,spacemacs是迄今為止最完整的emacs配置工程。但是它太完整了。
=============
update
我試著在spacemacs的layer機制下折騰我那個奇怪的插件。其實還是能成功的。只不過比直接使用傳統的emacs配置要多很多步驟,而且還不太好折騰罷了。
事實上我對於各種各樣的快捷鍵並沒有什麼興趣。我的工作還不至於要求手速跟上思維的速度。我對evil的操作方式厭惡至極是因為我自己的個人癖好。和2016 MacBook Pro的Multi Touch Bar。不得不說雖然沒啥影響。但是我依然很厭惡一個默認需要經常按esc鍵的軟體。沒什麼,僅僅厭惡而已。
其外,關於custom的問題。我是默認黨。例如我雖然是果粉,但是我對於macOS操作系統沒有恢復默認值按鈕這個事情煩到到處抨擊的程度。我希望在不破壞其工程結構和運行機制的前提下做custom。目前在這方面給的許可權最大,也最容易折騰的輪子應該是Steve Purcell的。
實際上我對spacemacs沒啥真正大的反感,相反,我會推薦新手使用。畢竟這玩意兒封裝的太完整了。(說的自己好像是個老手似的……)
還是那句話:這套配置,成也完整,敗也完整。如Windows般,一定會得到很多人的喜愛。然而也會有不少人煩它。
說句題外話,實際上我是個極其矛盾的人,比如我的實用主義建立在其意識形態必須符合我的觀念之上。但是我有時候又是個極其實用主義的人——比如說服家長從來不管會不會對被說服者造成傷害。只管把任務執行成功就得。但是我的觀念是盡量減少傷害。
所以我的話,聽聽就好。不足以做參考。
update:
目前離開purcell的配置開始自己寫東西了……對我來說BSD-Like License是不可接受的。
青年問禪師:「王菲、李亞鵬、周迅、張柏芝、謝霆鋒都單身了,明星們個體很耀眼,為何在一起就不行?」禪師拿出一碟芝麻、一碟花生、一碟瓜子、一碟核桃、一碟杏仁讓青年分別品嘗,問他:「好吃嗎?」青年點了點頭。禪師又拿出一塊五仁月餅給青年品嘗,青年吐完恍然大悟。
曾試圖轉到 Emacs 然後失敗的 Vim 中毒用戶表示這種在 Emacs 上面模擬 Vim 的東西對我沒有任何吸引力,它不能跑任何已有的 Vim 插件,也不能像 Vim 那樣去配置。
有些人啊,真是圖樣,隔壁的 Neovim 幾乎完全兼容 Vimscript,在它上面做了語法的擴展,還用了目前最快的腳本解釋器 LuaJIT 做後端,還支持 Client/Server,以後可能支持遠程編輯、遠程終端、遠程調試、以及各種語言開發的插件,比那什麼破爛 elisp 高到不知道哪裡去了~
(逃You are a Vim user ?
You do not need to know Emacs to use Notepad!
You are an Emacs user ?
You do not need to know Vim to use Notepad!
圖文無關,摺疊就好……
從2008年開始試圖從vim轉向emacs,共有兩次堅持了幾個月,但是失敗了。好消息是,2015年底轉向spacemacs,成功了,現在正在用spacemacs,非常舒服。
我只想大聲的說 vim是最好的 (hahahahah
第一點就是帥,一下把emacs丑了吧唧的ui掰了回來。第二點就是結構好,lisp哪都好,就是容易成垃圾堆。第三點就是重視evil結合,有的東西想不起來elisp怎麼搞直接就escape到vim快捷鍵搞定。
沒加自己的配置試用了下,起初覺得很驚艷,實際用了下,各種不方便。對於新用戶而言是個好東西,不用一開始就去折騰各種 package,這過程容易嚇跑一大波新用戶。多年的老用戶就沒必要使用了,當然裡面的 package 列表可以參考,收為己用。
這個編輯器最近在Github上非常活躍,前幾天試用了一下,結果一下子被(elisp)噁心到了,說到底還是一個經過精心配置好的Emacs,Emacs的複雜性被掩蓋起來了,但是當我想改一下Evil配置的時候,發現非常折騰,小問題非常多,感覺還是適合Emacs用戶使用。我是重度Vim用戶,Vim現在雖然是勉強夠用,但是還遠遠不夠好,期待NeoVim能改變這個局面。
推薦閱讀:
※想學習 C#,案頭有兩本書(CLR via C# 和 C# in Depth),不知學習順序是怎麼樣的?
※請舉幾個是上下文無關文法而非正則文法的例子?