如何删除vim中的非空格?

时间:2011-08-07 20:05:25

标签: vim whitespace

我正在寻找一个从光标删除到同一行上第一个非空白字符的命令。我用Google搜索了一段时间,尝试了几种可能性。没有快乐。那里有人知道怎么做吗?

5 个答案:

答案 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_酒吧 → foob​​ar的

其他答案中描述的 d elete w ord 命令可以正常删除下一个非空白字符我们的光标位于目标之前

d B'/ KBD>: FOO酒吧 → 杆

当然,我们想尝试 d w 的反转来将向后删除到第一个非空白字符光标之前。但是,如上所示, d elete b ack-word 命令删除的次数超出了我们的预期 - 它也会删除前一个字。对于这种情况,我们应该使用:

<?KBD> d Ť &LT;&GT; : FOO酒吧 → foob​​ar的

...其中&lt;?&gt; 是光标前的第一个非空白字符。 d elete back-un T il 命令删除所有但不包括字符&lt; ;?&gt; ,在本例中,是“foo”末尾的字符 o

<?KBD> d &LT;&GT; : foo_酒吧 → foob​​ar的

与上一个命令类似,我们可以使用 d elete un t il (小写“t”)删除字符< em> forward 直到下一个&lt;?&gt; 字符(对于此示例,“bar”中的 b )。对于这个问题,这实现了与 d w 相同的结果。

d 瓦特: FOO _吧 → foob​​ar的

如果我们的光标位于空白的中间,我们可以使用 d elete i nner w ord < / em>命令从两边删除空格。

<?KBD> d / &LT;&GT; : foo_ \n巴 → foob​​ar的

如果我们要删除的空格包含换行符,我们可以使用上面显示的命令 d elete,直到&lt;?&gt; ,其中模式在这种情况下只是第一个非空白字符。如图所示,按 Enter 完成此命令。

当第一个非空白字符出现在中断后的行的开头时,Vim将删除空白,但将目标留在下一行。我们需要将 J 添加到上面的命令 J oin 这些行(大写的“j”)。

<?KBD> d / &LT;&GT; Ĵ: foo_ \n巴 → foob​​ar的

答案 3 :(得分:7)

要删除单词,无论光标在哪个字母上,使用 daw (助记符“删除单词”)也适用于其他命令,例如: caw “改变一个词”。 f t 是可以与 d 一起使用的其他优秀命令。例如。从光标删除并包括第一次出现的例如字母“t”,使用 dft 。要保持“t”不变,请改用 dtt

答案 4 :(得分:3)

d w 应该有效。