簡體   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