如何修改VSCodeVim正则替换语句去除SQL JOIN末尾多余的and?
解决VSCodeVim正则替换末尾多余"and"的问题
推荐方案:Vim表达式替换(一次完成,适配任意单词数)
直接用Vim的表达式计算能力,从拼接逻辑上避免多余的and:
:s/\v(.+)/\=join(map(split(submatch(1)), 'a.'.v:val.' = b.'.v:val), ' and ')/
- 逻辑说明:
\v(.+)匹配整行的目标文本(确保要转换的内容单独占一行)split(submatch(1))把文本按空格拆分成单词数组map遍历数组,将每个单词转为a.单词 = b.单词的格式join用and把所有片段拼接起来,天然不会出现末尾冗余的连接词
原命令的问题在于给每个匹配的单词都追加了and,包括最后一个,所以会多出结尾的and。这个方案从根源上解决了问题,不需要二次替换。
内容的提问来源于stack exchange,提问作者catquas
相关产品推荐
相关产品推荐

