我正在使用瑞典/芬兰键盘布局,并尝试将
{
、}
、[
、]
字符映射到更方便的按键。
我尝试将以下几行放入我的init.lua
vim.keymap.set({ "i", "o" }, "å", "[", { noremap = true })
vim.keymap.set({ "i", "o" }, "¨", "]", { noremap = true })
vim.keymap.set({ "i", "o" }, "Å", "{", { noremap = true })
vim.keymap.set({ "i", "o" }, "^", "}", { noremap = true })
在插入模式下运行良好,但不能与其他命令结合使用。例如,当我按
fÅ
时,我希望光标移至 {
但发生的情况是它移至 Å
。
知道如何在不显式映射每个组合的情况下解决这个问题吗?
这应该有效:
vim.keymap.set({"l"}, "å", "[", { noremap = true })
vim.opt.iminsert = 1
lmap
(语言映射)适用于接受文本字符的命令的参数,例如“r”和“f”(请参阅:h language-mapping
)。
iminsert
设置用于打开 lmap
(请参阅 https://vi.stackexchange.com/a/10843 和 :h iminsert
)。
通过设置
iminsert
打开时,lmap
据称也适用于:
:
)/
, ?
)但是,通过简单的尝试,我发现命令行模式似乎并不尊重
lmap
,所以可能需要cmap
。
总而言之,以下设置应在使用
f
和 r
(lmap
)、插入模式 (lmap
)、搜索模式 (lmap
)、命令行模式下启用映射,并处于操作员等待模式。
vim.keymap.set({ "l", "c", "o" }, "å", "[", { noremap = true })
vim.keymap.set({ "l", "c", "o" }, "¨", "]", { noremap = true })
vim.keymap.set({ "l", "c", "o" }, "Å", "{", { noremap = true })
vim.keymap.set({ "l", "c", "o" }, "^", "}", { noremap = true })
vim.opt.iminsert = 1