如何在vim中映射多个<leader>按键?

11

我希望有一个左右手领导键。如果我希望默认的 \, 都成为我的领导键,我认为只需在我的 .vimrc 中添加 nnoremap , \nnoremap , <leader> 就可以了。但显然不是这样。我该如何做?


有一个替代方案可以为双手设置领导键:使用空格键。这个想法来自Square的dotfiles,https://github.com/square/maximum-awesome - alxndr
4个回答

16

我的<leader>绑定到,,这对我有效:

:nmap \ ,

现在可以使用\,作为我的所有leader mappings,我认为让您感到困惑的可能是nnoremap


1
请问您能否编辑您的回复,使其不依赖于您当前的领导映射?@pyrocrasty 建议使用:nmamp \ <Leader>。 - aturegano

7

您可以将一个 leader key 映射到另一个 leader key,就像被接受的答案一样,但是如果您首先使用 <leader>,则应该将绑定设置为 <leader> 本身。这样,如果您更改(或删除)第一个 leader key,则绑定仍将起作用。

map , <leader>

请注意,这仍然不像第二个领导者那样完全有效。如果第一个领导者未设置,则绑定仍将起作用,但是Vim还将回归使用\作为领导者,因为没有“官方”领导者(即mapleader变量的有效值)。 (这对于OP来说不是问题,但对其他人可能会有影响。)

这是最精确的答案,因为它不依赖于您当前使用的领导键。 - aturegano

3

<leader>很方便,但是你可以创建像,mm\mm这样的映射而不使用它。只需复制所有的<leader>something并直接使用'\重新映射它们:

nnoremap <leader>d "_d

将会变成

nnoremap ,d "_d
nnoremap \d "_d

0

那会是怎样的工作方式呢?当Vim遇到<leader>时,它会将其替换为映射键。如果您使用两个(键用于<leader>),它将如何知道要用哪一个来替换<leader>

但是,您可以使用<leader><localleader>,但这只是两个单独的leader,而不是将两个键映射到其中一个。

所以,不行......你不能。

不过,您可以明确地映射您的快捷方式。


快捷方式,这就是我想定义的东西。像“nnoremap,\”这样做并没有将“,”变成“\”。如果它这样做了,那么它等价于将mapleader实际上给我两个充当领导者的键。我是不是做错了什么? - Dane O'Connor
1
@TheDeeno - 从某种意义上说,是的。你的第一个映射 'nnoremap , ' 的意思是“每当我按下逗号时,用反斜杠替换逗号并执行...任何操作”。然后是第二个映射,它的意思是“每当我按下逗号时,用 leader 替换逗号并执行...”。一个“覆盖”了另一个。 - Rook

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接