消除列

时间:2015-07-31 04:15:59

标签: sql-server vim

我正在使用一个名为dbext的插件来查询sql server数据库。数据库的输出并不那么讨人喜欢:

enter image description here

我如何摆脱所有空白空间?请注意我无法进行查找/替换,因为其他列中有空格。

我尝试过:我用管道(|)包围了每一个数据,并试图记录一个非常长的宏,在那里我摆脱了空白区域:

enter image description here

但这显然不是一个可靠的解决方案。

2 个答案:

答案 0 :(得分:1)

如果内部有空格的列在单词之间没有多个空格,则可以指定范围来替换空格。例如这种替代。

:%s/\v\s{2,}/|/g

Demo

答案 1 :(得分:1)

嗯,这是一个非常糟糕的分隔列格式,其中分隔符也在字段中散射。但希望您可以依赖具有2个以上空格的分隔符,并且列内部不能超过一个。

然后您可以添加更明确的分隔符,例如tab。事实上,TSV是cutpastetabs等unix工具的标准。

因此,假设上面有希望的情况,您可以将多空格(列分隔符)转换为标签:

:%s/\s\s\+/\t/g

或者,更一般地说:

%s/\s\{2,}/\t/g

如果字段内有两个空格,请稍微向上调整2。