VIM Regex将文本向上移动? VIM高尔夫

时间:2019-02-04 12:03:29

标签: regex vim

谁能告诉我如何在vim中解决这个问题? 我可以看到行从空格开始的位置,但是将文本向上移动不起作用。

|-
| 
| 199
| TNET
  revenue
| Most
  Recent (Last)
| Purchase
| Counter
| Enabled
|-
| 
| 200
| Page
  Category (eVar 30)
| Most
  Recent (Last)
| Visit
| Text
  String
| Enabled
|-

我想创建这个:

|-
| 
| 199
| TNET revenue
| Most Recent (Last)
| Purchase
| Counter
| Enabled
|-
| 
| 200
| Page Category (eVar 30)
| Most Recent (Last)
| Visit
| Text String
| Enabled
|-

谢谢

2 个答案:

答案 0 :(得分:2)

这似乎可以解决问题::%s/n / /

答案 1 :(得分:1)

您可以使用:global(实际上是:g!)和:join

:g!/^|/-1,.join

说明:

  • :g/{pat}/{cmd}在与模式{cmd}匹配的每一行上运行命令{pat}
  • :g缺少:global
  • :g!/{pat}/{cmd}与模式不匹配的每一行上运行命令。
  • :vglobal(简称为:v)与:g!
  • :join中将{cmd}用于:g!/{pat}/{cmd}
  • :[range]join将加入一系列[range]行。与普通模式下的J类似。 :j的缩写。
  • {start},{end}-范围包含开始线和结束线
  • -1,.-1,.join的范围
  • -1是指当前行中的-1
  • .是当前行
  • -1中,可以假设1可以变成-
  • 也可以假设
  • ,.

缩短命令的所有内容:

:v/^|/-j

我不会太担心高尔夫球。最重要的是识别问题并学习如何解决。

有关更多帮助,请参见:

:h :v
:h :j
:h :range