假设我输入了“abcdefg”,光标在末尾。我想删回回c,所以我只剩下“abc”了。
是否有像d
这样的命令包含当前字符?我知道我可以做dTcx
,但x
感觉像是一种解决办法,我认为有更好的解决方案。
答案 0 :(得分:6)
没有。向后动作始终从c
,y
和d
的当前角色的左侧开始,这在某种程度上是合乎逻辑但也令人不安。
我能想到的唯一“干净”解决方案是先在c
之后移动到char,然后进行前向删除:
Tcde
或使用视觉模式:
vTcd
v3hd
但是,考虑到你的样本并假设你正在进入正常模式进行校正,整个事情听起来非常浪费我。
如何保持插入模式并简单地做← ← ← ←?
答案 1 :(得分:2)
试试这个:
TcD
这将为您的示例留下abc
......如果abcdefg
是该行的最后一个字,那么这就好了。
如果它不是该行中的最后一个单词,您可以这样做:
ldTc
或打高尔夫球,在3键击中进行:
3Xx or l4X
答案 2 :(得分:2)
请参阅this answer一个类似的问题:有一个设置可以超越行尾
来自doc:
虚拟编辑意味着光标可以放在有光标的位置 没有实际的性格。这可以是标签的一半或超出结尾 这条线。用于在可视模式下选择矩形 编辑表格。 " onemore"不一样,它只允许移动光标 在该行的最后一个字符之后。这使得一些命令更多 是一致的。以前,光标始终超过行尾 如果该行是空的。但它远非Vi兼容。它也可能 打破一些插件或Vim脚本。例如因为| l |可以动 最后一个字符后的光标。小心使用! 使用
$
命令将移动到行中的最后一个字符,而不是 过去了。这实际上可能会将光标移动到左侧!g$
命令将移至屏幕行的末尾。 结合" all"并没有意义。与" onemore",但你会 没有得到警告。
简而言之,您可以尝试:set virtualedit=onemore
,看看您的环境是否稳定。
答案 3 :(得分:1)
使用d?c
这将启动d
模式,搜索回“c”,然后删除光标位置。
编辑:不,不包括当前位置......
答案 4 :(得分:1)
我可能误解了您的请求,但3hd$
这样做了吗?
答案 5 :(得分:0)
在此示例中,我将使用vFdd
。我认为它比其他解决方案要好,因为该命令明确显示了要删除的内容。删除时包括当前字符和指定字符。
v
:进入视觉模式(标记文字)F
:向后查找/转到字符d
:将包含要删除的字符“ d”。d
:删除命令由于是可视模式,因此也可以在执行实际删除d
之前移动光标。通过首先在字符附近标记一个特殊字符,然后调整位置,这甚至使删除一个非唯一字符的命令功能强大。