vim 如何将 luafunction 绑定到按键

How to bind a luafunction to keypress in vim

我想在单击按钮时执行导入的函数,但出现未定义的错误。

local LazyComp = require('plugins/LazyComp/LazyComp')
vim.api.nvim_set_keymap('n', '<Tab>', "LazyComp.getFile()<cr>", {expr = true, noremap = true})

您需要在该映射中提供 vim 脚本表达式。不是 Lua 函数调用。无法通过字符串获取从 nvim 调用的局部变量。

我不是 nvim 的专家 Lua API 但是 1 分钟的网络搜索给了我这个解决方案:

vim.api.nvim_set_keymap('n', '<TAB>', "<cmd>lua require('plugins/LazyComp/LazyComp').getFile()<CR>")

或者您需要让您的模块在全球可用。

_G.LazyComp = require('plugins/LazyComp/LazyComp')

那么你应该可以通过v:lua

访问全球环境
vim.api.nvim_set_keymap('n', '<TAB>', "v:lua.LazyComp.getFile()<CR>")

均未测试。