Skip to content
On this page

Neovim代码片段插件luasnip


标签:vim/config  

先安装, 编辑 ~/.config/nvim/lua/plugins.lua , 参考 packer.nvim:

lua
use "L3MON4D3/LuaSnip"

编辑配置文件 ~/.config/nvim/lua/core.lua:

lua
local luasnip = require('luasnip')

luasnip.config.set_config({
	history = true,
	updateevents = 'TextChanged,TextChangedI'
})

require("luasnip.loaders.from_snipmate").lazy_load({paths = "~/.config/nvim/snippets"})

vim.api.nvim_set_keymap('i', '<C-j>', '<Plug>luasnip-expand-or-jump', {silent = true})
vim.api.nvim_set_keymap('s', '<C-j>', '<Plug>luasnip-expand-or-jump', {silent = true})
vim.api.nvim_set_keymap('i', '<C-k>', '<Plug>luasnip-jump-prev', {silent = true})
vim.api.nvim_set_keymap('s', '<C-k>', '<Plug>luasnip-jump-prev', {silent = true})

我使用的是 snipmate 格式的代码片段, 其他还是支持 vs_code 格式的, 可以到官方仓库的文档查看.

创建~/.config/nvim/snippets 文件, 添加一个代码片段文件, 这里以 C 语言为例,

创建编辑 snipptes/c.snipptes:

txt
snippet main
    #include <stdio.h>

    int main(int argv, const char * argc[])
    {
        ${1:/* Coding here */}
        return 0;
    }

snippet for
    for (${1:int i = 0; i < ${2:N}; i++}) {
        ${3:// do something}
    }

snippet funh
        /*
	     * funciotn:
         * @param [ in]
         * @param [out]
         * @return
         *

现在打开一个 .c 文件, 然后输入 :LuaSnipListActivate 可以看到可用的片段了.

根据我上面设置的快捷键, 在输入 mainCtrl + j 可以直接插入代码片段, 再次按 Ctrl + j 可以跳转输入槽, 按 Ctrl + k 到上一个输入槽. 如果觉得不方便也可以自己设置.

Last updated: