手把手教你开发一个neovim插件
项目结构与插件路径
插件路径
这里差不多也是废话,理论上来说,vim的插件可以在任何位置,插件的方式也可以是各种形式,不过为了这里面还是有一些潜规则的.
首先就是插件的路径,一般来说,neovim会默认加载一些路径,可以在neovim中执行echo &rtp(rtp:runtime path)来查看默认的加载路径有哪些,不过由于我们是
自己开发的插件,就暂时不要放在这些路径里面了,避免启动时报错,假设我现在放在了~/temp/neovim/lua/lowb这个目录下进行开发lowb插件,然后在启动neovim的时候使用nvim --cmd "set rtp+=~/temp/neovim"启动就可以加载lowb插件了,
插件名就是lua路径下的文件夹名,如果你的插件比较简单,可以不用新建一个文件夹,直接搞一个lowb.lua就可以加载了,不过按照约定一般是有一个文件夹的,方便发布,供其他人使用
这里需要注意,一定放在lua的子目录下,否则neovim是不会进行加载这个插件的,参考
项目结构
init.lua
neovim会自动加载目录下的init.lua作为neovim的默认加载文件
开始开发
加载
确定了插件路径和项目结构,就可以开发lowb插件了,在~/temp/neovim/lua/lowb,先新建一个init.lua文件,文件内容如下:
1 | print("Hello lowb") |
然后使用nvim -c "set rtp+=~/temp/neovim"启动neovim
进入neovim的命令模式执行:lua require('lowb')
可以看到会打印Hello lowb
OK,现在插件成功加载了
导出函数
插件肯定不能简单的加载,还要导出一些函数供用户使用,更新init.lua
1 | local M = {} |
保存插件,重新使用命令nvim -c "set rtp+=~/temp/neovim"启动neovim
进入neovim的命令模式执行:lua require('lowb').say_lowb()
现在lowb插件基本完成,还有一项功能就是给用户设置的能力
setup函数
neovim插件一般是通过向外暴露一个setup函数来给用户设定,这倒不是强制规定,只是一个默认约定,像一些插件管理工具,比如lazy.vim一般就是默认使用setup来进行初始化插件,
现在再改一下init.lua文件
1 | local default_config = { |
保存退出,重新使用命令:nvim -c "set rtp+=~/temp/neovim" 启动neovim,
进入命令模式执行以下命令
1 | lua require('lowb').setup({name=finger}) |
就会看到打印的信息从”狗蛋”更新为”finger”

