由于大四这段时间事情相对来说不多(😂仅仅是相对来说),我开始学习emacs了,学会这个强大的工具可以很好的提高自己的效率,同时学会它的过程也会提高自己学习工具的能力。

我使用Spacemacs的配置,同时加以自己的layer,这样的话整个配置会便于管理,我spacemacs的配置可以在这里找到

同时这是我最后一篇使用markdown的文章,之后的文章都会使用emacsorg-mode来完成。

输入操作

evil-args

evil-args可以很好地操作函数参数

  • [cia]:修改当前参数
  • [daa]:删除当前参数
  • [L]:跳转到下一个参数
  • [H]:跳转到上一个参数
  • [K]:从参数跳转到函数名首

Smartparens

Smartparens是一个用来控制括号的小工具。

Surrounding

Surrounding是一个快速修改配对文本的小工具。

  • [ys + 文本对象 + 字符]:将特定字符包围某文本对象
  • [Ys + 文本对象 + 字符]:将特定字符包围某文本对象(另起一行)
  • [ds + 字符]:删除包围的某个特定字符
  • [cs + 老字符 + 新字符]:删除被包围的某特定字符换成另一个
  • 在可视模式下,s也可以直接生效

特殊含义字符:

  • f:将文本对象作为函数的参数
  • t:将文本对象用html标签包围
  • 反向的标签字符会多一个空格

帮助指令

这些指令其实是最重要的……因为自己要从各种README开始学习。

  • [spc h spc]:寻找相关内容在Emacs配置中的初始函数
  • [spc h f]:查看Emacs中的常见问题
  • [spc h l]:查看layer的文档
  • [spc h r]:打开spacemacs文档中章节
  • [spc h R]:在所有文档中进行搜索
  • [spc h k]:展示目前的可用热键

描述功能

  • [spc h d b]:描述组合键
  • [spc h d c]:描述当前选择字符
  • [spc h d f]:描述函数
  • [spc h d v]:描述变量
  • [spc h d p/P]:从Emacs文档/spacemacs文档中描述包
  • [spc h d k]:记录按键并进行描述
  • [spc h d K]:描述某个快捷键系列
  • [spc h d m]:查看当前的mode

文件操作

  • [spc p f]:在当前工程中查询文件(project find)
  • [spc f f]:在当前目录下查询文件,使用[C h]可以跳到上级目录(file find)
  • [spc f L]:在整个Mac系统寻找文件(file locate)
  • [spc f h]:查询文件用二进制打开,使用[C c]两次可返回正常模式(file hex)
  • [spc f o]:使用系统默认程序打开文件(file open)
  • [spc f E]:查询文件sudo打开进行编辑(file sudo-Edit)
  • [spc f D]:删除当前的文件和缓冲区(file delete)
  • [spc f j]:使用Dired打开当前目录(file jump)
  • [spc f t]:使用Treemacs打开当前目录,再次则关闭(file tree)
  • [spc f C-t]:同上,但是光标保持在当前列表
  • [spc f r]:打开最近打开过的文件列表(file recent)
  • [spc f R]:重命名当前文件(file rename)
  • [spc f v]:为当前目录/文件添加本地变量,会添加当前目录的一个文件(file variable)
  • [spc f y]:拷贝当前文件路径(file yank)
  • [spc f C u/d]:将当前文件的编码转化为unix/dos版本(file convert unix/dos)
  • [spc f e d/i]:打开"/.spacemacs/init.el"或者"/.emacs.d/init.el"(file emacs dotfile/initfile)
  • [spc f c]:复制文件另存为(file copy)

Treemacs

Treemacs是在屏幕左侧出现,便于用户进行文件管理的侧边栏。

节点选择

  • j/k:光标下移/上移
  • u:如果当前树上有选中文件的父节点,则跳转过去
  • h:将当前树的根节点向上移动一级
  • l:将当前树的根节点切换到选中文件

节点打开

  • tab:展开/闭合目录或者文件
  • return:展开/闭合目录或者打开文件
  • o h:水平新建屏幕打开文件,用dired打开目录
  • o v:垂直新建屏幕打开文件,用dired打开目录
  • o x:根据文件的扩展名使用系统应用打开文件

节点操作

  • c f:新建文件
  • c d:新建目录
  • R:重命名文件

显示选择

  • g r:刷新目录
  • w:重设宽度
  • y y:拷贝当前文件路径
  • y r:拷贝当前根目录路径
  • s:按照特殊标准重新排列文件

Dired

Dired可以全屏进行对文件的操作。

访问操作

  • f/e/ret:访问当前文件
  • o:在另一个窗体访问当前文件
  • C - o:在另一个窗体访问当前文件,同时光标保持在原来的窗体
  • v:只读模式访问当前文件
  • ^:向上一级

标记操作

  • u:取消当前标记
  • x:执行所有标记
  • d:删除文件

即时操作

  • +:创建新的目录
  • g:刷新目录
  • C:拷贝
  • D:删除
  • R:重命名

缓冲区操作

  • [spc b .]:打开缓冲区切换器(buffer micro)
  • [spc b b]:查询已经打开的缓冲区(buffer buffer)
  • [spc b d]:关闭当前缓冲区(buffer delete)
  • [spc b C-d]:关闭匹配正则表达式的所有缓冲区(buffer reg delete)
  • [spc b f]:在finder中打开当前文件(buffer finder)
  • [spc b h/s]:打开spacemacs的主页缓冲区/scratch缓冲区(buffer home/scratch)
  • [spc b m]:删除除了当前缓冲区外的所有缓冲区(buffer murder)
  • [spc b N]:新建缓冲区(buffer new)
  • [spc b R]:使用自动备份来还原缓冲区(buffer recover buffer)
  • [spc b w]:把当前缓冲区变为只读(buffer none-write)
  • [spc tab]:切换至上一个打开的缓冲区(buffer toggle)

布局操作

  • [spc l l]:查询并切换到布局(layout layout)
  • [spc l 1...9]:跳转到指定布局
  • [spc l n/p]:切换至上一个/下一个布局(layout next/previous)
  • [spc l L]:导入布局文件(layout load)
  • [spc l s]:保存当前布局为一个文件(layout save)
  • [spc l tab]: 打开上一个布局(layout toggle)
  • [spc l R]:重命名当前布局(layout rename)

窗体操作

  • [spc w -]:下面新建窗体
  • [spc w /]:右边新建窗体
  • [spc w .]:进入窗体转换器
  • [spc 1...9]:光标跳跃到第1-9个窗体
  • [spc w h/j/k/l/tab/W]:窗体切换(window other)
  • [spc w w]:切换到另一个窗体
  • [spc H/J/K/L]:将窗体进行移动
  • [spc w b]:将光标跳跃到mini-buffer
  • [spc w =]:将窗体的宽度和高度等分
  • [spc w m]:最大化当前窗体(window maximized)
  • [spc w d]:删除当前窗体(window delete)
  • [spc w u/U]:窗体的操作撤销/重复(window undo)
  • [spc t g]:窗体黄金分割(toggle golden ratio)
  • [spc t -]:光标在窗体中保持中间

工程操作

  • [spc p f]:查询并打开工程里的文件(project file)
  • [spc p b]:查询并打开工程里的缓冲区(project buffer)
  • [spc p p]:查询并打开工程(project project)
  • [spc p l]:查询并打开工程,创建新的布局(project layout)
  • [spc s p]:在该工程中进行字符串搜索

跳跃操作

  • [spc j j]:将光标跳跃到屏幕中某个位置,之后输入一个字符作为索引,可以当做拼音,再进行选择
  • [spc j l]:跳跃到指定一行,根据屏幕进行选择
  • [spc j s/S]:分割当前括号层级变为两个(分割到另一行)
  • [spc j i]:打开imenu,在当前文章中进行段落跳跃

Javascript相关操作

  • [spc t s]:允许/禁止flycheck进行语法检查(默认使用eslint
  • [spc t t]:显示/隐藏flycheck语法检查错误的缓冲区

Ctags相关操作

  • [g ]]:使用etags查找当前tag

内置应用操作

博客操作

  • [spc a b]:使用blog-admin打开我的博客

Emoji操作

  • [spc a E]:打开插入Emoji的缓冲区,回车进行拷贝,q退出
  • [spc i e]:使用Helm来插入Emoji

印象笔记操作

安装spacemacsevernote-layer,再在本地安装geeknote,把配置里面的服务器地址从www.evernote.com改成app.yinxiang.com即可

  • [spc a e c]:创建新笔记,使用@指定笔记本,使用#指定标签
  • [spc a e f]:查找笔记(通过标题和内容),在结果的缓冲区可以使用下面四个指令加上结果中的序号作为参数
  • [spc a e e]:编辑指定名称的笔记
  • [spc a e s]:只读预览指定名称的笔记
  • [spc a e r]:删除指定名称的笔记
  • [spc a e m]:移动指定名称的笔记到别的笔记本

进入笔记缓冲区后,可以使用markdown语法进行编辑,保存后将会更新笔记到印象笔记,完成编辑后使用[C-x #]来结束编辑。