vim:删除所有空格,直到下一个非空白字符

时间:2012-01-13 12:23:00

标签: vim vi

说我有以下代码:

<p>
    Hello
</p>

我想成功

<p>Hello</p>

我想将光标置于第1行末尾的正常模式,因此在'&gt; '并命令删除所有空格,直到下一个字符。我能想到的最接近的是动作

d/Hello

删除所有内容直到Hello,但问题是它还删除了光标下的字符('&gt;'),所以我最终用

<pHello
</p>

你会怎么做?

3 个答案:

答案 0 :(得分:17)

一种方法,您不需要多次重复此操作。

JxJx

说明:

J           # Join current line with next one but substitute end of line with a space.
x           # Remove the space.
Jx          # Repeat same process for last line.

答案 1 :(得分:6)

vim中有一个tag文本对象:

  • 将光标放在标签内,按 vat 选择整个标签
  • ,它变为:'<,'>
  • 键入 j ,它变为:'<,'>j
  • 输入连接线

:help v_at

at          "a tag block", select [count] tag blocks, from the
            [count]'th unmatched "<aaa>" backwards to the matching
            "</aaa>", including the "<aaa>" and "</aaa>".
            See |tag-blocks| about the details.
            When used in Visual mode it is made characterwise.

答案 2 :(得分:1)

当站在第二行(显示Hello)的任何地方时,请按以下键:^d0vatgJ。简单解释:

  1. ^ 将转到第一个非空白字符H
  2. d 0 将删除到该行的开头
  3. v a t 将选择整个标记
  4. g J 将连接所有行而不插入空格
  5. 如果您从H开始,则可以跳过 ^ 部分。