如何使用vim将文字“\ n”替换为文字“\\ n”?

问题描述:

目前,我已经定义为这样一个C字符串:如何使用vim将文字“ n”替换为文字“\ n”?

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

最外面的双引号是该字符串。正如我们所看到的,字符串中的双引号已经被\转义。

当我用fprintf()来写上面的字符串到文件中时,我看到\n被当作换行符处理,但事实证明\\n会解决这个问题。

在这个文件中有很多文字\n。我在vim中尝试了%s/\n/\\n/g,但即使是真正的“换行符”也受到了影响。

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

如果你想与字面\\n取代所有文字\n然后使用命令:

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

也就是说,每个反斜杠必须是单独逃脱


字符串

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

将导致

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

,并没有真正的换行符将被替换。

+0

由于搜索项完全用于替换部分,因此可以简化为::%s/\\ n/\\&/ g' – Sundeep

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

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

请参阅参考文献string literals表格(6)。