将文本编辑器设置为在每次按下 Tab 键时使用空格或制表符非常容易。但是,我正在使用由我公司的一个大型开发团队维护的 Python 代码,其中一些使用空间,一些使用选项卡。我不能简单地让它们彼此一致,因为 1) 它会破坏 git blame,2) 它会混淆 git diff,以及 3) 下次另一个编辑器在其中一个中点击他们的 tab 键时,它将不可避免地破坏构建文件。
相反,我想要一个文本编辑器,它可以自动确定文件是按空格还是制表符缩进,然后符合现有布局。有人知道这样的事情是否存在吗?
将文本编辑器设置为在每次按下 Tab 键时使用空格或制表符非常容易。但是,我正在使用由我公司的一个大型开发团队维护的 Python 代码,其中一些使用空间,一些使用选项卡。我不能简单地让它们彼此一致,因为 1) 它会破坏 git blame,2) 它会混淆 git diff,以及 3) 下次另一个编辑器在其中一个中点击他们的 tab 键时,它将不可避免地破坏构建文件。
相反,我想要一个文本编辑器,它可以自动确定文件是按空格还是制表符缩进,然后符合现有布局。有人知道这样的事情是否存在吗?
Sublime Text就是这样做的。
如果您使用 linux,我认为 geany ( http://www.geany.org/ ) 在首选项中有该选项。
对于 Emacs,有guess-style。
Mac 版的TextMate可以做到这一点。
我确定 vim 和 emacs 都有脚本。
您可以在 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 并给任何使用标签的开发人员头上的一些怪癖。
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