以前編碼習慣不太好,所以程式碼中用到的tab很多。 現在我想把tab轉化為space,透過設定vimrc然後執行:ret指令就可以了,問題是需要被處理的檔案有很多,手動為每個檔案執行:ret指令不太現實,請問我可以從哪個角度考慮來解決這個問題?
vimrc
:ret
例如你要處理的都是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
sed -i -e "s/t/ /g" *.py
建議別用 vim,寫個腳本處理。 可以用 shell 寫,find + sed 指令就可以搞定了,也可以用 python 寫,os.path.walk 遍歷文件,逐行掃描,沒多少程式碼的。
雷雷
這種問題可以用正規表示式來處理呀,不過最好不要vim一個個搞過去,寫個python腳本來跑正則表達式應該更好一些
expand shell 指令是乾這個的。
expand
批次用正規是比較爽的,不過一定要vim的話,@shizhz的答案不錯。
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)指令前不能有空格。
^I
CTRL+V+I
:h retab
例如你要處理的都是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的答案不錯。
sed -i "s/t/ /g" *.py
使用vi(m)的非互動方式。
^I
使用CTRL+V+I
輸入。EOF後面不能用空格。
vi(m)指令前不能有空格。
:h retab