在 Vim 中,输入模式映射可以使用
<c-r>=input()
来获取用户输入并将其插入到光标处。在 neoVim 中这是如何完成的?
具体vim脚本示例:
imap <buffer> <unique> ;_ <c-r>="_{".input("sub:")."}"<cr>
neoVim+lua 等价物是什么?
您可以使用
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()
将文本插入缓冲区。