vim中更便捷的方式一次性处理多个删除替换操作?

发布于 2021-11-26 21:03:31 字数 488 浏览 517 评论 3

从Excel中拷贝了一列--手机号码, 粘贴到Vim中

vim temp

18810720426

13311595986

17710369499

13261893845



想要变成sql中select in的参数, 如 select * from t where phone in ('XXX','XXX')

需要做这么些步骤才能实现上述目的

:%g/^$/d
:%s/^/'/g
:%s/$/'/g
:%s/n/,/g



有没更便捷的方式实现该目的?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

够钟 2021-11-29 22:43:49

谢谢! 使用sed还得要先保存文件. 知道了vim中还有一个macro. 要是能像命令行中使用管道或连接符就好了 可以写在一行 如:%g/^$/d && %s/^/'/g && %s/$/'/g && %s/n/,/g

顾挽 2021-11-29 20:30:48

回复
用"|"拼接就可以写成一行,%g/^$/d | %s/^/'/g | %s/$/'/g | %s/n/,/g

清欢 2021-11-29 14:41:10

你要做的事实际并不算太简单,几个不同的工作必须得做,很难再简洁了,只能利用一些小技巧在一定程度上“简化”,比如写成一行:%s/([0-9]+)n/'1',/ | %s/n// 

在Vim里做这种涉及多个操作的重复性工作,还是Macro更方便一些,用多个命令行去做的话,不如直接用sed了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文