歡迎您光臨本站 註冊首頁

Emacs高效的yasnippet 簡單使用和定製

←手機掃碼閱讀     火星人 @ 2014-03-24 , reply:0

Emacs高效的yasnippet
====================

Author: Ljp <ljp.gogo@gmail.com>
Date: 2010-12-24 10:28:08 CST


Table of Contents
=================
1 介紹yasnippet
2 安裝yasnippet
3 使用yasnippet
4 定製自己的模板
5 再以一個51外部中斷函數舉例
6 參考資源


1 介紹yasnippet
~~~~~~~~~~~~~~~~
官方地址:[http://code.google.com/p/yasnippet/]

想看原汁原味的介紹建議看官方文檔,這裡中文簡要說明一下:

首先如果你是Emacser,而你又沒接觸過yasnippet,請查看這裡有一個很hacking的視頻。
地址:[http://v.youku.com/v_show/id_XMjMxNDg5MjQ4.html]

YASnippet 是emacs高效一個通用的模板系統。它允許定義縮寫並通過[TAB]鍵自動幫你展開。在我們平常編輯一經常復用的模板是非常有幫助的,比如本人平常做Latex
ppt就用到yasnippet,就顯得非常方便快捷。

2 安裝yasnippet
~~~~~~~~~~~~~~~~
Yasnippet的安裝詳細已經有好多文章介紹,並且官方視頻里也簡潔的演示,這裡給出最簡單步驟:
- 下載:wget http://yasnippet.googlecode.com/ ... undle-0.6.1c.el.tgz
- 解壓並移動emacs路徑:tar -xvf yasnippet-bundle-0.6.1c.el.tgz && mv yasnippet-bundle.el ~/.emacs.d/plugins
- 編輯.emacs文件:(add-to-list 'load-path " ~/.emacs.d/plugins")
(require 'yasnippet-bundle)
- 重啟一下emacs,如果emacs設置有啟動畫面請按下[q]鍵就可以看到菜單里多一個yasnippet菜單,到些安裝完畢。

3 使用yasnippet
~~~~~~~~~~~~~~~~
安裝好之後,我們就可以試試牛力方便的yasnippet;;;
例如編輯一個C文件:emacs /tmp/yas_test.c
鍵入模板關鍵詞inc 然後[TAB]鍵,就出現有模板選擇
鍵入模板關鍵詞main 然後[TAB]鍵,同樣也出現一個我們常用main函數
簡單的使用方法就是這樣,是不是有很hacking的感覺,更多細節可以查看yasnippet菜單

4 定製自己的模板
~~~~~~~~~~~~~~~~~
- yasnippet的強大之處於允許用戶自定義自己的模板,這裡介紹它的定製功能,並通過latex-mode來演示它是如何高效編輯能力。這裡演示用的Tex發行版本是texlive的latex-cjk-all擴展
- ubuntu 可以直接安裝:sudo apt-get install texlive cjk-latex latex-cjk-all
- 定製自己的模板必須在.emacs配置文件里指定模板的位置,這一步必不可少,所以在.emacs加上:
(add-to-list 'load-path " ~/.emacs.d/plugins")
(require 'yasnippet-bundle)
(setq yas/root-directory "~/.emacs.d/snippets")
(yas/load-directory yas/root-directory)

這樣.emacs的yasnippet就配置完成了,下來就是定製模板縮寫詞

隨便進入Emacs的一個mode模式,我演示這裡是latex-mode,然後輸入命令[M-x] yas/new-snippet即可在這個模式下建立模板

輸入yas/new-snippet命令,它會提示文件不存在,是否建立,這裡直接鍵入[Enter]鍵,然後輸入模塊的名字。(註:這裡模塊的名字就是此模式下的縮寫詞即關鍵詞)然後出現# -*- mode: snippet -*- 等字元,在這裡刪除它們,照著這裡的演示一步一步來就要可以了。

以新建立一個幻燈片為例子,可以這個來:

1: #contributor : ljp <ljp.gogo@gmail.com>
2: #name : Create a slide frame
3: # --
4:
5: \frame{\frametitle{${1:Slide title}}
6: \pause{}
7: \begin{itemize}
8: \item $0
9: \end{itemize} }

說明:snippet的語法變數是以$美元符開始的,根據變數$1 $2 $... 定義順序游標移動位置,特殊的$0是最後游標停位置

第1行是模板貢獻者的一些信息

第2行是模板說明,也就是用滑鼠點擊yasnippet菜單里相應模式的模板的一些文字提示(這裡Create a slide frame 就可以知道它是創建一個幻燈片)

第3行是語法要求,聲明模板內容開始

第4行以後的,就是模板的內容了。

5 再以一個51外部中斷函數舉例
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. emacs /tmp/interrupt.c
2. [M-x] yas/new-snippet ->[Enter]鍵 -> 創建縮寫關鍵詞 interrupt ->[Enter]鍵
#contributor : ljp <ljp.gogo@gmail.com>
#name : Create a 51 interrupt function
# --

void int${1:變數1}() interrupt ${2:變數2} using ${3:變數3}
{
${0:這裡是變數游標最後停留位置}
}

以上在C模式下,就可以鍵入關鍵詞interrupt 然後[TAB]鍵,來創建一個51單片機外部中斷

6 參考資源
~~~~~~~~~~~
- 李殺網:[http://xahlee.org/emacs/yasnippet_templates_howto.html]

- YASnippet基礎入門:[http://blog.waterlin.org/article ... et-basic-usage.html]

- 官方doc:[http://yasnippet.googlecode.com/svn/trunk/doc/index.html]

- 一個yasnippet模板快速製作PPT演示視頻:[http://v.youku.com/v_show/id_XMjMxNTQ1NzA4.html]

- 個人代碼倉:[https://github.com/live5156go51]

latex_yas.pdf

[火星人 ] Emacs高效的yasnippet 簡單使用和定製已經有1009次圍觀

http://coctec.com/docs/linux/show-post-143018.html