如何使用%s替换vim中双引号内的所有内容?

时间:2014-12-03 16:46:28

标签: regex vim

我有一个包含用户名和密码的配置文件:

username = "someuser"; password = "blabla";
username = "anotheruser"; password = "tralala";

有时配置不是很有条理,所以我们可以使用符号" ="更近或有双倍空间,如

username=  "foo"

所以,在vim中,我怎么能用一些魔法正则表达式表达式替换所有用户名和密码,以便拥有如下所有内容:

username = "no_user"; password = "no_password";

请注意,我的主要目标是替换双引号内的内容。该组织只是一个加号。感谢。

2 个答案:

答案 0 :(得分:1)

尝试这样做:

:%s:username *= *"[^"]\+":username = "no_user":g
:%s:password *= *"[^"]\+":password = "no_passwd":g

答案 1 :(得分:1)

您可以使用捕获组轻松完成组织:

:%s/\(username\|password\)\s*=\s*\("[^"]*"\)/\1 = \2/g

如果您只想更改值,最好通过2个单独的替换来完成。

:%s/username\zs\s*=\s*"[^"]*"/ = "no_user"
:%s/password\zs\s*=\s*"[^"]*"/ = "no_password"

注意我使用\zs在标签后开始匹配以避免更长的命令。

如需更多帮助,请参阅:

:h :s
:h /\(
:h /\zs
:h pattern