我正在寻找一个从光标删除到同一行上第一个非空白字符的命令。我用Google搜索了一段时间,尝试了几种可能性。没有快乐。那里有人知道怎么做吗?
答案 0 :(得分:84)
序列 d w 将删除光标中的所有字符,直到下一个字。这意味着如果您在站在单词中间时执行命令,它将删除该单词的剩余部分和后续空格。可能或可能不是你想要的。
答案 1 :(得分:16)
您可能想尝试 d W 。这将按“WORD”移动(请参阅WORD和word的帮助),这看起来更适合您的问题。
dw
无法满足您的需求,例如:
array[1] = 5
在dw
中找到a
时会让您:
[1] = 5
但使用dW
会导致:
= 5
答案 2 :(得分:12)
这里的许多答案并没有直接解决这个问题。提问者想知道如何删除第一个 非 - 空白字符。一些答案将在技术上有效,但我们来看看如何明确地做到这一点。
以下示例演示了如何在普通模式下执行此操作,其中包含考虑光标起始位置的变体。带下划线的字符表示光标位置:
d 瓦特: foo_酒吧 → foobar的
其他答案中描述的 d elete w ord 命令可以正常删除下一个非空白字符我们的光标位于目标之前。
d B'/ KBD>: FOO酒吧 → 杆
当然,我们想尝试 d w 的反转来将向后删除到第一个非空白字符在光标之前。但是,如上所示, d elete b ack-word 命令删除的次数超出了我们的预期 - 它也会删除前一个字。对于这种情况,我们应该使用:
<?KBD> d Ť &LT;&GT; : FOO酒吧 → foobar的
...其中&lt;?&gt; 是光标前的第一个非空白字符。 d elete back-un T il 命令删除所有但不包括字符&lt; ;?&gt; ,在本例中,是“foo”末尾的字符 o 。
<?KBD> d 吨 &LT;&GT; : foo_酒吧 → foobar的
与上一个命令类似,我们可以使用 d elete un t il (小写“t”)删除字符< em> forward 直到下一个&lt;?&gt; 字符(对于此示例,“bar”中的 b )。对于这个问题,这实现了与 d w 相同的结果。
d 我 瓦特: FOO _吧 → foobar的
如果我们的光标位于空白的中间,我们可以使用 d elete i nner w ord < / em>命令从两边删除空格。
<?KBD> d / &LT;&GT; ↵:
foo_ \n
巴
→
foobar的
如果我们要删除的空格包含换行符,我们可以使用上面显示的命令 d elete,直到&lt;?&gt; ,其中模式在这种情况下只是第一个非空白字符。如图所示,按 Enter 完成此命令。
当第一个非空白字符出现在中断后的行的开头时,Vim将删除空白,但将目标留在下一行。我们需要将 J 添加到上面的命令 J oin 这些行(大写的“j”)。
<?KBD> d / &LT;&GT; ↵ Ĵ:
foo_ \n
巴
→
foobar的
答案 3 :(得分:7)
要删除单词,无论光标在哪个字母上,使用 daw (助记符“删除单词”)也适用于其他命令,例如: caw “改变一个词”。 f 和 t 是可以与 d 一起使用的其他优秀命令。例如。从光标删除并包括第一次出现的例如字母“t”,使用 dft 。要保持“t”不变,请改用 dtt 。
答案 4 :(得分:3)
d w 应该有效。