繁体   English   中英

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

[英]When should i use <leader> mapping in vim?

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

当我使用时:

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

nmap cp :CtrlP<return>

它做同样的事情。

我知道<leader>是什么。 但是我想知道普通映射和<leader>映射之间的区别。

那么它们之间有什么区别呢? 什么时候应该使用<leader>进行映射?

您说您知道<Leader>是什么,但请确保我再说一遍: <Leader>允许您定义可用于映射的键盘键的别名。 默认值为\\但是您可以使用mapleader更改此键。 例如:

let mapleader="\<Space>"

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

之后,让我们仔细看看mapnmap

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

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

(有关更多详细信息,请参见:h map以及其他可能的命令,例如vmapimap等。)

现在介绍您的两个映射:

  • map <leader>cp <Esc>:CtrlP<return>这意味着当您处于普通模式,可视模式或操作员暂挂模式时,如果按Lead + c + p ,由于<Esc>和调用该函数以打开Ctrlp

  • nmap cp :CtrlP<return>而此映射表示在正常模式下,按c + p将调用该函数以打开CtrlP。

所以当你说:

它做同样的事情

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

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

最后回答您的问题的标题“我何时应该在vim中使用<Leader>映射”,我想说这取决于您的工作流程,我不确定您能否给出一个好的答案(也就是说,哪个不是纯粹是主观的)。 只需尝试找到最适合您需求的内容即可。

奖金也为你将来的映射考虑使用noremapnnoremapvnoremap等等......这禁用递归映射,可以为你节省很多的麻烦。

红利2对于与vim相关的问题,您可能会对vim stackechange网站感兴趣,该网站反应非常活跃 (在我撰写此答案时,有95%的问题都有答案)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM