自定义 Snippets
文章目录
前言
上一篇文章讲了如何如何在 Emacs
中使用 Snippet
来快速编写代码,提高效率。
虽然很多插件已经为我们准备好了现成的模板,但有时我们需要一些个性化的代码片段。
今天,我们就一起来学习如何在Emacs中创建自己的Snippets吧!
自定义 Snippet
要开始创建自己的代码片段,只需在Emacs中按下 M-x 然后输入 yas-new-snippet,或者直接使用快捷键 C-c C-n。
这将打开一个新的编辑窗口,并且自动进入 snippet-mode
。里面预设了一些基本信息,看起来像这样:
|
|
-
name 是
Snippet
的名称 -
key 当你需要调用这个片段时,只需要输入这里的关键词,再按 Tab 键就能触发代码的自动填充。
#--
后面的内容就是展开后的内容
编写完成后使用 C-c C-c
来保存。
模板语法
在 Snippet
中可以插入任意的文本,不过 $
、 `
是特殊的,需要使用 \
转义。
$
在 Snippet
中表示这个地方的内容需要手动输入,帮我占着这个位置,也就是占位符,可以通过 TAB
在占位符之间切换。
$
通常跟随一个数字,表示第几个位置,例如 $1
表示第一个位置,展开后光标默认就在这个地方,以此类推。
占位符还可以有默认值,它需要跟者一对 {}
,然后用 :
分割位置和默认值。也可以不用数字直接写默认值 ${var}
。
例如: 这是一个 ${1:100} 测试
展开后光标会停在 100
的左边,然后一旦你输入内容后,100 就会被替换,用 TAB
就会跳到下一个 100 就会保留。
$0
表示所有占位符都确认后光标所停在的位置。
比如在 for
循环,我们希望最后光标在循环体里,这时候 $0
就非常有用。
下面是 python
中 for in
的 snippet
,当输完后就会进入到循环体里,这样方便编写逻辑。
|
|

执行 Emacs Lisp 代码
Emacs Lisp 代码使用 `
包裹,将会在扩展的时候执行这个代码,从而可以动态的生成一些片段
比如想要插入当前时间可以这么写
|
|

总结
- 使用
yas-new-snippet
创建新的Snippet
$
表示占位符,后面的数字表示光标移动的顺序,可以使用${number:default value}
添加默认值- 使用
`
编写的代码会在展开的时候执行