如何在一个大型Python代码库中用一个制表符替换四个空格?

3

我已经下载了一段Python代码,并且想要编辑它。问题是我过去使用制表符来缩进,但该文件使用四个空格代替,如果同时使用空格和制表符的组合,虽然视觉上看起来没问题,但代码会产生错误。

我的问题是是否有一种简单的方法可以将空格替换为制表符?


虽然 expand 不会将空格转换为制表符,但它会将所有制表符都转换,而不仅仅是前导空格。但它仍然是一个非常好的工具。 - Markus Mikkolainen
unexpand是一种将空格转换为制表符的工具。 - Markus Mikkolainen
显然,apparently unexpand --first-only --tabs=4 也可以解决问题。 - Markus Mikkolainen
5个回答

3

选择一个支持模拟制表符的编辑器,它将使用4个空格来模拟制表符。现在大多数编辑器都可以做到这点。它们看起来就像制表符,但实际上是由空格组成的。


大多数理解此内容的编辑器都可以按照某些规范“格式化代码”,包括更改缩进样式。获取一个好的编辑器或IDE。 - Markus Mikkolainen

2

使用 reindent.py 工具。它应该在你的系统中的 tools/scripts 目录下。在某些情况下,它可能不是默认安装的,需要安装额外的包,例如:python-examples 或 python-tools。


0
如果您正在使用带有bash的GNU/Linux或MacOSX,则可以在命令行中使用以下内容:
find . -type f -name '*.py' | while read file; do
     grep '    ' $file > /dev/null && sed -ie 's/    /\t/g' $file
done

0

你有几个选项:

  1. 使用可以配置为缩进制表符或空格的编辑器,并根据需要重新配置。 Vim, Eclipse, TextMate, GEdit 或任何其他稍微严肃的代码编辑器都可以做到这一点。
    此外,如果您的编辑器支持它,请打开显示初始空格。
  2. 在 Linux/Unix 上,您有多个命令行工具可帮助您进行转换。只需查看this SO question的答案即可。

0
在 Vim 中有 retab 命令。我在我的 vimrc 文件中有这一行:
nnoremap <F7> :set noexpandtab!<CR>

所以,每当我需要从制表符转换为空格或者相反的时候,我就按F7并在vim中调用命令:
:retab!

非常有用的插件,如果您使用vim的话-spacehi.vim。此插件将突出显示一行中的标签和尾随空格,并具有切换突出显示开关的功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接