neovim 中多种组合的映射键

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

我正在使用瑞典/芬兰键盘布局,并尝试将

{
}
[
]
字符映射到更方便的按键。

我尝试将以下几行放入我的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 })

在插入模式下运行良好,但不能与其他命令结合使用。例如,当我按

时,我希望光标移至
{
但发生的情况是它移至
Å

知道如何在不显式映射每个组合的情况下解决这个问题吗?

neovim
1个回答
0
投票

这应该有效:

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
据称也适用于:

  1. 插入模式
  2. 命令行模式 (
    :
    )
  3. 搜索模式 (
    /
    ,
    ?
    )

但是,通过简单的尝试,我发现命令行模式似乎并不尊重

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
© www.soinside.com 2019 - 2024. All rights reserved.