[英]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.