如何使用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\")";
,并没有真正的换行符将被替换。
答
C++ 11引入了在这种情况下非常方便的原始字符串。
std::string str = R"(printf("Hello world\n"))";
请参阅参考文献string literals表格(6)。
由于搜索项完全用于替换部分,因此可以简化为::%s/\\ n/\\&/ g' – Sundeep