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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM