什么是 spacemacs

官网介绍:

A community-driven Emacs distribution. The best editor is neither Emacs nor Vim, it’s Emacs and Vim!

spacemacs 是一个社区驱动的 Emacs 发行版, 加入了大量的 Emacs 插件, 但是通过良好的设计使其不会很慢, 以期基本开箱即用.

为什么要使用 spacemacs

  1. 免费
  2. vim 用户可以平滑迁移
  3. 良好的快捷键组织方式
  4. 很多大牛在维护
  5. 更新很快

配置

安装 emacs

安装过程官网说的比较明白 => emacs 官网

安装与配置 spacemacs

拉取spacemacs 配置文件到本地

git clone https://github.com/syl20bnr/spacemacs ~/.emacs.d

将 emacs 的插件地址设置为中国镜像

  1. 打开你的 spacemacs 配置文件 (~/.spacemacs|~/.spacemacs.d/init.el)
  2. 在函数 user-init 中修改elpa 源地址配置
1
2
3
4
5
6
7
8
9
10
11
12
(defun dotspacemacs/user-init ()
"Initialization function for user code.
It is called immediately after `dotspacemacs/init', before layer configuration
executes.
This function is mostly useful for variables that need to be set
before packages are loaded. If you are unsure, you should try in setting them in
`dotspacemacs/user-config' first."
(setq configuration-layer--elpa-archives
'(("melpa-cn" . "http://mirrors.tuna.tsinghua.edu.cn/elpa/melpa/")
("org-cn" . "http://mirrors.tuna.tsinghua.edu.cn/elpa/org/")
("gnu-cn" . "http://mirrors.tuna.tsinghua.edu.cn/elpa/gnu/")))
)

配置 layer

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
dotspacemacs-configuration-layers
'(
yaml
vimscript
sql
html
python
javascript
emacs-lisp
helm
git
org
markdown
;; 代码语法检查
syntax-checking
better-defaults
imenu-list
dash
;; 中文支持
(chinese :variables
chinese-enable-youdao-dict t
chinese-enable-fcitx t
chinese-enable-avy-pinyin nil)
;; 代码跳转
(gtags :variables
gtags-enable-by-default t)
(auto-completion :variables
auto-completion-enable-snippets-in-popup t
auto-completion-enable-sort-by-usage t
:disabled-for markdown org)
;; 版本控制
(version-control :variables
version-control-diff-tool 'diff-hl
version-control-global-margin t
version-control-diff-side 'left)
php
)

打开 Emacs. 此时会出现 spacemacs 的图标以及安装 package 的过程, 等待安装成功

配置 yasnippet 具体可参考: YASnippet - emacs 的代码片段管理工具

代码补全

使用 company-php 补全 php 代码

现在 spacemacs 的主干还没有很好的支持 company-php 所以我简单修改了一下, 虽然不是最佳实践, 但是能用:

对照 php layer 中的 package.el 中的代码自行修改.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
(setq php-packages
'(
...
company-php
...
))
(defun php/init-company-php ()
(add-hook 'php-mode-hook
'(lambda ()
(require 'company-php)
(company-mode t)
(ac-php-core-eldoc-setup) ;; enable eldoc
(make-local-variable 'company-backends)
(add-to-list 'company-backends 'company-ac-php-backend))))

重启 emacs 生效.

代码格式化与格式检查工具 (syntax-checking 必须开启)

安装外部工具:

pear install PHP_CodeSniffer

这会安装两个命令行工具

- `phpcs` 代码格式检查 (自动开启, 会在边缘显示红点)
- `phpcbf` 代码格式化 (`<SPC><SPC>phpcbf<CR>`)

去除过多的 phpcs 代码格式检查报错

phpcs 会将不符合规范的代码在边缘标记红点, 且在代码中以下划线标识出错的代码位置.这有时候并不是必要的.

<SPC><SPC>customize-variable<CR>

flycheck-php-phpcs-executable<CR>

这是会出现一个界面

customize-variable

点击 name or path 填写 phpcs -n 用来去除警告信息

其他

  • spacemacs 的 php layer 并不是很完善, 一些东西需要根据自己的情况进行定制.
  • 对于 svn 现在只能用 version-control 或者外部工具
  • 如果需要调试代码可以用 geben package