Re: [emcs] Spacemacs 融合vim与emacs

楼主: upplysa (opplyse)   2015-12-06 16:21:55
分享一下我的 Emacs 调教之旅:
2013 接触 Emacs 的时候,设定档 init.el 都是从网络上剪剪贴贴来的。
随着时间推移,init.el 变得越来越杂乱,毫无章法。
就在此时看到了 coldnew 在板上分享用 org babel 来整理 init.el,
觉得非常棒,我也依样画葫芦地用了 org babel 来整理我的 init.el。
用了一阵子以后我还是不满意。
(我相信所有的 Emacs 使用者都一样,永远都在改进自己的 init.el。)
不满意的地方是开启 Emacs 的速度,与套件的安装。
套件一多了,开启速度就变慢。要同步多台电脑的设定也变得麻烦。
如果有个设定档能够自动帮我安装我想要套件就好了!
有一天我读了 redguardtoo 的 "一年成为Emacs高手(像神一样使用编辑器)",
决定也要用大师的 init.el。
我跟 redguardtoo 一样,复制了 Steve Purcell 的 .emacs.d。
大家都说 Purcell 的设定非常经典,我不太懂 elisp 所以无法评价。
但是我知道用 Purcell 的设定有很多好处:
1. 套件可以自动安装了! 只要列个清单, Purcell 的设定会帮你把套件都装好。
2. 不用自己维护设定档了! Purcell 时常更新他的设定档。
有位大师不断在更新维护他的设定档,我跟着就行了!
3. Purcell 很贴心地留了两个插入点,让我们可以嵌入自己的设定。
4. 我喜欢他把各个套件 xyz 的设定放在 init-xyz.el 档,
然后在 init.el 里面 require xyz 就可以用了。
虽然我不懂 elisp,但是 Purcell 的架构很清晰,很容易理解在干嘛。
然而用别人的套件也不是全然美好的。
很多我熟悉的快速键不是没了,就是被改掉了。
此外我对 front-end 的开发没有什么涉略,许多设定对我来说没什么用。
开启 Emacs 的速度有进步,但还是不够快。
在这过程中,我试用了其他编辑器,例如 Lighttable 和 Atom。
Atom 很棒,很流畅,很现代,我真的很喜欢。
可是用着用着,我总觉得心里少什么。
我怀念 Emacs 可以用我设定好的快速键做一切事情的感觉。
就在我迷惘的时候,我遇见了 Spacemacs,让我重回了 Emacs 的怀抱。
Spacemacs 就像是其他的 starter-kit 一样,是个 Emacs 的设置。
我试过其他的设置像是 prelude,也很不错,
但是 Spacemacs 是完全不一样等级的令人惊艳!
打从你启动 Emacs 开始,就有一种焕然一新的感觉!
先从外观说起:
1. Spacemacs 的 logo 很有质感,很现代的感觉。
https://github.com/syl20bnr/spacemacs/blob/master/doc/img/title2.png
2. 默认的 theme 是 spacemacs-dark,我想大部分的人都没看过,有种耳目一新的感觉。
主要的色调是蓝色与紫色,在灰色的背景上,充满现代科技感。
https://github.com/syl20bnr/spacemacs/blob/master/doc/img/spacemacs-python.png
3. 接口上有许多巧思: 有 powerline ,有 buffer 编号显示,有 Evil 状态显示,
还有 minor mode 的灯号显示等等。
你可能会说,这些都没什么大不了,
只不过是安装了对应的套件罢了。
没错,这些都是套件 + 一些手动设定。
但是能够把这么多套件一次整合在一起,而且弄得漂漂亮亮,很有整体感,
这就是厉害的地方!
操做接口:
1. 刚安装好 Spacemacs 会问你要用 Vim 还是 Emacs 的接口。
我虽然没用过 Vim ,但是我喜欢 modal edting 的概念,
所以我之前就在用 Evil-mode 了。
建议 Emacs 的使用者可以玩玩看,过一阵子你就会爱上他的。
2. 我不熟悉 vim ,所以我无法评论 Evil-mode 有多像真的 vim 。
从讨论串上看来, vim 的使用者反应挺不错的。
3. Spacemacs 不只有 vim 的 modal edting 而已。
许多常用的指令都是用空白建来触发的:
例如切换换行模式,可以用 SPC t l 来完成。
t 代表 toggle, l 代表 truncate line。
清除不必要的空白,可以用 SPC x d w 来完成。
x 代表 text,d 代表 delete ,w 代表 white。
很多指令都可以简化成 SPC 加上一连串的字母。
这些字母通常都是有意义的,所以很好记得。
更棒的是,如果你忘记要输入什么字母, Spacemacs 会显示所有可能的按键,
你也可以用 C-h 切换到 helm 来搜索指令。
多打个两三次你的肌肉记忆就形成了。
4. 切换 buffer 可以用 SPC n, n = 1, 2, 3,...。
每个 buffer 下面都会有编号。这样可以很快地跳到你想要去的 buffer 。
5. 总结的说,空白建 SPC 是 Spacemacs 的进入点。很多指令都可以从 SPC 出发找到。
这提供了诸多套件一个统一的快速键平台。
所以你会发现, Spacemacs 不只是外观上统一,操作起来的感觉也是很一致的。
我想程式设计师最能够欣赏 consistency 的优美。
架构上来说:
1. Spacemacs 引进 layer 的概念。说穿了就是 Purcell 的 init-xyz.el 的进阶版。
Spacemacs 把一个明确定义的扩充功能称作一个 layer 。
例如对于 C++ 的支援就可以作为一个 layer ,叫做 c-c++。
一个 layer 里面可能包含好几个相关的套件,
例如 CMake、gtags、flycheck 等等有关 C++ 开发的套件。
在这个 layer 里面,各种设定与快速键的配置都会按照 Spacemacs 的常规来设计。
这样的设计增进了 Spacemacs 操作起来的一致性。
2. 你可以自行设定要启用那些 layer 。
一旦你启用了,Spacemacs 会帮你下载,帮你管理更新。
3. Spacemacs 是个活跃的专案,时常有更新。
Spacemacs 会自动检查并且提醒你更新。
Spacemacs 还有一个巨大的优点: 他是汇集众人之力的设置。
官网说这叫 Crowd-Configured 。
记得我说用 Purcell 设定档的优点吗? 就是有个大师不停地在调教设定档。
Spacemacs 在这点更高一筹:
因为 Spacemacs 的架构设计,很容易让使用者贡献新的 layer ,
你等于有了上百个世界各地的使用者在帮你调教 Emacs!
我认为这是 Spacemacs 最棒的地方!
在用过各种配置以后,我真心向大家推荐 Spacemacs。
无论你是 vimer 还是 Emacser,就像 Spacemacs 官网说的,
最棒的编辑器不是 vim 也不是 Emacs,而是两者!
※ 引述《michael1436 (阿龟)》之铭言:
: 标题: [emcs] Spacemacs 融合vim与emacs
: 时间: Wed Nov 4 04:10:49 2015
:
: 先附上连结
: https://github.com/syl20bnr/spacemacs
:
: Spacemacs太令我惊艳了
: 漂亮的接口
: 与vim的超高相容性
: Document也很完整
: 尤其是把leader设为space
: 操作起来超级顺手
:
: 有人也在用Spacemacs吗?
:
: 我一定是疯了
: 现在还在学elisp
: 上班时间倒数中 Orz
:
:
:
作者: dryman (dryman)   2015-12-06 23:44:00
感谢分享
作者: judging1 (judging)   2015-12-07 14:03:00
看完想入坑了~~
作者: Neisseria (Neisseria)   2015-12-07 14:26:00
看完这篇,我也入坑了,真的蛮好用的
作者: wheatdog (麥田圈裡的來福)   2015-12-08 00:01:00
写的很棒,小弟原本是用vim,几个月前用了spacemacs就回不太去了,偶而还是会想念vim的快速,但除此之外,没其他留念的了
作者: art1 (人,原来不是人)   2015-12-08 01:20:00
请问想自己改spacemacs的dark接口要从哪下手? 想改配色谢谢
作者: yea107 (ㄚ隆)   2015-12-09 09:45:00
请问spacemacs可以在terminal中执行吗?还是只有GUI接口呢?
作者: qas612820704 (Lego)   2015-12-10 02:27:00
$ emacs -nw

Links booklink

Contact Us: admin [ a t ] ucptt.com