使用Vi/vim从末尾删除直到最后一个字符。

9
我想做与此问题类似的事情VI(VIM):删除/更改从右到左?,即从行尾删除到该行中最后一个=的实例,可以使用dT=,光标放在行尾。

但是,这个和其他类似的命令不会删除行的最后一个字符,所以我必须添加x。我不介意这样做,但看起来vim没有一个从当前字符删除的命令。有没有我找不到的命令?

5个回答

8

如果您的光标在行末,您可以尝试

F=D

哦,没注意到OP想要保留'='。那么如下处理:
T=D

@BenjaminGolder 是的,谢谢指出,以前没有注意到。 - Kent

3

或者,您可以:

set virtualedit=onemore

这将使您可以将光标移动到行尾后一个字符。从该位置开始,dT=将按您的期望工作。


0
有点复杂,但更强大-我不确定您是否打算一次处理一行还是很多行...使用正则表达式替换。
single line:
^               # go to beginning of line
:s/=[^=]*$/=/   # remove everything after =

whole file:
:%s/=[^=]*$/=/gc   # replace every instance in file, with prompts. remove c for no prompt.

0

尝试使用T=d$怎么样?这样行吗?


0

另一种选择是使用:set virtualedit=onemore,这样您就可以执行$dT=

参考::help 've'


1
实际上,我认为您需要使用 $l 来移动到行末加一个字符。 - jcollado

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接