auto-yasnippet, 快速创建一次性 yasnippets

分享于 

7分钟阅读

GitHub

  繁體 雙語
quickly create disposable yasnippets
  • 源代码名称:auto-yasnippet
  • 源代码网址:http://www.github.com/abo-abo/auto-yasnippet
  • auto-yasnippet源代码文档
  • auto-yasnippet源代码下载
  • Git URL:
    git://www.github.com/abo-abo/auto-yasnippet.git
    Git Clone代码到本地:
    git clone http://www.github.com/abo-abo/auto-yasnippet
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/abo-abo/auto-yasnippet
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    自动 yasnippet

    这是一个混合的键盘 MACROSyasnippet。 通常只在一个地方创建 Fragment,通常只在一个地方使用。 因为你没有离开当前的缓冲区,你只需输入你输入的代码,只要放置你想要的~ 字段和镜像即可。

    目录

    安装说明

    这很容易/建议从 MELPA 安装。 下面是你的~/.emacs的最小MELPA配置:

    (package-initialize)
    (add-to-list 'package-archives '("melpa". "http://melpa.org/packages/"))

    之后,m x 安装 RET auto-yasnippet ( 如果你最近还没有这么做的话,你可能会想 beforehand package-refresh-contents )。

    你还需要设置键绑定。 以下是我推荐的内容:

    (global-set-key (kbd "H-w") #'aya-create)
    (global-set-key (kbd "H-y") #'aya-expand)

    我也希望绑定这里选项,而不是使用选项卡展开 yasnippets:

    (global-set-key (kbd "C-o") #'aya-open-line)
    用法

    一个基本示例

    假设我们要写:

    count_of_red =get_total("red");
    count_of_blue =get_total("blue");
    count_of_green =get_total("green");

    使用 ~ 编写模板,以表示我们要替换的变量:

    
    count_of_~red = get_total("~red");
    
    
    
    

    在这里行上调用 aya-create,然后将模板转换为我们想要的值:

    
    count_of_red = get_total("red");
    
    
    
    

    然后调用 aya-expand,你可以'粘贴'的其他实例。 Yasnippet处于活动状态,因此你可以像通常一样在占位符之间进行制表符切换。

    
    count_of_red = get_total("red");
    
    
    count_of_ = get_total("");
    
    
    
    

    inline-文本

    ~ 替换符号后的符号。 如果要替换任意文本,请使用emacs样式反引号:

    
    `red'_total = get_total("`red'_values");
    
    
    
    

    多个占位符

    你可以替换模板中的多个值,就像普通的yasnippet一样。

    本例中,模板有多行,因此在调用 aya-create 之前需要选择相关行。

    
    ~FooType get~Foo() {
    
    
    //Get the ~foo attribute on this.
    
    
     return this.~foo;
    
    
    }
    
    
    
    

    我们只在这个示例( 第四个与第三个相同。) 中填充三个占位符。

    JavaScript - aya-one-line:

    aya-one-line 作为一个行Fragment的aya-createaya-expand的组合。 如果没有 aya-marker ( 默认 ~ ),则 aya-create 会调用它,但有 aya-marker-one-line ( 默认 $ )。 或者你可以自己调用它。

    field$ =document.getElementById("");

    调用 aya-create,其余与前面一样:

    field1 =document.getElementById("field1");
    field2 =document.getElementById("field2");
    field3 =document.getElementById("field3");
    fieldFinal =document.getElementById("fieldFinal");

    生成注释

    下面是一个使用 aya-tab-position的yasnippet。 如果你想使用 aya-open-line,你需要调用它。

    
    # -*- mode: snippet -*-
    
    
    # name: short comment
    
    
    # key: sc
    
    
    # --
    
    
    //---$1${1:$(make-string (- 47 aya-tab-position (length yas-text))?-)}$0
    
    
    
    

    不管从哪个缩进级别调用,用这个生成的注释总是以相同的列位置结束。

    用户定义函数

    create创建

    从当前行或者区域( 如果标记处于活动状态) 中移除"~",生成有效的代码。 创建的代码段被记录到 aya-current 中。

    expand展开

    扩展当前 aya-current 中的内容

    aya-open-line

    泛型扩展函数。它将根据上下文展开或者移到下一个域。

    aya-persist-snippet

    将当前自动代码段保存到用户代码段文件夹( 默认为 ~/.emacs.d/snippets/。) 当前 major-mode NAME 用于确定要存储代码段的代码段子目录。 例如在 js2-mode 中工作时,Fragment将保存到( 默认情况) ~/.emacs.d/snippets/js2-mode/

    你将被提示为 snippet 名称。 将打开相应的文件,但不保存,该文件的key: 参数上有点。 如果你想继续,请填写密钥,保存缓冲区并调用c c ( yas-load-snippet-buffer )。 否则,只要杀死缓冲区- 将不会有副作用。

    你可以自定义 aya-persist-snippets-dir 以使用另一个文件夹存储自动代码段。

    你将需要在使用新的代码Fragment和它的触发器之前运行 yas/reload-all