我在Stack Overflow上看了几个关于如何将空格转换为制表符而没有找到我需要的问题。关于如何将制表符转换为空格,似乎有更多的问题,但我正试图做相反的事情。
在Vim中,我尝试过:retab和:retab!没有运气,但我相信这些实际上是用来从制表符到空格的。
我在命令提示符下尝试了展开和取消展开,但没有任何运气。
以下是该文件:
http://gdata-python-client.googlecode.com/hg-history/a9ed9edefd61a0ba0e18c43e448472051821003a/samples/docs/docs_v3_example.py
如何使用Vim或shell将前导空格转换为制表符?
Linux:使用unexpand(和expand)
这里有一个非常好的解决方案:https://stackoverflow.com/a/11094620/1115187,主要是因为它使用*nix-utilities:
Unexpand - Spaces ->选项卡
Expand - tabs ->空格
Linux:自定义脚本
我最初的回答
在。/app文件夹中的所有.py文件中替换4-空格缩进(脚本中有两个{4})的Bash代码片段(递归):
find ./app -iname '*.py' -type f \
-exec awk -i inplace \
'{ match($0, /^(( {4})*)(.*?)$/, arr); gsub(/ {4}/, "\t", arr[1]) }; { print arr[1] arr[3] }' {} \;
它不会在中间或结尾修改4-空格。
在Ubuntu 16.0x和Linux Mint 18下测试