我有很长的一句话,看起来像这样:
foo,foo bar,bar@foo,foo# bar,bar$ foo#
Run Code Online (Sandbox Code Playgroud)
现在我想把它变成:
"foo","foo bar","bar@foo","foo# bar","bar$ foo#"
Run Code Online (Sandbox Code Playgroud)
因此,分隔符是逗号.这样做的最佳方式是什么vi(m)?
编辑:有人会关注详细的暗示吗?
这似乎有效.捕获所有不是逗号的内容,并将其替换为引号中捕获的部分.将g在命令的末尾说,更换匹配就行了正则表达式的所有实例.没有g它只会匹配第一个.看看:h :s和:h :s_flags
:%s/\([^,]\+\)/"\1"/g
Run Code Online (Sandbox Code Playgroud)
输入:
foo,foo bar,bar@foo,foo# bar,bar$ foo#
Run Code Online (Sandbox Code Playgroud)
输出:
"foo","foo bar","bar@foo","foo# bar","bar$ foo#"
Run Code Online (Sandbox Code Playgroud)