我有一些这种格式的文本(Oracle栏目定义,如果你想知道的话)......
column1 DATE,
column2 VARCHAR2(6),
column3 VARCHAR2(15)
我一直试图弄清楚如何用“VARCHAR2(255)”替换每行传递空间的所有东西,但还没有成功。
我知道我可以通过/\s
搜索并找到空间,但我无法弄清楚如何获取该行中的其余字符串。当我使用/\s*
时,会突出显示所有文字。我试图使用/\s.+
但我得到“找不到模式”。
如何让所有文本都通过每行中的空格并用另一个String全局替换?
答案 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)