zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    leetcode刷题笔记 217题 存在重复元素
    leetcode刷题笔记 二百零六题 反转链表
    leetcode刷题笔记 二百零五题 同构字符串
    20201119日报
    np.percentile 和df.quantile 分位数
    建模技巧
    np.where() 条件索引和SQL的if用法一样,或者是给出满足条件的坐标集合
    np.triu_indices_from() 返回方阵的上三角矩阵的索引
    ax.set_title() 和 plt.title(),以及df,plot(title='')
    信用卡模型(三)
  • 原文地址:https://www.cnblogs.com/halberd-lee/p/10784494.html
Copyright © 2011-2022 走看看