如何在Neovim中使用mod键(Ctrl、Alt、Shift等)编写Lua命令

4
如果我想在Neovim中使用Lua向下移动光标,可以使用以下命令:
:lua vim.cmd('normal j')

在Vim/Neovim中,“Ctrl-E”组合键向下滚动窗口一行。我该如何在Lua中使用它?例如,以下方法是不起作用的:
:lua vim.cmd('normal <C-e>')

如何在Neovim中为Lua命令提供修改键序列(Alt-, Ctrl-, Shift-)?
1个回答

6

你需要使用vim.api.nvim_replace_termcodes()来转义按键代码。参见nanotee的Nvim Lua指南中有关该函数的部分以及Neovim API文档中的说明。

:lua vim.cmd(vim.api.nvim_replace_termcodes('normal <C-e>'))

在我的配置中,我遵循nanotee的建议,并定义了一个帮助函数来避免拼写那个极长的函数名。

local function t(str)
    return vim.api.nvim_replace_termcodes(str, true, true, true)
end

这将简化您的示例为

vim.cmd(t('normal <C-e>'))

如果在定义了t()的作用域中使用。


如果您的_G没有元表,则可以使用以下代码将_G转换为NeoVIM对象:setmetatable(_G, {__index = vim.api}) -- Makes vim.api Content global之后,您可以执行::lua nvim_input('iHello World with ' .. _VERSION .. '\nFrom: ' .. jit.version .. '\nOn: nvim ' .. (vim.version().minor) .. '<Esc>') - 逻辑:如果_G中不存在nvim_input,则会触发__index并在其中找到该命令。 - koyaanisqatsi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接