如何将用户输入合并到 neovim 中的输入模式 lua 键盘映射中

问题描述 投票:0回答:1

在 Vim 中,输入模式映射可以使用

<c-r>=input()
来获取用户输入并将其插入到光标处。在 neoVim 中这是如何完成的?

具体vim脚本示例:

imap <buffer> <unique> ;_ <c-r>="_{".input("sub:")."}"<cr>

neoVim+lua 等价物是什么?

input lua neovim
1个回答
0
投票

您可以使用

vim.fn.input()
获取输入并将其存储在 Lua 变量中。然后使用
vim.api.nvim_win_get_cursor(0)
获取当前缓冲区中的当前光标位置。最后,使用
vim.api.nvim_buf_set_text()
设置当前缓冲区中当前光标位置的文本。

这是完整的映射:

vim.keymap.set("i", "<C-r>", function()
    local user_input = vim.fn.input("Enter input: ")
    local row, col = unpack(vim.api.nvim_win_get_cursor(0))
    vim.api.nvim_buf_set_text(0, row - 1, col, row - 1, col, { "_{" .. user_input .. "}" })
end)

还可以选择使用

vim.api.nvim_feedkeys()
将文本插入缓冲区。

© www.soinside.com 2019 - 2024. All rights reserved.