正所谓工欲善其事,必先利其器,而作为程序员来说,最重要的工具莫不是编辑器。所有对问题思考而得到的解决方案,最终都会转变成代码,写入文件中。
编程语言各异,而IDE也层出不穷。当然,每种语言都有合适的IDE。由于IDE针对特定编程语言做了很多优化,所以往往会变的过于臃肿,导致占用过多资源。
所以在做一些简单的开发或者记录的时候,更合适的方式是使用通用的编辑器而不是专业的IDE。
对于通用编辑器来说,我觉得只要其满足以下3点即可:
- 具有一套高效的操作指令;包含快速移动光标,编辑操作。
- 轻量化;占用内存少,启动速度快。
- 具有一定的可扩展性;
通用编辑器也有很多选择,当然其中最出名的就是Emacs和vim了。最开始接触GNU/Linux就听说了Richard Stallman的大名,从而也了解了Emacs。
当然尝试未果之后又接触了vim,对于这套操作指令来说是比较适应的。vim实用技巧上面的一些使用技巧能够让你得到更好的提升。
直到Spacemacs的出现,让我想重新尝试Emacs的心又蠢蠢欲动。当然配置Spacemacs的过程中也踩了很多坑,不过目前Spacemacs这套配置算是我的通用编辑器的主力了。
虽然还是觉得有点臃肿,也开始想要自己配置Emacs,不过由于时间关系,所以现在是边用着Spacemacs边再调教自己的一套配置(也是想通过自己配置的过程中能学到Emacs的设计哲学),
个人配置主要参考purcell和陈斌的配置。
Spacemacs的踩坑记录
通用配置
安装Spacemacs配置,可以直接参考官方文档
-
建议直接切换成develop分支(这个也是目前spacemacs被人诟病的点,master和develop差异太大)
如果之前是master分支的,可以运行该命令更新
M-x configuration-layer/update-packages
来修复配置文件的一些报错 -
配置中国的melpa源,可以使用emacs china,注意develop版本的参数有些差异。陈斌的配置里面可选163和清华的源
-
Mac下,我个人喜欢把command作为meta健,所以在user-config里配置了以下内容:
(setq mac-option-key-is-meta nil) (setq mac-command-key-is-meta t) (setq mac-command-modifier 'meta) (setq mac-option-modifier nil)
-
emacs把下划线_当作word的分隔符,evil与emacs保持一致,这一点与vim不一样。这里做了下简单配置。
underscore is not a word character
;; 配置evil移动包含下划线 (defalias 'forward-evil-word 'forward-evil-symbol)
-
使用相对行数,因为经常用vim做上下移动,用相对行数就不用自己计算了。
dotspacemacs-line-numbers 'relative
-
由于Emacs的mark命令是
C-Space
,与语言切换冲突,所以修改语言切换为C-M-Space
sql配置
最近用emacs编辑最多的文件是sql,最需要的还是对sql做格式化。由于sql方言比较多,格式化风格也是五花八门,所以这里选用purcell的sqlformat插件
由于其以来python的sqlparse,所以第一步要先安装sqlparse:pip install sqlparse
.spacemacs配置:
;; add to additional package
dotspacemacs-additional-packages '(sqlformat)
;; add to user-config
(add-hook 'sql-mode-hook 'sqlformat-on-save-mode)