gpt4 book ai didi

vim - 使向后运动始终包括在内?

转载 作者:行者123 更新时间:2023-12-04 15:58:11 24 4
gpt4 key购买 nike

为那些需要的人提供独家动议的背景:

我一直对 Vim 中操作符之后的 Action 如何工作感到恼火。最近我听说这是因为它们通常是“独占”的:它们省略了最右边的字符,而不是“包含”操作,后者会在开始点和结束点之间拾取光标下的所有内容。出于某种原因,几乎所有运算符(operator)挂起模式下的 Action 似乎都是这样工作的,例如按“dl”只会删除光标下的字符(留下最右边的第二个字符),行尾的 d0 将保留最后一个字符就行了不受影响。一些像“d$”或“de”这样的 Action 又打破了这种模式,还包括最右边的字符。更多在 Motion.txt .

我发现排他性的概念不必要且令人困惑。我可以理解,当您“搜索”下一次出现的单词、标记或搜索结果时,您通常希望在操作时不选择运动的实际目标。排他性运动实现了这一点。但是排他性概念的不一致很奇怪。主要问题是当您向后移动某处时:操作将保留最右边的字符,即起始字符,不受影响,并且无论您做什么,仍然会对您移动的目标进行操作,这与向前搜索不同。例如,您希望“edb”完全删除一个词,但事实并非如此。与此同时,“bde”确实如此。 “dl”只删除光标下的字符(而不是包括右边的字符),“dh”只删除左边的一个字符。 This inconsistency is annoying, and seemingly makes it look like Vim secretly is keeping the cursor actually between letters on the left side of the cursor block.

幸运的是,在操作符切换字符操作的排他性之后使用“v”,所以我已经能够使用 onoremap vb 修复一些 Action ,例如 b 和 h。但这只是部分解决方案;许多“搜索”移动命令可能会向后或向前移动,因此在向后移动时让它们包含最右边的字符是不可能的,而不会使向前移动对运动目标的第一个字符产生不利影响。

我的问题简而言之:当相对于光标位置向后移动时,是否有任何简单的方法可以使所有操作都包含在内(包括光标起始点下的字符),而不会影响向前运动?

(更好的是完全忘记整个排他性并让“v”切换是否包括运动的目标(因此“dn”将从光标中删除直到搜索结果开始,“dvn”将从光标中删除到结果的结尾),但这可能意味着编辑源。)

对不起,长篇文章,很难解释,我很生气。

最佳答案

在您描述的大多数场景中,vim 文本对象肯定比 Action 更适合使用。

关于vim - 使向后运动始终包括在内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21686886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com