• Emacs yasnippet


    yasnippet

    目录

    • 简述
    • 安装
    • 配置
    • 添加自定义模板


     1简述

    yasnippet 是一款自动补全插件。同时可以自定义补全模板。实现想怎么补全就怎么补全。

    2 安装

    yasnippet 的 github地址. 其实yasnippet 的相关说明及安装方法在这个地址上都有说明. 我在这里,做下赘述,方便不习惯阅读英文的兄弟们可以快速上手。 下面是安装过程:

    make dir ~/.emacs.d/plugins
    cd ~/.emacs.d/plugins
    git clone --recursive https://github.com/joaotavora/yasnippet
    

    3 配置

    将yasnippet 的配置添加到init.el 中(如果对lisp语言了解,也可以添加到其他文件中, 然后在init.el 中引用也可).

    • 全局默认启用

      (add-to-list 'load-path
                    "~/.emacs.d/plugins/yasnippet")
      (require 'yasnippet)
      (yas-global-mode 1)
      
    • 交互式开启 通过在buffer 区域输入M-x yas-minor-mode 可以控制当前buffer 是否启用yasnippet.

      (yas-reload-all)
      (add-hook 'prog-mode-hook #'yas-minor-mode)
      

    4 添加自定义模板

    其实是开始,我想要的就是这个功能。可以给人自由飞翔的感觉.

    4.1 打开编辑

    使用命令 M-x yas-new-snippet 打开一个新buffer,或者直接新建一个文件,输入内容后保存到你指定的位置即可。

    用M-x yas-new-snippet 打开的buffer内容默认如下:

    # -*- mode: snippet -*-
    # name:
    # key:
    # –-
    

    对以上几个选项加心说明:

    name
    snippet 文件的名字。当触发补全功能时,snippet会读取这个文件,将文件中的内容补充到buffer中。
    key
    快捷键。输入快捷键,然后<tab> 即可补全。
    --
    分界线。从该行以下,全部是补齐内容.

    在网上找了一段示例:

    # name: file header
    # key: fh
    # binding: direct-keybinding
    # --
    #!/usr/bin/env python
    # coding:utf-8
    # Filename:`(file-name-nondirectory buffer-file-name)`
    
    $0
    

    找这段,是因为这段里有个可爱的用法: `(file-name-nondirectory buffer-file-name)` . 这个有意思了,这个是显示当前buffer的名字的,让emacs帮你自动写。

    4.2 保存

    我找了好久才找到怎么保存的.当编辑好后,我们要将buffer 中的内容保存下来,以便日后使用。 C-c C-c ,会提示保存table, snippet 会把我们创建的文件在内部以表格的形式保存:

    1    Choose or enter a table (yas guesses snippet-mode):
    snippet-mode
    

    这里可以使用默认的snippet-mode也可以在snippets 路径中创建另外一个路径,比如python-mode,C++-mode,js-mode 等。在此处,我们可以输入python-mode:

    0    Choose or enter a table (yas guesses snippet-mode): python-mode
    
    

    然后回车:

    [yas] Loaded for python-mode. Also save snippet buffer? (y or n)
    

    这里输入y , yasnippet 会以 “ # name: " 的值为文件名,提示保存路径及文件名

    5    File to save snippet in: ~/.emacs.d/snippets/python-mode/
    ~/.emacs.d/snippets/python-mode/ifelse
    ./
    ../
    file header
    whielse
    

    第一行为默认行。回车即可。

    [yas] Snippet "ifelse" loaded for python-mode.
    

    再来看一下,该文件是否已存储成功:

    ls -lrt
    total 24
    -rw-r--r--  1 halberd  staff   96 Jan 14 17:13 whielse
    -rw-r--r--  1 halberd  staff  157 Jan 14 17:17 file header
    -rw-r--r--  1 halberd  staff  132 Jan 14 17:52 ifelse
    

    Author: halberd

    Created: 2019-04-26 Fri 19:31

  • 相关阅读:
    子信息传递多个参数
    Oracle q' 简化单引号转义
    HTML的target属性中_blank、_self、_parent、_top含义
    数据库设计之“有时不得不违背的第三范式”
    Jquery下的Ajax调试方法
    JQuery.Ajax之错误调试帮助信息
    定时删除数据-用JOB
    数据分析
    机器学习数学基础
    机器学习数学基础
  • 原文地址:https://www.cnblogs.com/halberd-lee/p/10784494.html
Copyright © 2020-2023  润新知