Emacs yasnippet

yasnippet

目录

  • 简述
  • 安装
  • 配置
  • 添加自定义模板


 1简述

yasnippet 是一款自动补全插件。同时可以自定义补全模板。实现想怎么补全就怎么补全。

2 安装

yasnippet 的 github地址. 其实yasnippet 的相关说明及安装方法在这个地址上都有说明. 我在这里,做下赘述,方便不习惯阅读英文的兄弟们可以快速上手。 下面是安装过程:

make dir ~/.emacs.d/plugins
cd ~/.emacs.d/plugins
git clone --recursive https://github.com/joaotavora/yasnippet

3 配置

将yasnippet 的配置添加到init.el 中(如果对lisp语言了解,也可以添加到其他文件中, 然后在init.el 中引用也可).

  • 全局默认启用

    (add-to-list 'load-path
                  "~/.emacs.d/plugins/yasnippet")
    (require 'yasnippet)
    (yas-global-mode 1)
    
  • 交互式开启 通过在buffer 区域输入M-x yas-minor-mode 可以控制当前buffer 是否启用yasnippet.

    (yas-reload-all)
    (add-hook 'prog-mode-hook #'yas-minor-mode)
    

4 添加自定义模板

其实是开始,我想要的就是这个功能。可以给人自由飞翔的感觉.

4.1 打开编辑

使用命令 M-x yas-new-snippet 打开一个新buffer,或者直接新建一个文件,输入内容后保存到你指定的位置即可。

用M-x yas-new-snippet 打开的buffer内容默认如下:

# -*- mode: snippet -*-
# name:
# key:
# –-

对以上几个选项加心说明:

name
snippet 文件的名字。当触发补全功能时,snippet会读取这个文件,将文件中的内容补充到buffer中。
key
快捷键。输入快捷键,然后<tab> 即可补全。
--
分界线。从该行以下,全部是补齐内容.

在网上找了一段示例:

# name: file header
# key: fh
# binding: direct-keybinding
# --
#!/usr/bin/env python
# coding:utf-8
# Filename:`(file-name-nondirectory buffer-file-name)`

$0

找这段,是因为这段里有个可爱的用法: `(file-name-nondirectory buffer-file-name)` . 这个有意思了,这个是显示当前buffer的名字的,让emacs帮你自动写。

4.2 保存

我找了好久才找到怎么保存的.当编辑好后,我们要将buffer 中的内容保存下来,以便日后使用。 C-c C-c ,会提示保存table, snippet 会把我们创建的文件在内部以表格的形式保存:

1    Choose or enter a table (yas guesses snippet-mode):
snippet-mode

这里可以使用默认的snippet-mode也可以在snippets 路径中创建另外一个路径,比如python-mode,C++-mode,js-mode 等。在此处,我们可以输入python-mode:

0    Choose or enter a table (yas guesses snippet-mode): python-mode

然后回车:

[yas] Loaded for python-mode. Also save snippet buffer? (y or n)

这里输入y , yasnippet 会以 “ # name: " 的值为文件名,提示保存路径及文件名

5    File to save snippet in: ~/.emacs.d/snippets/python-mode/
~/.emacs.d/snippets/python-mode/ifelse
./
../
file header
whielse

第一行为默认行。回车即可。

[yas] Snippet "ifelse" loaded for python-mode.

再来看一下,该文件是否已存储成功:

ls -lrt
total 24
-rw-r--r--  1 halberd  staff   96 Jan 14 17:13 whielse
-rw-r--r--  1 halberd  staff  157 Jan 14 17:17 file header
-rw-r--r--  1 halberd  staff  132 Jan 14 17:52 ifelse

Author: halberd

Created: 2019-04-26 Fri 19:31

原文地址:https://www.cnblogs.com/halberd-lee/p/10784494.html