Vim でファイルをバッチ処理してタブをスペースに変更するにはどうすればよいですか?
过去多啦不再A梦
过去多啦不再A梦 2017-05-16 16:41:14
0
10
730

私のコーディング習慣は以前はあまり良くなかったので、コード内で多くのタブが使用されていました。
タブをスペースに変換したいのですが、vimrc然后执行:ret命令就可以了,问题是需要被处理的文件有很多,手动为每个文件执行:retコマンドを設定するのは現実的ではありません。どのような角度からこの問題を解決できますか?

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

全員に返信(10)
大家讲道理

たとえば、処理したいのは Python ファイルだけである場合は、プロジェクトのルート ディレクトリに cd します:
1. $> vim `find . -type f -name "*.py"` // VIMで処理するすべてのファイルを開きます
2. :argdo :ret update // vim パラメータリスト内のすべてのファイルに対して :ret コマンドを実行し、保存します

さらに、bufdo および Windo コマンドの使用法について詳しく学ぶことができます。

上記は、元の投稿者の問題に応じて、VIM が 1 つずつ実行することなく簡単にこれを実行できることを示しているだけです。もちろん、上記の考え方に従ってスクリプトを書くのも良い方法です。

いいねを押す +0
習慣沉默

sed を試してください:sed -i -e "s/t/ /g" *.py

いいねを押す +0
洪涛

vim を使用せず、それを処理するスクリプトを作成することをお勧めします。
これはシェルで記述することもでき、find + sed コマンドで実行できます。Python で記述することもでき、os.path.walk はファイルを 1 行ずつ走査します。コードはそれほど多くありません。

いいねを押す +0
伊谢尔伦

リーリー

いいねを押す +0
大家讲道理

この種の問題は正規表現を使用して解決できますが、vim を使用して 1 つずつ処理するのではなく、正規表現を実行する Python スクリプトを作成することをお勧めします。

いいねを押す +0
黄舟

expand シェルコマンドがこれを行います。

いいねを押す +0
某草草

バッチ処理には正規表現を使用する方が快適ですが、vim を使用する必要がある場合は、@shizhz の答えが適しています。

いいねを押す +0
Peter_Zhu

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

いいねを押す +0
给我你的怀抱

リーリー

vi(m) の非対話モードを使用します。
^I使用CTRL+V+I入ります。
EOF の後にスペースは使用できません。
vi(m) コマンドの前にスペースを入れることはできません。

いいねを押す +0
我想大声告诉你

:h retab

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート