我什么时候应该在vim中使用<leader>映射?

时间:2015-07-26 11:06:17

标签: vim

我是vim的新手。我正在尝试在vim中重新映射。

当我使用时:

map <leader>cp <Esc>:CtrlP<return>

nmap cp :CtrlP<return>

它做同样的事情。

我知道<leader>是什么。但是我想知道法线贴图和使用<leader>贴图的映射之间的区别。

那么他们之间有什么不同?我应该何时使用<leader>进行映射?

1 个答案:

答案 0 :(得分:1)

你说你知道<Leader>是什么,但我要确定我会再说一遍:<Leader>允许你定义一个键盘键的别名,你可以在你的映射中使用它。默认值为\,但您可以使用mapleader更改此密钥。例如:

let mapleader="\<Space>"

允许您使用空格键作为您的领导者。

之后,让我们仔细看看mapnmap

  • map map创建一个存在3种模式的映射:Normal,Visual和Operator-pending模式。

  • nmap创建一个仅在正常模式下存在的映射。

(有关详细信息和:h mapvmap等其他可能的命令,请参阅imap

现在谈谈你的两个映射:

  • map <leader>cp <Esc>:CtrlP<return>这意味着当您处于正常模式,视觉模式或操作员暂挂模式时,如果按 Leader + c + p 感谢<Esc>您将返回正常模式并调用该功能以打开Ctrlp

  • nmap cp :CtrlP<return>此映射表示当您处于正常模式时,按 c + p 将调用该函数以打开CtrlP。 / p>

所以当你说:

  

它做同样的事情

我猜你在正常模式下尝试按 Leader + c + p 以及 c + p 这两个都打开了CtrlP。这是预期的行为,因为您将两个组合键映射到同一个操作,我怀疑您是在相同的vim会话中执行此操作而不是清除先前的映射。

如果用nmap cn :CtrlP<return>替换第二个映射,你会看到 c + p 不会打开CtrlP, Leader + c + p 将打开CtrlP,因此 c + n

最后回答你问题的标题“我什么时候应该在vim中使用<Leader>映射”我会说这取决于你的工作流程我不确定你能给出一个好的答案(那就是对这个问题说,这不是纯粹主观的。试着找到最适合您需求的东西。

Bonus 另外,对于将来的映射,请考虑使用noremapnnoremapvnoremap等...这会禁用递归映射并可以为您节省很多麻烦。

Bonus 2 对于您的vim相关问题,您可能对vim stackechange site感兴趣,这是非常被动的(当我写这个答案时,95%的问题都有答案)