我正在寻找一个命令从光标删除到同一行上的第一个非空白字符.我用Google搜索了一段时间,尝试了几种可能性.没有快乐.那里有人知道怎么做吗?
ric*_*son 91
序列dw将删除光标中的所有字符,直到下一个字.这意味着如果您在站在单词中间时执行命令,它将删除该单词的剩余部分和后续空格.可能或可能不是你想要的.
sid*_*yll 20
你可能想试试dW.这将按"WORD"移动(请参阅WORD和word的帮助),这看起来更适合您的问题.
该dw会不能满足您的需求,例如:
array[1] = 5
Run Code Online (Sandbox Code Playgroud)
击中dw位置a时会让你:
[1] = 5
Run Code Online (Sandbox Code Playgroud)
但使用dW将导致:
= 5
Run Code Online (Sandbox Code Playgroud)
Cy *_*nol 18
这里的许多答案并没有直接解决这个问题.提问者想要知道如何删除第一个 非空白字符.一些答案在技术上可行,但让我们看看如何明确地做到这一点.
以下示例演示了如何在正常模式下执行此操作,其中包含考虑光标起始位置的变体.带下划线的字符表示光标位置:
dw:foo_ bar→foobar
当我们的光标位于目标之前时,其他答案中描述的delete word命令可以正常删除下一个非空白字符.
db:foo bar→bar
当然,我们想要尝试反向dw删除向后到光标前的第一个非空白字符.但是,如上所示,delete back-word命令删除的次数超出了我们的预期 - 它也会删除前一个词.对于这种情况,我们应该使用:
dT<?>:foo bar→foobar
...在<?>光标之前的第一个非空白字符.该delete背联合国T金正日命令删除所有内容了,但不包括性格<?>,它在这种情况下,是字符o在"富"的结束.
dt<?>:foo_ bar→foobar
与上一个命令类似,我们可以使用delete un til(小写"t")向前删除字符,直到下一个<?>字符(b在本例中为"bar").这实现了与dw该问题的目的相同的结果.
diw:foo _ bar→foobar
如果我们的光标位于空白的中间,我们可以使用delete inner word命令从两侧移除空白.
d/<?>↵:foo_ \n bar→foobar
如果我们要删除的空格包括换行符,我们可以使用上面显示的命令d直到匹配的模式<?>,其中这种情况下的模式只是第一个非空白字符.如图所示,按Enter完成此命令.
当第一个非空白字符出现在中断后的行的开头时,Vim将删除空白,但将目标留在下一行.我们需要添加J到上面的命令JOIN行(大写"J").
d/<?>↵J:foo_ \nbar→foobar
要删除一个单词,无论光标在哪个字母上,使用daw(助记符"删除单词")也可以与其他命令一起使用,例如caw"更改单词".f并且t是可以与之一起使用的其他优秀命令d.例如,从光标删除并包括例如字母"t"的第一次出现,使用dft.要保持"t"不变,请dtt改用.