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

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

:lua vim.cmd('normal j')

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

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

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

点赞
用户965883
用户965883

你必须使用 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

如果在定义了 t() 函数的作用域中使用,则可以缩短你的示例至:

vim.cmd(t('normal <C-e>'))
2021-09-11 10:58:56