📅  最后修改于: 2023-12-03 15:35:35.866000             🧑  作者: Mango
在 Vim 中, map
和 noremap
是两个非常常见的命令,用于映射按键到命令中。这个功能主要是为了让你可以自定义一些命令,以方便你的编程。
使用 map
命令,可以将一组按键映射到命令。可以使用以下的语法进行映射:
:map {lhs} {rhs}
其中,{lhs}
是你要映射的按键组合(左手边),{rhs}
是你要映射到的命令(右手边)。例如:
:map <leader>y yy
这个命令就将 <leader>y
映射到了 yy
命令,也就是复制当前行。
但是,map
命令有一个问题,就是会递归映射。也就是说,如果你在映射的命令中再次使用了 {lhs}
中的按键组合,那么这个按键组合也会被映射到你的命令中。例如:
:map a b
:map b c
这里,我们将 a
映射到了 b
,而 b
又映射到了 c
。这样,当你在使用 a
时,实际上会触发 b
的命令,也就是触发了 c
的命令。
为了解决递归映射的问题,Vim 提供了 noremap
命令。和 map
命令类似,noremap
命令也是用于映射按键到命令中的。但是,它不会递归映射,而是只映射一次。使用以下的语法进行映射:
:noremap {lhs} {rhs}
例如:
:noremap <leader>y yy
这个命令就将 <leader>y
映射到了 yy
命令,和前面的例子一样。
使用 noremap
命令时,你不必担心递归映射带来的副作用。它只会映射一次,不会递归映射。
map
和 noremap
命令都是用于映射按键到命令中的,但是它们的映射规则是不同的。map
命令递归映射,可能会带来副作用,而 noremap
命令只映射一次,不会递归映射。在使用这两个命令时,你需要了解它们的映射规则,并根据自己的需要选择使用哪个。