我正在尝试将下面的条件Map转换为lua代码
:nnoremap <expr> <CR> ((&buftype is# "quickfix") ? "<CR>" : ":\:nohlsearch<cr>\n")
这个Map将Enter键Map到:nohlsearch
命令,但前提是我们不在quickfix
缓冲区中。在这里,您需要使用Enter键来选择行。
我提供的lua代码是:
vim.keymap.set("n", "<CR>", function()
if vim.bo.buftype == "quickfix" then
print("<CR>")
vim.api.nvim_input("<CR>")
else
print("nohlsearch")
vim.cmd(":nohlsearch")
end
end, {desc = "call :nohlsearch to disable highlighting (but only if in file editing)"} )
分支、vim.cmd
和print()
部分按预期工作,但vim.api.nvim_input("<CR>")
部分不工作(在quickfix中,我不能使用Enter来选择行)。它不等效于vimscriptMap中的<CR>
。
此外,必须有一种更惯用的方法来编写此Map。
我开始这个转换是因为我需要使条件更复杂。
1条答案
按热度按时间yxyvkwin1#
你需要更彻底地检查
vim.keymap.set
的文档(参见:h vim.keymap.set
)。你做错了,并且丢失了一些参数。下面是工作情况(在nvim 0.7.2中测试):您可以在lua代码中返回这些键Map,但是缺少
{expr = true, replace_keycodes = true}
部分。如果你还没有看过nvim lua指南,通读一遍,确保你理解了所有的内容,你会比大多数用户更了解nvim。