如何使用vim替换文字" \ n"用文字" \\ n"?

时间:2017-08-06 06:37:50

标签: c++ regex vim newline

目前,我有一个C字符串定义如下:

std::string str = "printf(\"Hello world\n\")"; 

最外面的双引号用于此字符串。我们可以看到字符串中的双引号已被\转义。

当我使用fprintf()将上述字符串写入文件时,我看到\n被视为换行符,但事实证明\\n将解决此问题。

此文件中有许多文字\n。我在vim中尝试了%s/\n/\\n/g,但即使是真正的"换行符"受到影响。

如何在vim中将文字\n替换为\\n,而不影响真实的换行符?

2 个答案:

答案 0 :(得分:4)

如果要将所有文字\n替换为文字\\n,请使用以下命令:

:%s/\\n/\\\\n/g

也就是说,每个反斜杠必须单独转义

字符串

std::string str = "printf(\"Hello world\n\")"; 

将导致

std::string str = "printf(\"Hello world\\n\")";

并且不会替换真正的换行符

答案 1 :(得分:2)

C ++ 11引入了原始字符串,在这种情况下非常方便。

std::string str = R"(printf("Hello world\n"))";

参见string literals表格(6)的参考资料。