yasnippet插件

*/-->

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

  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

时间: 2024-11-09 01:01:43

yasnippet插件的相关文章

emacs工程管理,cedet ede插件自动构建Make,Automake

鉴于自己一直都是在做客户端开发方面的工作,服务端很多知识都随着时间淡忘了,最近有一个计划,用一些时间补一下基础.所以早上很早就起床,花了一点时间大致浏览了一下BSD socket的相关API,然后用GNU C写了一个简单的多线程,阻塞EchoServer.工程的代码倒是不多,就是基于原生API开发,总是有很多的errcode需要处理,比较的烦.所以我干脆就直接写了个宏去处理,简单的输出strerrno(errno)和errno就好.虽然这个宏实现起来比较的简单,但是还是感觉比较的值,节省了不少的

emacs下C/C++自动补全 之 使用Yasnippet模板补全 以自定义USACO模板为例

Emacs自动补全有许多插件,yasnippet是一个代码片段补全工具,可以用来补全大段的常用 的代码片段类似与mac上的textmate. 推荐安装方法为package-install M-x list-packages找到yasnippet安装即可 然后在配置文件中加入: (require 'yasnippet) (yas/global-mode 1) 这样就安装完毕了,之后只要把自己定义跌片段放到.emacs.d/snippet/下的相应模式文件 夹下就好了,比如我想在c++-mode里使

使用 Chrome 浏览器插件 Web Scraper 10分钟轻松实现网页数据的爬取

本文标签: WebScraper Chrome浏览器插件 网页数据的爬取 使用Chrome 浏览器插件 Web Scraper 可以轻松实现网页数据的爬取,不写代码,鼠标操作,点哪爬哪,还不用考虑爬虫中的登陆.验证码.异步加载等复杂问题. Web Scraper插件 Web Scraper 官网中的简介: Web Scraper Extension (Free!)Using our extension you can create a plan (sitemap) how a web site

eclipse插件之Findbugs、Checkstyle、PMD安装及使用

一.什么是Findbugs.checkstyle.PMD Findbugs.checkstyle和PMD都可以作为插件插入eclipse,当然也有单独的工具可以实现他们的功能,比如Findbugs Tool就可以不必插入eclipse就可以使用. 三者的功能如下表: 工具 目的 检查项 FindBugs 检查.class 基于Bug Patterns概念,查找javabytecode(.class文件)中的潜在bug 主要检查bytecode中的bug patterns,如NullPoint空指

eclipse安装java ee插件方法步骤

1.本人以前使用的MyEclipse进行Javaweb开发,但是后来由于myeclipse实在太臃肿,经常在运行的过程中不流畅 (可能电脑内存也不是太高吧)   !所以坚决换用eclipse,但是问题来了,下载的eclipse因为是标准版所以也不支持Javaweb开发,所以要来配置一下开发环境,安装Javaee开发插件   ,以下为安装步骤 1.1 在Eclipse中菜单help选项中选择install new software选项 1.2 在work with 栏中输入 http://down

Myeclipse10 安装Aptana插件

安装步骤: 1.下载aptana3.2 Eclipse Plugin插件. 下载地址:http://update1.aptana.org/studio/3.2/024747/index.html 2.在java文件夹下新建文件夹pluginsNew,在里面新建aptana_update_024747文件夹(这个文件夹名根据自己下载的版本自己写),再在里面新建eclipse文件夹,解压出features与plugins文件夹,COPY到 D:\java\pluginsNew\aptana_upda

这是一款借助chrome 插件的微信机器人

1.chrome kit微信机器人简介(github:https://github.com/LinuxForYQH/chrome_kit) 借助chrome 插件 js注入来实现消息的发送 chrome devtool api的调用来监听https请求 打开微信登录界面,在扫码登录前必须先打开toolbar(F12 或者 鼠标右键检查),如上所说因为借助了chrome devtool api所以需要打开toolbar才能执行相关dev域的js. 2.相关开发原理介绍 https://develo

使用插件bootstrap-table实现表格记录的查询、分页、排序等处理

在业务系统开发中,对表格记录的查询.分页.排序等处理是非常常见的,在Web开发中,可以采用很多功能强大的插件来满足要求,且能极大的提高开发效率,本随笔介绍这个bootstrap-table是一款非常有名的开源表格插件,在很多项目中广泛的应用.Bootstrap-table插件提供了非常丰富的属性设置,可以实现查询.分页.排序.复选框.设置显示列.Card view视图.主从表显示.合并列.国际化处理等处理功能,而且该插件同时也提供了一些不错的扩展功能,如移动行.移动列位置等一些特殊的功能,插件可

页面滚动图片等元素动态加载插件jquery.scrollLoading.js

如果一个网页很长,那么该页面的加载时间也会相应的较长.而这里给大家介绍的这个jQuery插件scrollLoading的作用则是,对页面元素进行动态加载,通俗的说就是滚到哪就加载到哪,屏幕以下看不见的就不用加载了.这样还可以在一定程度上节省服务器资源.该插件作者的网页将该插件的功能和使用方法描述的非常详细,这里把最一般最普遍的使用情况给大家展现一下. 插件作者:http://www.zhangxinxu.com/ 首先我们需要加载jQuery库和本插件js文件. (jquery.scrollLo