Vim怎么批量处理文件将tab变为space?

发布于 2022-08-28 13:09:04 字数 173 浏览 15 评论 0

以前编码习惯不太好,所以代码中用到的tab很多。
现在我想把tab转化为space,通过设置vimrc然后执行:ret命令就可以了,问题是需要被处理的文件有很多,手动为每个文件执行:ret命令不太现实,请问我可以从哪个角度考虑来解决这个问题?

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

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

发布评论

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

评论(11

眼眸 2022-09-04 13:09:04

例如你要处理的都是python文件,那么cd到项目根目录:
1. $> vim `find . -type f -name "*.py"` // 用VIM打开所有要处理的文件
2. :argdo :ret | update // 对vim参数列表中的所有文件都执行:ret命令并且保存

另外可以再了解下bufdo, windo命令的用法。

以上只是针对楼主的问题展示VIM是可以很轻松做到这个的,不用一个一个去弄。当然按照楼上的思路写脚本也是很好的方法。

静若繁花 2022-09-04 13:09:04

试试 sed 吧:sed -i -e "s/\t/ /g" *.py

长亭外,古道边 2022-09-04 13:09:04

建议别用 vim,写个脚本处理。
可以用 shell 写,find + sed 命令就可以搞定了,也可以用 python 写,os.path.walk 遍历文件,逐行扫描,没多少代码的。

旧故 2022-09-04 13:09:04
:%s/\t/    /g
逆光下的微笑 2022-09-04 13:09:04

这种问题可以使用正则表达式来处理呀,不过最好不要vim一个个搞过去,写个python脚本来跑正则表达式应该更好一些

最近可好 2022-09-04 13:09:04

expand shell 命令是干这个的。

毁梦 2022-09-04 13:09:04

批处理用正则是比较爽的,不过一定要vim的话,@shizhz的答案不错。

南城旧梦 2022-09-04 13:09:04

sed -i "s/\t/ /g" *.py

本王不退位尔等都是臣 2022-09-04 13:09:04
ls *.py | while read file;do
    vi $file<<EOF
:%s/^I/    /g
:wq
EOF
done

使用vi(m)的非交互方式。
^I使用CTRL+V+I输入。
EOF后面不能用空格。
vi(m)命令前不能有空格。

鹿! 2022-09-04 13:09:04

:h retab

忆梦 2022-09-04 13:09:04

clipboard.png

用这条命令应该就可以将项目中所有的python文件格式化,上几个答案存在问题,在此以示后人。此外需要注意的是's/t/' 和 '/g'之间是有4个空格的(如果你想将tab=8改为tab=4)。展示出来的答案,平台编辑器做了处理,如果单纯复制命令只会复制出1个空格,所以传一张图片

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