为什么此vim regex如此昂贵:s / \ n / \\ n / g

时间:2018-07-03 20:52:35

标签: regex vim newline

在足够大的文件上尝试执行此操作(例如,超过80,000行和大约500k +)会导致事情崩溃或最终停滞在我的服务器和本地Mac上。

我也在命令行上尝试过,结果相同:

vim -es -c '%s/\n/\\n/g' -c wq $file

此外,问题似乎出在选择(\n)而非替换(\\n)上。

对于较大的文件,我当然可以split将它们cat返回,但是在我的情况下,分割点不能是任意的,必须为每个分割手动进行调整。 / p>

我很高兴有其他方法可以做到这一点-sed等-但是我那里有类似的问题和其他问题,我希望能够通过vim做到这一点。

1 个答案:

答案 0 :(得分:2)

我要添加我的评论作为答案:

文本编辑器通常不喜欢“巨大的”行(这是替换后的结果)。

要测试这是否是由于“大线”而不是替代本身引起的,我进行了此测试:

我用脚本创建了一个约500KB的简单文件。没有换行符,只有一行。然后我尝试用vim加载文件。结果?我不得不杀死它:-)。

但是,如果我不时在同一脚本上写一些新行,则打开文件没有问题。

此外,您可以尝试以下操作:在vim上,将foo.DoWork(Of t as {Person}, "Jane") 替换为\n(如果速度较快),那么这也应该确认“大问题”问题。