*/-->
yasnippet插件
Table of Contents
- 1. yasnippet
- 2. 配置
- 3. 编写snippet
- 3.1. 为所在主模式写新的snippet
- 3.2. 目录结构问题
- 3.3. 编辑已经存在snippet
- 4. 后续
1 yasnippet
YASnippet is a template system for Emacs. It allows you to
type an abbreviation and automatically expand it into function templates.
yasnippet 是一个缩写扩展的插件。
比如:我输入 blogheader,然后按tab键,会自动扩展为:
#+TITLE: #+AUTHOR: lexnewgate #+EMAIL: [email protected] #+DATE: #+DESCRIPTION: #+CATEGORIES: xxx yyy #+KEYWORDS: tags1,tags2 #+LINK_UP: AlexWei #+LINK_HOME: AlexWei
2 配置
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; yasnippet ;; http://capitaomorte.github.io/yasnippet/ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (add-to-list ‘load-path "~/.emacs.d/plugins/yasnippet") (require ‘yasnippet) (yas-global-mode 1) (add-to-list ‘yas-snippet-dirs "~/.emacs.d/plugins/yasnippet/snippets")
如果要解决和company-mode的tab冲突,并让company-mode也显示yasnippet的缩写
候选,那么加上以下语句:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; code completion ;; http://company-mode.github.io/ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (add-to-list ‘load-path "~/.emacs.d/plugins/company") (require ‘company) (add-hook ‘after-init-hook ‘global-company-mode) (setq company-idle-delay 0.5) ;; weight by frequency (setq company-transformers ‘(company-sort-by-occurrence)) (defvar company-mode/enable-yas t "Enable yasnippet for all backends.") (defun company-mode/backend-with-yas (backend) (if (or (not company-mode/enable-yas) (and (listp backend) (member ‘company-yasnippet backend))) backend (append (if (consp backend) backend (list backend)) ‘(:with company-yasnippet)))) (setq company-backends (mapcar #‘company-mode/backend-with-yas company-backends))
3 编写snippet
这里举个简单例子。手册链接
3.1 为所在主模式写新的snippet
- 运行指令 yas-new-snippet
- 然后开始写snippet
例如,我在org-mode要经常添加代码块,我想让src_扩展为:
#+begin_src 光标所在位置 ;#+end_src
那么我的snippet会是
# -*- mode: snippet -*- # name: src_ # key: src_ # -- #+begin_src $0 ;#+end_src
这里除了以$开头的所有都可以理解成普通字符串,$0的含义是跳转的最后一个点。
注意新目录的名字一定要和mode相符合。
3.2 目录结构问题
默认情况下,副模式是不会开启的。
1 可以通过yas-activate-extra-mode开启
2 或者编写共享文件
比如说我想在各个编程主模式中方便输入我的签名,那么我就在各个模式之下建立一个
.yas-parents的文件,然后里面用空格隔开我想在各个主模式共享的snippets的模式。
3.3 编辑已经存在snippet
指令为 yas-visit-snippet-file
4 后续
由于我自己用的smex插件,所以我很少使用各种快捷键。故所有emacs相关博文都会以
命令名字的方式出现。
Author: lexnewgate
Created: 2016-04-09 周六 13:18
Emacs 24.5.1 (Org mode 8.2.10)
时间: 2024-11-09 01:01:43