Heim  >  Fragen und Antworten  >  Hauptteil

Wie verarbeite ich Dateien in Vim stapelweise und ändere Tabulatoren in Leerzeichen?

Meine Codierungsgewohnheiten waren in der Vergangenheit nicht sehr gut, daher wurden im Code viele Tabulatoren verwendet.
Jetzt möchte ich Tabulatoren in Leerzeichen umwandeln. Es ist nicht praktikabel, den Befehl vimrc然后执行:ret命令就可以了,问题是需要被处理的文件有很多,手动为每个文件执行:ret festzulegen. Aus welchem ​​Blickwinkel kann ich dieses Problem lösen?

过去多啦不再A梦过去多啦不再A梦2712 Tage vor696

Antworte allen(10)Ich werde antworten

  • 大家讲道理

    大家讲道理2017-05-16 16:43:14

    例如你要处理的都是python文件,那么cd到项目根目录:
    1. $> vim `find . -type f -name "*.py"` // 用VIM打开所有要处理的文件
    2. :argdo :ret | update // 对vim参数列表中的所有文件都执行:ret命令并且保存

    另外可以再了解下bufdo, windo命令的用法。

    以上只是针对楼主的问题展示VIM是可以很轻松做到这个的,不用一个一个去弄。当然按照楼上的思路写脚本也是很好的方法。

    Antwort
    0
  • 習慣沉默

    習慣沉默2017-05-16 16:43:14

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

    Antwort
    0
  • PHP中文网

    PHP中文网2017-05-16 16:43:14

    建议别用 vim,写个脚本处理。
    可以用 shell 写,find + sed 命令就可以搞定了,也可以用 python 写,os.path.walk 遍历文件,逐行扫描,没多少代码的。

    Antwort
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-16 16:43:14

    :%s/\t/    /g
    

    Antwort
    0
  • 大家讲道理

    大家讲道理2017-05-16 16:43:14

    这种问题可以使用正则表达式来处理呀,不过最好不要vim一个个搞过去,写个python脚本来跑正则表达式应该更好一些

    Antwort
    0
  • 黄舟

    黄舟2017-05-16 16:43:14

    expand shell 命令是干这个的。

    Antwort
    0
  • 某草草

    某草草2017-05-16 16:43:14

    批处理用正则是比较爽的,不过一定要vim的话,@shizhz的答案不错。

    Antwort
    0
  • 天蓬老师

    天蓬老师2017-05-16 16:43:14

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

    Antwort
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-16 16:43:14

    ls *.py | while read file;do
        vi $file<<EOF
    :%s/^I/    /g
    :wq
    EOF
    done
    

    使用vi(m)的非交互方式。
    ^I使用CTRL+V+I输入。
    EOF后面不能用空格。
    vi(m)命令前不能有空格。

    Antwort
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-16 16:43:14

    :h retab

    Antwort
    0
  • StornierenAntwort