最近在github上看见了一个项目,名字叫spacemacs,相当于是一个emacs的完整配置方案,可以使user从vim无缝的迁移到emacs并且可以提供一整套插件解决方案.其实这个项目几个月前就看到过,不过当时正潜心研究vim,对于emacs的映像只在于丑陋的界面和缓慢并且臃肿,不过对于spacemacs的初始化配置简直美哭了.下面是gui下的截图.

下面来说说配置

1 初始化

mac下需要运行下面的命令

$ brew tap railwaycat/emacsmacport
$ brew install emacs-mac --with-spacemacs-icon

完成后需要clone配置, 如果以前有emacs配置的话最好备份一下吧, 没有的话就继续

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

这里可以使用master也可以使用develop分支, 等下载ok了重启就行了

2 配置插件

配置spacemacs时候会选择vim还是emacs的热键, 我是vim所以选择vim模式, 在spacemacs里vim模式被称为evil, evil模式下leader为空格键, 也就是所有的插件功能基本上都用空格键触发(emacs模式被称为holy模式, 我好想发现了什么)

spacemacs配置基本上在~/.spacemacs文件上, 自己也在慢慢研究, 就是对着spacemacs的contrib文件夹里layer招相应的文档, 然后在dotspacemacs-configuration-layers里添加相应的layer就行了, 下面是几个好玩的配置

2.1 nyan彩虹猫

想要显示彩虹猫的进度条只需要在dotspacemacs-configuration-layers添加如上图高亮的字段

(colors :variables
        colors-enable-nyan-cat-progress-bar t)

直接写colors是加载插件, 这里设置了默认启动nyan进度条

2.2 行号开启

默认快捷键是<spc> t n

如果想开启emacs自动设置, 找到~/.spacemacs下的defun dotspacemacs/config()在里面添加

  (global-linum-mode t)

2.3 显示80字符的column

默认快捷键是<spc> t f

默认启动加入下面

  (turn-on-fci-mode)

2.4 加入version-contorl

如图需要显示上一个commit到现在的修改行可以加入version-control插件, 这个不需要设置默认启动

version-control

2.5 markdown

这个没啥好说的了, 直接加入markdown的layer, 就可以用emacs写markdown了, 它会语法高亮, 并且带有一些markdown的快捷键,前缀<spc> m, 但是发现好像没啥用.

2.6 eyebrowse

这个有点像tmux管理, 可以在emacs里打开多个窗口, 快捷键前缀主要是<spc> W

  • 切换<spc> W 数字/TAB
  • 删除<spc> W c
  • 创建标签<spc> W r

还有另外的窗口划分功能, 前缀是<spc> w

  • 分屏<spc> w v/s
  • 关闭<spc> w c
  • 切换屏幕焦点<spc> w h/j/k/l
  • 或者可以直接<spc> 1/2/3/4选择窗口

2.7 shell

spacemacs里的配置文件已经写入了shell, 不过需要自己把注释去掉

(shell :variables
    shell-default-height 30
    shell-default-position 'bottom)

对应快捷键<spc> a s, 不过emacs里的shell总感觉不太舒服

2.8 flycheck

语法检测, 如上图需要添加syntax-checking插件

快捷键<spc> e, 需要查看error lists使用<spc> e l

2.9 dash

mac上少不了使用dash, 在插件里添加dash, 以后只要光标所在位置按<spc> d d就可以直接跳转到dash进行查询了

3 其他有用的tips

3.1 快速跳转, 类似vim的easymotion

  • <spc> l 快速行跳转(比行号要快)
  • <spc> <spc>快速位置跳转
  • <spc> \`回到原来跳转的位置

3.2 neotree

  • 打开/关闭隐藏文件s
  • 删除节点d
  • 重命名节点r
  • 打开节点l或者RET
  • h/l打开关闭目录节点

就是左边的文件树, 真心比vim的强不少, 打开的快捷键是<spc> f t, 后来发现这个插件是我们大boss写的, 具体的wiki在这里 http://www.emacswiki.org/emacs/NeoTree_%E4%B8%AD%E6%96%87wiki

3.3 文件内导航

可以看到文件的outline, 快捷键<spc> s l

3.4 项目管理

<spc> p t可以打开当前projeect的文件数, 不像<spc> f t那样只打开当前目录的文件树

<spc> p r 最近打开的项目

3.5 git

  • <spc> g t时光机, 可以返回以前的commit
  • <spc> g l查看commit
  • <spc> g bblame模式(这个没找到怎么关闭, 最后用鼠标点击下面的blame给关了)
  • <spc> g ccommit, 注意退出的时候按C-c C-c
  • <spc> g d查看diff

还有好多在这里 https://github.com/syl20bnr/spacemacs/tree/master/contrib/!source-control/git , 其实这个git功能真的和pycharm不能比啊

3.6 文件操作

这里spacemacs使用了dired

  • C-x C-j或者<spc> f j打开当前文件目录, ** D删除文件 ** RET或者a打开文件 ** R重命名文件 ** +创建子目录 ** g刷新
  • 用外部程序打开当前文件<spc> f o
  • 重命名当前文件<spc> f R
  • 删除当前文件<spc> f D

3.7 python

增加python插件

比较方便的时使用看<spc> m s B, 可以把脚本转到解析器上运行, 十分方便查看分析, 至于大型项目还不知道如何

  • 还有一点经常使用的时查询源码的功能,<spc> m g g, 返回需要按C-o
  • <spc> m h h查询文档, <spc> m h d查询
  • <spc> m r i删除没有引用的import
  • 执行当前文件的两个命令<spc> m c c/C
  • 查看当前函数在哪里引用alt r

3.8 bookmarks

bookmarks是spacemacs自带的, 可以迅速定位标记的文件, 它可以永久保存

启用的快捷键是<spc> h b

  • 删除书签C-d
  • 编辑书签C-e
  • 在另一个窗口打开书签C-o

3.9 搜索

我这里用的ag, 推荐大家使用, 它比ack快一点点

搜索内容:

  • 和使用vim一样在本文件搜索/
  • 在项目里智能搜索<spc> /
  • 在所有打开的buffer里搜索<spc> s b

搜索文件名:

  • 在当前目录里搜索文件名<spc> s f, 其实等价于<spc> f f
  • 最近打开的文件<spc> f r

3.10 多光标编辑

需要进入iedit模式, 此时光标变成红色, 步骤如下:

  1. 用vim的visul模式选取要replace的值
  2. <spc> s e选取全部的匹配值(暂时不知怎么自定义选取)
  3. S对值删除并进行修改
  4. ESC ESC退出

3.11 注释

  • 注释行<spc> c l
  • <spc> c y这个比较有用, 注释的同时并且复制相同的一份

文档里给出了注释块的快捷方法SPC ; SPC l, 其实对于vimer来说使用visul模式选取并用<spc> c l注释或许是更好的方法.