Bagaimana untuk memproses fail dalam Vim dan menukar tab ke ruang?
过去多啦不再A梦
过去多啦不再A梦 2017-05-16 16:41:14
0
10
771

Tabiat pengekodan saya tidak begitu baik pada masa lalu, jadi banyak tab digunakan dalam kod.
Sekarang saya ingin menukar tab menjadi ruang Tidak praktikal untuk menetapkan arahan vimrc然后执行:ret命令就可以了,问题是需要被处理的文件有很多,手动为每个文件执行:ret Dari sudut mana saya boleh menyelesaikan masalah ini?

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

membalas semua(10)
大家讲道理

Sebagai contoh, semua yang anda mahu proses adalah fail python, kemudian cd ke direktori akar projek:
1. $> vim `find . -type f -name "*.py"` // Buka semua fail untuk diproses dengan VIM
2. :argdo :ret |. Kemas kini // Jalankan arahan :ret pada semua fail dalam senarai parameter vim dan simpan

Selain itu, anda boleh mengetahui lebih lanjut tentang penggunaan arahan bufdo dan windo.

Di atas hanyalah untuk menunjukkan bahawa VIM boleh melakukan ini dengan mudah sebagai tindak balas kepada masalah poster asal, tanpa perlu melakukannya satu persatu. Sudah tentu, menulis skrip mengikut idea di atas juga merupakan kaedah yang baik.

習慣沉默

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

洪涛

Adalah disyorkan untuk tidak menggunakan vim dan menulis skrip untuk mengendalikannya.
Ia boleh ditulis dalam shell, dan arahan find + sed akan melakukannya. Ia juga boleh ditulis dalam python, dan os.path.walk melintasi fail dan mengimbas baris demi baris.

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

Masalah seperti ini boleh diselesaikan menggunakan ungkapan biasa, tetapi sebaiknya jangan gunakan vim untuk menanganinya satu persatu. Adalah lebih baik untuk menulis skrip python untuk menjalankan ungkapan biasa

黄舟

expand Perintah shell melakukan ini.

某草草

Lebih selesa menggunakan ungkapan biasa untuk pemprosesan kelompok, tetapi jika anda mesti menggunakan vim, jawapan @shizhz adalah bagus.

Peter_Zhu

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

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

Gunakan mod bukan interaktif vi(m).
^I使用CTRL+V+IMasuk.
Tiada ruang boleh digunakan selepas EOF.
Tidak boleh ada ruang sebelum arahan vi(m).

我想大声告诉你

:h retab

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan