Vim - 搜索并替换每行中传递空格的所有字符

时间:2012-03-28 15:16:43

标签: vim

我有一些这种格式的文本(Oracle栏目定义,如果你想知道的话)......

column1 DATE,
column2 VARCHAR2(6),
column3 VARCHAR2(15)

我一直试图弄清楚如何用“VARCHAR2(255)”替换每行传递空间的所有东西,但还没有成功。

我知道我可以通过/\s搜索并找到空间,但我无法弄清楚如何获取该行中的其余字符串。当我使用/\s*时,会突出显示所有文字。我试图使用/\s.+但我得到“找不到模式”。

如何让所有文本都通过每行中的空格并用另一个String全局替换?

4 个答案:

答案 0 :(得分:2)

最简单的方法:

:%s/ .*/ VARCHAR(255)

VIM使用一种有点奇怪的正则表达式语法,所以如果你想做\ s +,你必须使用\ s \ +

答案 1 :(得分:2)

怎么样

:%s/\s\S\+$/ VARCHAR(255)/

答案 2 :(得分:1)

一种方式:

:%s/\(\s\+\).*$/\1VARCHAR(255)/

对于每一行%,找到第一个空格\(\s\+\),将其保存在第1组(\1)中,将其余部分与.*$匹配,并将其替换为文字字符串。

编辑表示您必须在魔术模式的正则表达式中转义+。您可以在regexp的开头使用非常神奇的模式和\v。有关详细信息,请参阅:he magic

答案 3 :(得分:1)

除了使用替换命令外,请考虑解决问题 重复一系列正常模式命令:

:%norm!f C VARCHAR(255)