2013-04-04 86 views
13

假设我输入了“abcdefg”,并且光标在最后。我想删除回到c,这样我只剩下“abc”了。如何删除,包括当前字符?

是否有像d这样的命令包含当前字符?我知道我可以做dTcx,但x感觉像是一个解决办法,我想有一个更好的解决方案。

+0

我用最愚蠢的方式做到这一点:D – 2013-04-04 06:43:19

+1

@MostafaShahverdy'xxxx'?或'ddOabc'? – Andreas 2013-04-04 06:43:54

+0

Humm:D并且有时使用'c'中的Del! – 2013-04-04 06:44:47

回答

6

不是。向后运动总是从当前字符的左侧开始,对于c,yd这是合乎逻辑但也令人不安的。

唯一的“干净”的解决方案,我能想到的任何暗示移动到焦炭c第一后再做向前删除:

Tcde 

或使用可视化模式:

vTcd 
v3hd 

但,考虑到你的样品,并假设你正在进入正常模式只是为了纠正,整个事情听起来对我来说非常浪费。

什么停留在插入模式和简单地做

+0

+1为4x'backspace',我想我会在实际工作中这样做。 – Kent 2013-04-04 08:01:30

+6

谢谢。当然这只是一个例子,可能要删除12或30个字符,并且可能位于一行的中间。 – Andreas 2013-04-04 08:18:21

1

使用d?c 这将启动d模式,搜索回'c',然后删除到您的光标位置。

编辑:不,不包括当前位置...

+0

必须是'd?d' – 2013-04-04 06:46:21

+0

是的,好点,保持'c'。 – Cometsong 2013-04-04 06:51:41

1

我可能会误解你的要求,但并3hd$做呢?

+1

是的,它的确如此。或'Fdd $'。但是当我还没有结束时,我想工作,这也感觉就像一个解决方法。基本上,我问是否有包含当前角色的动作/删除。 – Andreas 2013-04-04 06:51:09

2

试试这个:

TcD 

这将离开abc您例如......嗯,如果abcdefg是该行的最后一个字。

如果不是在该行的最后一个字,你可以这样做:

ldTc 

或打高尔夫球,做它3按键行程内:

3Xx or l4X 
2

this answer到类似的问题:有一个设置可以超出行尾

来自文档:

虚拟编辑意味着光标可以放置在没有实际字符的位置 。这可能是一个标签的一半或超出该行的末尾 。用于在可视模式下选择矩形和编辑表格。 “onemore”不一样,它只允许在行的最后一个字符后面移动光标 。这使得一些命令更一致。以前,如果该行为空,则光标始终在行 的末尾。但它远不是Vi兼容的。它也可能会破坏一些插件或Vim脚本。例如,因为| l |可以在最后一个字符后移动光标 。小心使用! 使用$命令将移至行中的最后一个字符,而不是经过它的 。这实际上可能会将光标移动到左侧! g$命令将移动到屏幕行的末尾。 将“all”与“onemore”结合起来没有任何意义,但是您不会为此发出警告。

总之,你可以尝试:set virtualedit=onemore,看看你的环境是否稳定与否。

相关问题