Vim怎麼批次處理檔案將tab變成space?
过去多啦不再A梦
过去多啦不再A梦 2017-05-16 16:41:14
0
10
759

以前編碼習慣不太好,所以程式碼中用到的tab很多。
現在我想把tab轉化為space,透過設定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是可以很輕鬆做到這個的,不用一個一個去弄。當然按照樓上的思路寫腳本也是很好的方法。

習慣沉默

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

洪涛

建議別用 vim,寫個腳本處理。
可以用 shell 寫,find + sed 指令就可以搞定了,也可以用 python 寫,os.path.walk 遍歷文件,逐行掃描,沒多少程式碼的。

伊谢尔伦

雷雷

大家讲道理

這種問題可以用正規表示式來處理呀,不過最好不要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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板