2011-12-06 35 views
5

我想要一个左右手领袖钥匙。如果我想让默认的\,成为我的领导者,我认为这将会像将nnoremap , \nnoremap , <leader>添加到我的.vimrc一样简单。但显然不是。我该怎么做呢?如何在vim中映射多个<leader>键?

+0

为双手拥有领导者钥匙的另一种解决方案:使用空间。想法来自Square的dotfiles,https://github.com/square/maximum-awesome – alxndr

回答

9

<leader>势必,,这对我的作品:

:nmap \ , 

所有我的领导者映射现在可以使用\,为领导者。我认为这是绊倒你的nnoremap

+1

是的,谢谢。真的在我的头上挠挠头。 –

+0

您可以编辑您的回复并使其不依赖于您当前的领导者映射吗?@pyrocrasty建议:nmamp \ aturegano

0

究竟该如何工作?当Vim遇到<leader>时,它用映射的键替换它。如果您使用两个(密钥为<leader>),它如何知道哪一个替换<leader>

然而,你可以做的是使用<leader><localleader>但这只是两个独立的领导者,没有将两个键映射到其中之一。

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

虽然您可以明确地映射您的快捷方式。

+0

快捷键,这就是我想要定义的。做类似nnoremap的东西不会转向'',''转换成'\'。如果是这样的话,它就相当于这个巨人有效地给了我两个充当领导者的钥匙。我做错了吗? –

+1

@TheDeeno - 在某种程度上,是的。你的第一个映射“nnoremap,”说:“每当我按下,用\替换,并......做任何事情”。然后是第二个说:“每当我按下,替换,领导和做...”。一个“覆盖”另一个。 – Rook

2

<leader>很方便,但您可以创建映射,如,mm\mm而不使用它。只需复制所有<leader>something'\直接重新映射:

nnoremap <leader>d "_d 

将成为

nnoremap ,d "_d 
nnoremap \d "_d 
2

您可以将一个领导者密钥映射到另一个领导者密钥(如在接受的答案中),但如果您打算首先使用<leader>,则应该自己对<leader>进行绑定。这样,如果更改(或删除)第一个密钥,绑定仍然可以工作。

map , <leader> 

注意,这仍然没有相当工作就像第二个领导者。如果第一位领导者未设置,则绑定仍然有效,但是,因为不再有“官方”领导者(即对于mapleader变量的有效值),Vim也将恢复使用\作为领导者。 (这对于OP来说不是问题,但可能适用于其他人。)

+0

这是最准确的答案,因为它不依赖于您正在使用的当前领导者键。 – aturegano