5

将文本编辑器设置为在每次按下 Tab 键时使用空格或制表符非常容易。但是,我正在使用由我公司的一个大型开发团队维护的 Python 代码,其中一些使用空间,一些使用选项卡。我不能简单地让它们彼此一致,因为 1) 它会破坏 git blame,2) 它会混淆 git diff,以及 3) 下次另一个编辑器在其中一个中点击他们的 tab 键时,它将不可避免地破坏构建文件。

相反,我想要一个文本编辑器,它可以自动确定文件是按空格还是制表符缩进,然后符合现有布局。有人知道这样的事情是否存在吗?

4

6 回答 6

6

Sublime Text就是这样做的。

于 2009-11-09T21:41:44.680 回答
1

如果您使用 linux,我认为 geany ( http://www.geany.org/ ) 在首选项中有该选项。

于 2009-11-09T21:45:21.173 回答
1

对于 Emacs,有guess-style

于 2012-01-01T00:51:42.453 回答
0

Mac 版的TextMate可以做到这一点。

我确定 vim 和 emacs 都有脚本。

于 2009-11-09T21:44:01.363 回答
0

您可以在 vim 中执行此操作。这个来自codeblog的函数展示了如何检测文件的流行格式,并设置你的默认值以匹配:

function Kees_settabs()
    if len(filter(getbufline(winbufnr(0), 1, "$"), 'v:val =~ "^\\t"')) > len(filter(getbufline(winbufnr(0), 1, "$"), 'v:val =~ "^ "'))
        set noet ts=8 sw=8
    endif
endfunction
autocmd BufReadPost * call Kees_settabs()

就个人而言,我只会使用 2 x 4 并给任何使用标签的开发人员头上的一些怪癖。

于 2009-11-09T22:10:55.533 回答
0

vim 可以为所欲为。vim 几乎可以做任何事情。

这是一个为 Python 定制 vim 的好方法:http://henry.precheur.org/2008/4/18/Indenting_Python_with_VIM.html

编辑:实际上,我只是在玩这个,这是一个简单的方法。将这两行添加到您的 vim 设置文件中:

filetype on
autocmd FileType python set smarttab expandtab
于 2009-11-09T22:24:40.450 回答