如何在vim中删除非空格?
我正在寻找一个命令,从光标删除到同一行的第一个非空白字符。我在谷歌上搜索了一段时间,尝试了几种可能性。没有快乐。有人知道怎么做吗?dw应该可以工作。序列dw将删除光标中的所有字符,直到下一个单词。这意味着,如果你在一个单词的中间执行命令,它将删除该单词的剩余部分和后续的空白。可能是也可能不是您想要的。您可能想试试dW。这将按“单词”移动(单词和单词请参见帮助),这看起来更适合您的问题如何在vim中删除非空格?,vim,whitespace,Vim,Whitespace,我正在寻找一个命令,从光标删除到同一行的第一个非空白字符。我在谷歌上搜索了一段时间,尝试了几种可能性。没有快乐。有人知道怎么做吗?dw应该可以工作。序列dw将删除光标中的所有字符,直到下一个单词。这意味着,如果你在一个单词的中间执行命令,它将删除该单词的剩余部分和后续的空白。可能是也可能不是您想要的。您可能想试试dW。这将按“单词”移动(单词和单词请参见帮助),这看起来更适合您的问题 dw无法满足您的需求,例如: array[1] = 5 在a中定位时点击dw,将为您留下: [1] = 5
dw
无法满足您的需求,例如:
array[1] = 5
在a
中定位时点击dw
,将为您留下:
[1] = 5
但是使用dW
将导致:
= 5
要删除单词,无论光标位于哪个字母上,请使用daw(助记符“删除单词”)与其他命令配合使用,例如caw“更改单词”。f和t是其他可以与d一起使用的优秀命令。例如,要从光标中删除并包括第一次出现的字母“t”,请使用dft。要使“t”保持不变,请改用dtt 这里的许多答案并没有直接回答这个问题。询问者想知道如何删除最多第一个非空白字符。一些答案在技术上是可行的,但是让我们来看看如何明确地做到这一点。 以下示例演示了如何在正常模式下执行此操作,并说明了光标起始位置的变化。u̲下划线c̲字符表示光标位置:
数据仓库: 富吧 → foob̲ar 在其他答案中描述的delete-word命令可以很好地将光标放在目标之前时删除到下一个非空白字符
db: foob̲ar → b̲ar 当然,我们希望尝试与dw相反的方式向后删除光标前的第一个非空白字符。但是,如上所示,deletebackword命令删除的单词比我们预期的要多,它也会删除上一个单词。在这种情况下,我们应使用: dT: foob̲ar → foob̲ar …其中是光标前的第一个非空白字符。delete back till命令将删除所有内容,包括但不包括字符,在本例中,字符是“foo”结尾的字符o
dt: 富吧 → foob̲ar 与前面的命令类似,我们可以使用delete-until(带小写字母“t”)向前删除字符,直到下一个字符(本例中为“bar”中的b)。就本问题而言,这与dw的结果相同
diw: 富吧 → foob̲ar
如果光标位于空白区域的中间,我们可以使用Delphi内部单词命令从两侧删除空白。
d/↵: foo\ucode>\n条 → foob̲ar 如果我们要删除的空白包含换行符,我们可以使用上面显示的命令删除,直到匹配的模式,这里的模式只是第一个非空白字符。如图所示,按Enter键完成此命令 当第一个非空白字符出现在中断后的行的开头时,Vim将删除空白,但将目标保留在下一行。我们需要在上面的命令中添加J来连接这些行(大写字母“J”) d/↵J: foo\ucode>\n条 →
foob̲ar就是这样。这有点违反直觉——我希望dw的意思是“从光标开始删除当前单词”。但它起作用了,它起作用了。谢谢。准确地说,
w
意味着“移动到下一个单词的开头”,并且d
从移动带你到的当前位置删除。要删除一个单词,无论光标在哪个字母上,请使用daw
(助记符“删除一个单词”)与其他命令一起使用,例如caw
“更改一个单词”daw
也会删除单词前的空格(如果有)。一个更好的组合是diw
,它在word中是delete。无论光标在单词中的位置如何,它都可以工作。多行呢?我知道这不是问题所在,但是多行的内容会更有用。谢谢你解决换行问题!您的答案似乎是
是匹配第一个非空白字符的模式。然而,我不得不使用\S
作为模式。因此,我的整个命令是d/\S↵代码>。这可能是你在回答中的意思,但我并不马上明白。@Micah很抱歉不清楚。我在这个答案中使用了
作为占位符,表示某个字符。我的目的是让读者用编辑文本中的特定字符替换
,而不是按字面意思输入这些按键。对于最后一个示例,您选择输入\S
来代替模式
确实会产生最佳的通用命令来删除换行符中的空白。我更喜欢键入实际字符(b
,在本例中),因为它通常更容易找到。