我知道我可以从光标中删除,直到并包括第一个出现的字符x时,请先使用d/x<CR>v/x<CR>d,如果我想先查看选择内容然后删除。

例如,如果光标位于x的第n个空格之后,该如何从当前光标位置删除呢?


yada yada yada x
yada yada yada x
yada yada yada x
xx


,我输入命令删除第三个x结果需要为:


yada
xx


#1 楼

您可以:

wd4/x<Enter>

如果从文本的左上方开始

说明


/>
w:移动到下一个单词的开头

d:删除

4/x<Enter>:直到x出现第4次

如果您不知道事先要执行的次数,也可以执行以下操作:d/x<Enter>然后按.重复

评论


额外提示:这也适用于f和朋友(F,t,T 、;):例如2fx将带您到第二个x或2;将重复最后一个f两次。

–马丁·图尔诺伊(Martin Tournoij)
16年1月14日在18:21



@Carpetsmoker:这仅适用于当前行中的字母。

–于尔根·克雷默(JürgenKrämer)
17年7月28日在6:43

#2 楼

您可以通过键入

<n>df<x>


来执行此操作,其中:

<n> is the number of occurrence of particular character
df<x> means delete till you find the occurrence of character x


#3 楼

<n>macro 


在vim中通常用于重复宏“ n”次。 。
类似地,要删除到第3次出现x,您可以使用1dfx

评论


我认为您错过了“宏”这个词:在vim中,宏是记录在寄存器中的键序列,并使用@x调用,其中x是您的寄存器。您所指的是普通模式命令。

–statox♦
17年7月26日在7:31

是的,我的意思是普通命令。但这对于宏也是如此。我们可以通过在宏之前添加一个数字来运行该宏n次。

–thenakulchawla
17年7月26日在7:33

是的,这是真的。我只是指出宏不是vim中用于宏的标准符号,由于您的答案使用的是普通模式命令,因此它与kapil的命令几乎相同。

–statox♦
17年7月26日在7:39

#4 楼

给定:

yada yada yada$
yada yada yada x$
yada yada yada x$
yada yada yada x$
xx$


其中$指示行的结尾(:set list模式),如果光标位于第一行中第二个yada的开头,则首先使用h备份到前一个空格,以将其包括在删除中。然后只需4d / xEnter。换句话说,只是在d / x前面有一个计数。结果完全是:

yada$
xx$