我是vim的新手。我正在尝试在vim中重新映射。
当我使用时:
map <leader>cp <Esc>:CtrlP<return>
nmap cp :CtrlP<return>
它做同样的事情。
我知道<leader>
是什么。但是我想知道法线贴图和使用<leader>
贴图的映射之间的区别。
那么他们之间有什么不同?我应该何时使用<leader>
进行映射?
答案 0 :(得分:1)
你说你知道<Leader>
是什么,但我要确定我会再说一遍:<Leader>
允许你定义一个键盘键的别名,你可以在你的映射中使用它。默认值为\
,但您可以使用mapleader
更改此密钥。例如:
let mapleader="\<Space>"
允许您使用空格键作为您的领导者。
之后,让我们仔细看看map
和nmap
:
map
map创建一个存在3种模式的映射:Normal,Visual和Operator-pending模式。
nmap
创建一个仅在正常模式下存在的映射。
(有关详细信息和:h map
,vmap
等其他可能的命令,请参阅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 另外,对于将来的映射,请考虑使用noremap
,nnoremap
,vnoremap
等...这会禁用递归映射并可以为您节省很多麻烦。
Bonus 2 对于您的vim相关问题,您可能对vim stackechange site感兴趣,这是非常被动的(当我写这个答案时,95%的问题都有答案)