码迷,mamicode.com
首页 > 其他好文 > 详细

yasnippet插件

时间:2016-04-09 13:51:47      阅读:320      评论:0      收藏:0      [点我收藏+]

标签:

yasnippet插件

yasnippet插件

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: lexnewgate@gmail.com
#+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

  1. 运行指令 yas-new-snippet
  2. 然后开始写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)

Validate

yasnippet插件

标签:

原文地址:http://www.cnblogs.com/AlexWei/p/5371453.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!