lazyvim自带的代码补全和代码段已经很强大了,但是在一些场景中,
尤其是我在些markdown时,经常需要自定义代码片段,旨在提高书写效率
下面是在lazyvim自定义代码段的步骤:

安装Luasnip插件

打开LazyExtras安装luasnip插件
LazyExtras
installSnip

创建代码片段文件

1
2
mkdir -p ~/.config/nvim/lua/snippets
touch ~/.config/nvim/lua/snippets/my_snippets.lua

自定义代码片段

代码片段用lua编写,样例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
local ls = require("luasnip")
local s = ls.snippet
local i = ls.insert_node
local t = ls.text_node
local c = ls.choice_node
local f = ls.function_node

-- 定义自定义代码片段
ls.add_snippets("lua", {
-- 函数模板
s("func", {
t("function "), i(1, "name"), t("("), i(2, "args"), t(")"), t({"", " "}), i(0),
}),

-- print 语句
s("pr", {
t("print("), i(1), t(")"),
}),

-- 条件语句
s("if", {
t("if "), i(1, "condition"), t(" then"), t({"", " "}), i(0), t({"", "end"}),
}),

-- for 循环
s("for", {
t("for "), i(1, "i"), t(" = 1, "), i(2, "n"), t(" do"), t({"", " "}), i(0), t({"", "end"}),
}),
})

加载代码片段

为了使这些代码片段在 Neovim 启动时生效,你需要在 init.lua 或其他配置文件中加载你刚才创建的代码片段文件。

1
2
-- 加载自定义代码片段
require("luasnip.loaders.from_lua").load({ paths = "~/.config/nvim/lua/snippets" })

现在,你可以在 Neovim 中使用自定义代码片段了。只需要在插入模式下输入触发词并按 Tab 键,LuaSnip 会展开对应的代码片段。

  • 输入 func 然后按 Tab,会展开为 function name(args) end,并将光标定位在函数名位置。
  • 输入 pr 然后按 Tab,会展开为 print(),并将光标定位在括号内。

完善代码片段

你可以根据自己的需求继续添加和完善代码片段。例如,你可以添加更多的编程语言支持,或者更复杂的代码片段(如带参数的函数调用、类定义等)。
为不同语言添加代码片段

你还可以为不同的编程语言定义专用的代码片段。例如,为 Python 和 JavaScript 分别定义片段:

1
2
3
4
5
6
7
8
9
10
11
12
13
-- Python 代码片段
ls.add_snippets("python", {
s("def", {
t("def "), i(1, "function_name"), t("("), i(2, "args"), t("):"), t({"", " "}), i(0),
}),
})

-- JavaScript 代码片段
ls.add_snippets("javascript", {
s("log", {
t("console.log("), i(1), t(")"),
}),
})

总结

在 LazyVim 中自定义代码片段非常简单,主要是通过 LuaSnip 插件实现。你只需要创建代码片段文件、定义你的代码片段,并确保 LuaSnip 加载这些片段文件。通过这种方式,你可以提高编程效率,减少重复的代码输入。