Comment traiter par lots des fichiers dans Vim et changer les onglets en espaces ?
过去多啦不再A梦
过去多啦不再A梦 2017-05-16 16:41:14
0
10
734

Mes habitudes de codage n'étaient pas très bonnes dans le passé, donc beaucoup d'onglets étaient utilisés dans le code.
Maintenant, je veux convertir les tabulations en espaces. Il n'est pas pratique de définir la commande vimrc然后执行:ret命令就可以了,问题是需要被处理的文件有很多,手动为每个文件执行:ret Sous quel angle puis-je résoudre ce problème ?

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

répondre à tous(10)
大家讲道理

Par exemple, tout ce que vous souhaitez traiter, ce sont des fichiers python, puis les placer dans le répertoire racine du projet :
1. $> vim `find .type f -name "*.py"` // Ouvrez tous les fichiers à traiter avec VIM
2. :argdo :ret | update // Exécutez la commande :ret sur tous les fichiers de la liste des paramètres vim et enregistrez

De plus, vous pouvez en savoir plus sur l'utilisation des commandes bufdo et windo.

Ce qui précède vise simplement à montrer que VIM peut facilement faire cela en réponse au problème de l'affiche originale, sans avoir à le faire un par un. Bien entendu, écrire des scripts selon les idées ci-dessus est également une bonne méthode.

習慣沉默

Essayez sed :sed -i -e "s/t/ /g" *.py

洪涛

Il est recommandé de ne pas utiliser vim et d'écrire un script pour le gérer.
Il peut être écrit en shell, et la commande find + sed le fera également en python, et os.path.walk parcourt le fichier et analyse ligne par ligne.

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

Ce genre de problème peut être résolu à l'aide d'expressions régulières, mais il est préférable de ne pas utiliser vim pour les traiter un par un. Il serait préférable d'écrire un script python pour exécuter des expressions régulières

.
黄舟

expand La commande shell fait cela.

某草草

Il est plus confortable d'utiliser des expressions régulières pour le traitement par lots, mais si vous devez utiliser vim, la réponse de @shizhz est bonne.

Peter_Zhu

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

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

Utilisez le mode non interactif de vi(m).
^I使用CTRL+V+IEntrez.
Aucun espace ne peut être utilisé après EOF.
Il ne peut pas y avoir d'espace avant la commande vi(m).

我想大声告诉你

:h retab

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal