我正在寻找一个命令,从光标中删除到同一行中的第一个非空格字符。我在谷歌上搜索了一会儿,尝试了几种可能性。没有发现。有人知道怎么做吗?
dw应该可以。
序列 dw将从光标中删除所有字符,直到下一个单词。这意味着,如果您在单词中间执行该命令,它将删除该单词的其余部分和随后的空格。可能是或可能不是你要找的。
你可以试试 dW。这将移动“ WORD”(参见 WORD 和 WORD 的帮助) ,它看起来更适合你的问题。
dw不能满足你的需求,例如:
dw
array[1] = 5
在 a的位置按下 dw会让你得到:
a
[1] = 5
但使用 dW将导致:
dW
= 5
要删除一个单词,不管光标在哪个字母上,使用 daw(助记符“删除一个单词”)也可以与其他命令一起使用,例如 caw“更改一个单词”。f和 t是其他优秀的命令,可以与 d一起使用。例如,从光标中删除并包括首次出现的字母“ t”,使用 dft。若要保持“ t”不变,请使用 dtt。
这里的许多答案并没有直接回答这个问题。询问者想知道如何删除到 第一的 非-空格字符。威尔的一些答案在技术上是可行的,但是让我们看看如何明确地做到这一点。
下面的示例演示如何在 正常模式下使用考虑到光标起始位置的变化来完成此操作。带下划线的 c & # x0332; 字符表示光标的位置:
dw: Foo _ bar & rarr; Fob & # x0332; ar
在其他答案中描述的 ABC0elete word命令可以正常工作,当我们的光标定位为目标 之前时,可以删除到下一个非空格字符。
db: Foo b & # x0332; ar & rarr; 第三季,第3集
当然,我们希望尝试 dw的反向操作,以删除第一个非空格字符 之前中的光标 倒过来。但是,如上所示,字幕命令删除的内容比我们预期的要多,它还会删除前面的单词。对于这种情况,我们应该使用:
dT<?>: Foo b & # x0332; ar & rarr; Fob & # x0332; ar
... 其中 <?>是光标之前的第一个非空格字符。返回-取消命令擦除所有 最多但不包括字符 <?>,在本例中,它是“ foo”末尾的字符 o。
dt<?>: Foo _ bar & rarr; Fob & # x0332; ar
与前面的命令类似,我们可以使用 ABC0elete until(小写“ t”)删除字符 前进,直到下一个 <?>字符(例如“ bar”中的 b)。就这个问题而言,这实现了与 dw相同的结果。
diw: Foo _ bar & rarr; Fob & # x0332; ar
如果我们的光标位于空格的中间,我们可以使用 第一季,第二集命令从两边删除空格。
d/<?>↵: Foo _ \n条 & rarr; Fob & # x0332; ar
\n
如果我们想要删除的空格包含分行符,我们可以使用上面给 直到匹配的 <?>模式的命令,在这种情况下,模式只是第一个非空格字符。如图所示,按 Enter完成此命令。
当第一个非空格字符出现在换行后的行首时,Vim 将删除空格,但将目标保留在下一行。我们需要将 J添加到上述命令中的 Join行(大写的“ j”)。
d/<?>↵J: Foo _ \nbar & rarr; Fob & # x0332; ar
d W将删除包含最后一个空格的单词。如果要删除的单词位于行尾,则可以使用 d e。因为如果你使用 d W,它可以移动你的下一行。
d
W
e
我总是使用 d i W。
i