Vim 如何删除,包括当前字符?
假设我输入了“abcdefg”,光标在末尾。我想删除回c,这样我只剩下“abc” 是否有类似于Vim 如何删除,包括当前字符?,vim,Vim,假设我输入了“abcdefg”,光标在末尾。我想删除回c,这样我只剩下“abc” 是否有类似于d的命令包含当前字符?我知道我可以做dTcx,但是x感觉像是一个解决方案,我想有更好的解决方案。使用d?c 这将启动d模式,搜索回“c”,然后删除到光标位置 编辑:不,这不包括当前位置…我可能误解了你的请求,但是3hd$可以吗?不可以。对于c、y和d来说,向后运动总是从当前字符的左侧开始,这在某种程度上是合乎逻辑的,但也令人不安 我能想到的唯一“干净”解决方案要么意味着首先移动到c之后的字符,然后执行向
d
的命令包含当前字符?我知道我可以做dTcx
,但是x
感觉像是一个解决方案,我想有更好的解决方案。使用d?c
这将启动d
模式,搜索回“c”,然后删除到光标位置
编辑:不,这不包括当前位置…我可能误解了你的请求,但是
3hd$
可以吗?不可以。对于c
、y
和d
来说,向后运动总是从当前字符的左侧开始,这在某种程度上是合乎逻辑的,但也令人不安
我能想到的唯一“干净”解决方案要么意味着首先移动到c
之后的字符,然后执行向前删除:
Tcde
或使用视觉模式:
vTcd
v3hd
但是,考虑到你的样本,并假设你只是为了修正而进入正常模式,整个事情对我来说听起来非常浪费
保持插入模式并简单地执行以下操作如何←←←←? 试试这个:
TcD
这将为您的示例留下abc
。。。如果abcdefg
是这行的最后一个字
如果不是该行的最后一个字,您可以执行以下操作:
ldTc
或打高尔夫球,在3键内完成:
3Xx or l4X
请注意一个类似的问题:有一个设置允许超出行的末尾
从文档:
虚拟编辑意味着可以将光标定位在存在的位置
没有真实的角色。这可以是标签的一半,也可以是末端
排队等候。用于在视觉模式下选择矩形和
编辑表格。
“onemore”不一样,它只允许移动光标
在行的最后一个字符之后。这使得一些命令更加复杂
始终如一。以前,光标始终超过行的末尾
如果电话线是空的。但它远远不能与Vi兼容。也可能
破坏一些插件或Vim脚本。例如,因为| l |可以移动
最后一个字符后的光标。小心使用!
使用$
命令将移动到行中的最后一个字符,而不是
过去吧。这实际上可能会将光标向左移动!
g$
命令将移动到屏幕行的末尾。
把“全部”和“一个更多”结合起来是没有意义的,但你会的
没有得到警告
简而言之,您可以尝试
:设置virtualdit=onemore
,看看您的环境是否稳定。在本例中,我将使用vFdd
。我认为它比其他解决方案更好,因为命令明确显示了要删除的内容。删除时包括当前字符和指定字符
:进入视觉模式(标记文本)v
:向后查找/转到字符F
:要删除的字符“d”d
:删除命令d
由于它是视觉模式,因此在执行实际删除之前也可以移动光标
d
。这使得该命令功能强大,甚至可以删除非唯一字符,方法是首先在字符附近标记一个特殊字符,然后调整位置。我使用了有史以来最愚蠢的方法:D@MostafaShahverdyxxxx
?或者ddOabc
?哼唱:D,有时使用c
中的Del!是的,有可能是重复的。或Fdd$
。但我也希望在我不在队伍的尽头的时候工作,这也让我感觉像是一种变通。基本上,我是问是否有包含当前角色的运动/删除。对于4x退格
,我想我会在实际工作中这样做。谢谢。当然,这只是一个例子;可能有12或30个字符要删除,它可能在一条直线的中间。