加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

vim – 向后运动总是包容?

发布时间:2020-12-15 22:34:52 所属栏目:安全 来源:网络整理
导读:关于那些需要的人的独家动议的背景: 在运算符之后,我一直对Vim中的动作如何工作感到恼火.最近我听说这是因为它们通常是“排他性的”:它们省略了最右边的字符,而不是“包容性”操作,它会拾取起点和终点之间光标下的所有内容.由于某种原因,运算符暂挂模式中
关于那些需要的人的独家动议的背景:

在运算符之后,我一直对Vim中的动作如何工作感到恼火.最近我听说这是因为它们通常是“排他性的”:它们省略了最右边的字符,而不是“包容性”操作,它会拾取起点和终点之间光标下的所有内容.由于某种原因,运算符暂挂模式中的几乎所有动作似乎都是这样工作的,例如按下“dl”将只删除光标下的字符(将最右边的第二个字符排除),一行末尾的d0将离开最后一个线上的字符不受影响.像“d $”或“de”这样的动作再次打破了这种模式,并且还包括最右边的角色.更多在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修复一些运动,例如b和h.但这只是部分解决方案;许多“搜索”移动命令可以向后或向前移动,因此当向后移动时使它们包括最右边的字符是不可能的,而不会使向前运动不期望地影响运动目标的第一个字符.

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

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

对不起,很长的帖子,很难解释,我很生气.

解决方法

在您描述的大多数场景中,vim文本对象肯定是更好的候选者而不是动作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读