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

dim*_*mus 4 lua neovim

如果我想在 Neovim 中使用 Lua 向下移动光标,我可以使用以下命令

:lua vim.cmd('normal j')
Run Code Online (Sandbox Code Playgroud)

Vim/Neovim 中的“Ctrl-E”组合可将窗口向下滚动一行。我如何在 Lua 中使用它?例如,这种方法不起作用:

:lua vim.cmd('normal <C-e>')
Run Code Online (Sandbox Code Playgroud)

如何在 Neovim 中为 Lua 命令提供修饰键序列(Alt-、Ctrl-、Shift-)?

sev*_*rin 6

您必须使用转义键码vim.api.nvim_replace_termcodes()。请参阅nanotee 的 Nvim Lua 指南和Neovim API 文档中有关该函数的部分

:lua vim.cmd(vim.api.nvim_replace_termcodes('normal <C-e>'))
Run Code Online (Sandbox Code Playgroud)

在我的配置中,我采纳了nanotee的建议并定义了一个辅助函数,以避免拼写出超长的函数名称。

local function t(str)
    return vim.api.nvim_replace_termcodes(str, true, true, true)
end
Run Code Online (Sandbox Code Playgroud)

这将你的例子缩短为

vim.cmd(t('normal <C-e>'))
Run Code Online (Sandbox Code Playgroud)

如果在定义的范围内使用t()