如何評價 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. 打開~/.spacemacs

2. 找到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里的終端, 使用emacs的朋友可能詬病emacs的終端不好用,不支持clear命令, 這一次spacemacs做的非常好, 而且支持clear命令.

這是打開Python文件之後,使用IPYTHON進行調試.

卧糙, org-mode還有這樣玩的. 珍妮馬...

看看spacemacs支持哪些東西.

支持哪些語言?

當然,肯定不止這些..


遷移到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 Workflow

Spacemacs 的優勢在於預裝了很多有用的 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上使用Spacemacs

一直在用 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-Noobs

Spacmacs 不該作為折騰的終點,對我來說,它是學習編程以及探索 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 & in a .vimrc file?)。我是一旦意識到leader的潛力,立刻反過來把vim按照我emacs的快捷鍵重設了一遍

- 諸如是否太重量級的問題實際不是問題,autoload就是解決方案。此類優化技術在頂級配置中必定都早已應用了

- 對於emacs的一些封裝也是高手通用做法,比如~/.spacemacs就是~/.custom.el,只不過名字不一樣罷了,雖然emacs老用戶可能有點不習慣,但這是一種營銷手段,目前看來挺成功。

-Sylvain Benner這個人我是很看好的,能力非常強,一點就透,比如我在reddit上說vim tutor是入門emacs的捷徑,他就立刻開發了evil的對應版本evil-tutor,然後通知了我。

最後,讓我來點心靈雞湯,

成為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),不知學習順序是怎麼樣的?
請舉幾個是上下文無關文法而非正則文法的例子?

TAG:互聯網 | 編程 | Emacs | Spacemacs |