如何在vim中将lua函数绑定到按键上

我想在按钮点击时执行一个导入的函数,但是我得到一个未定义的错误。

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

原文链接 https://stackoverflow.com/questions/71143517

点赞
stackoverflow用户2858170
stackoverflow用户2858170

你需要在映射中提供一个 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>")

两者都没有经过测试。

2022-02-16 16:34:54
stackoverflow用户5506400
stackoverflow用户5506400

现代的键映射方式是使用 vim.keymap.set

vim.keymap.set('n', 'lhs', function() print("真正的lua函数") end)
2023-02-09 18:33:33