Vim search and replace可修改具有常见结构但不同单词的字符串
我是Vim的新手,在这个网站上还没有找到如何搜索和替换字符串的不同部分。我需要对所有出现的“Vim search and replace可修改具有常见结构但不同单词的字符串,vim,vi,Vim,Vi,我是Vim的新手,在这个网站上还没有找到如何搜索和替换字符串的不同部分。我需要对所有出现的“SetTag(“…””)进行全局编辑,…为任何单词。我的编辑是在第二个引号后再添加一个单词。示例:SetTag(“err”+\uuuuu LINE\uuuuuu,粗体部分是我需要添加的。有人能告诉我如何使用vim搜索命令实现这一点吗?谢谢!nb:我假设“word”是双引号字符以外的任何字符序列。根据需要修改 :%s/SetTag("\([^"]*\)")/SetTag("\1" + __LINE__)/
SetTag(“…”
”)进行全局编辑,…
为任何单词。我的编辑是在第二个引号后再添加一个单词。示例:SetTag(“err”+\uuuuu LINE\uuuuuu,粗体部分是我需要添加的。有人能告诉我如何使用vim搜索命令实现这一点吗?谢谢!nb:我假设“word”是双引号字符以外的任何字符序列。根据需要修改
:%s/SetTag("\([^"]*\)")/SetTag("\1" + __LINE__)/
转义括号抓住子匹配项;替换字符串中的\1被该子匹配项替换。我的“单词”是字母而不是双引号字符,但对我不起作用,这给了我
找不到模式:SetTag(\([^”]*\)”
单词“在许多不同的标记类别之间有所不同。所谓“根据需要修改”,您的意思是我需要单独输入每个单词,还是它将捕获所有单词?(我正在寻找一个捕获所有单词。)作为参考,这正是我运行的命令%s/SetTag(\([^“]*\”)/SetTag(“\1行):+std::to\u string(\uuuu line\uuuu)/
修改部分正是单词的组成部分。在我的例子中,我使用[^”]*
选择零个或多个非双引号字符的任何字符串。\(…\)中的部分
是单词,其余的应该是精确的周围文本。如果它不匹配,请尝试使用/
搜索它,以查看哪些部分匹配以及何时停止匹配。可能目标文本中有额外的空格或其他内容。啊,我明白了,我在上面运行的命令的中断之处是我不需要右括号时的右括号。非常好,谢谢!