Wie verarbeite ich Dateien in Vim stapelweise und ändere Tabulatoren in Leerzeichen?
过去多啦不再A梦
过去多啦不再A梦 2017-05-16 16:41:14
0
10
733

Meine Codierungsgewohnheiten waren in der Vergangenheit nicht sehr gut, daher wurden im Code viele Tabulatoren verwendet.
Jetzt möchte ich Tabulatoren in Leerzeichen umwandeln. Es ist nicht praktikabel, den Befehl vimrc然后执行:ret命令就可以了,问题是需要被处理的文件有很多,手动为每个文件执行:ret festzulegen. Aus welchem ​​Blickwinkel kann ich dieses Problem lösen?

过去多啦不再A梦
过去多啦不再A梦

Antworte allen(10)
大家讲道理

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

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

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

習慣沉默

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

洪涛

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

伊谢尔伦
:%s/\t/    /g
大家讲道理

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

黄舟

expand shell 命令是干这个的。

某草草

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

Peter_Zhu

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

给我你的怀抱
ls *.py | while read file;do
    vi $file<<EOF
:%s/^I/    /g
:wq
EOF
done

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

我想大声告诉你

:h retab

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage