简明Neovim插件开发指南

非保姆级教程,相信每一个vimer都是乐意折腾的。

写插件需要什么

  • Lua编程环境

luajitlua-language-server,自力更生。

  • 调试器

mfussenegger/nvim-dap, jbyuki/one-small-step-for-vimkind,有能力的配置一下,没办法的用print大法。

一般的插件长什么样

lua/
  plugin_name/
    init.lua
plugin/
  plugin_name.lua

lua目录下的lua文件可使用require导入,插件加载时plugin目录下的lua文件会被执行。

这两个目录都不是必须的,但至少要有一个,否则这个插件什么都干不了。

怎么加载本地的插件

所有插件管理器都可以从本地加载插件,lazy.nvim更方便一点,设置一下dev=truedir=path_to_plugin即可。

插件内部的模块是怎么管理的

在任何地方都可以通过require("plugin_name")导入lua/plugin_name/init.lua。以此类推,导入lua/plugin_name/xxx.lua使用require("plugin_name.xxx")

不要试图通过相对路径导入模块。

搞个简单的例子看一下

niuiic/cp-image.nvim,这是一个从剪贴板生成图片并在当前缓冲区中插入引用代码的插件。无需细看逻辑实现,关注插件函数的导出与使用即可。

光有lua怎么和编辑器交互

neovim内置了不少lua函数,可以调用这些函数与编辑器和系统进行交互。所有函数都挂在全局变量vim上。

一般的开发熟悉一下vim.fnvim.apivim.lspvim.loop这几个模块下的函数即可。

  • vim.fn昔日vimscript函数的lua实现。
  • vim.api另起炉灶的lua api。
  • vim.lsplsp lua api。
  • vim.looplua uv库。

被折腾得半死,能不能有个现成的开发环境

niuiic/modern-neovim-configuration,个人配置,不负责稳定性,不定时破坏性更新,不介意的话可参考配置。

写了些插件,推荐一下,也算是案例

  • niuiic/format.nvim

    • 格式化插件
    • 可在一次格式化操作中同时应用多个程序,比如执行perttier之后再执行eslint fix解决一下冲突
    • 易配置,易扩展,只要知道怎么用命令格式化文件即可应用该程序
    • 异步格式化
    • 局部格式化
  • niuiic/divider.nvim

    • 分割线插件
    • 正则匹配自定义代码分割线
    • 高亮、跳转、定位
  • niuiic/dap-utils.nvim

    • nvim-dap工具集
    • 保存/复原/切换/搜索断点
    • 保存/复原watches
    • 安全地在调试启动前注入自定义操作
  • niuiic/translate.nvim

    • 翻译插件
    • 支持任意命令行翻译工具
    • 支持多种输入输出方式
    • 异步
  • niuiic/part-edit.nvim

    • 独立编辑文件的一部分
    • 比如将markdown文件中的代码块抽离到独立的buffer中编辑,避免lsp等配置的冲突
  • niuiic/multiple-session.nvim

    • session管理器
    • 自动保存/恢复session
    • 多session自由切换
    • 自由扩展功能,如保存/恢复断点、watches、quickfix、undo记录等
  • niuiic/cp-image.nvim

    • 从剪贴板生成图片并插入引用代码
    • 用于实现截图并插入markdown文档的功能
全部评论

相关推荐

03-18 09:45
莆田学院 golang
牛客749342647号:佬,你这个简历模板是哪个,好好看
点赞 评论 收藏
分享
今天 11:16
已编辑
东华理工大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务