繁体   English   中英

在 vim 中映射键时 nore 是什么意思?

[英]What does nore mean when mapping keys in vim?

在 vim 中映射键时nore是什么意思? 例如,这两个映射之间有什么区别?

:map ddd ddjdd

:noremap ddd ddjdd

这意味着映射是适用- 重新草书。

为了显示,

:nmap x dd

假设您将x在正常模式下映射到dd (删除行),以节省一些时间,删除行。 一切正常,直到你需要其他映射中的x(删除字符)来删除两个字符,

:nmap c xx

因为现在上层映射确实如此

:nmap c dddd

即将删除两行。

因此,为了保留“原始”映射(vim键),您可以采用非递归方式,

:nnoremap x dd
:nnoremap c xx

一切正常(映射不......啊,你明白了)......

使用“nore”进行所有映射通常是一种很好的做法,因为你永远不知道哪些插件可能依赖于什么,以及你用“普通”映射打破了什么样的vim行为。

这些内容都包含在内置文档中

map

对于应用map命令的模式,将键序列{lhs}映射到{rhs}。 然后进一步扫描结果,包括{rhs},以进行映射。 这允许嵌套和递归使用映射。

noremap

对于应用map命令的模式,将键序列{lhs}映射到{rhs}。 禁止映射{rhs},以避免嵌套和递归映射。 通常用于重新定义命令。 {Vi无此功能}

nore代表非递归。 它会导致映射的右侧忽略映射。

如果你阅读整个单词,它会有所帮助。 “noremap”,如“无重新映射”。 意味着映射无法更改。

我认为是vi做了这样一个反直觉的设置,这使得map代表递归映射,而不是明确地将re添加到 inply 递归映射

https://learnvimscriptthehardway.stevelosh.com/chapters/05.html

什么时候应该使用这些非递归变体而不是它们的正常对应物?

总是。

不,认真的,总是。

当您安装插件或添加新的自定义映射时,使用裸 *map 只是在寻找痛苦。

暂无
暂无

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

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