1

我是一个 Vim 用户(由于我的 Python 背景)已经习惯了空格而不是制表符。我正在与另一个使用 Windows IDE 并且真的想使用选项卡的开发人员一起开发 PHP 项目。对于喜欢特定样式的 PHP,似乎真的没有任何硬性和快速的样式指南,所以我有点卡住需要处理选项卡。

是否有某种方式,无论是通过 Git 还是 Vim,我可以在编辑时使用选项卡式代码并将其转换为空格?那么也许在 git add/commit 上它可以转换回标签?

4

1 回答 1

3

一件非常重要的事情是跟踪的内容是标准化的。您和其他开发人员只需要在那里就某事达成一致。除了商定的标准之外,你们中的任何一个想要做的事情都可能导致结果好坏参半。并非总是可以干净利落地来回转换。

我真的建议只处理它。我对制表符和空格有自己的看法,并且我一直在使用它们编写代码。最好的办法就是设置你的编辑器来匹配标准化的风格,然后顺其自然。在 vim 中,关闭 expandtab,将 tabstop 设置为你喜欢的。

如果您仍想尝试,有两种主要方法:

  • 在 Vim 中使用自动命令进行读/写转换。您可能需要BufReadPost,BufWritePreBufWritePost. (对于写作,你转换为标准,让 Vim 编写它,然后转换回你喜欢的编辑方式。)确保按你喜欢的方式设置 tabstop,然后是这样的(未经测试):

    set tabstop=4
    autocmd BufReadPost * set expandtab | retab
    autocmd BufWritePre * set noexpandtab | retab!
    autocmd BufWritePost * set expandtab | retab
    

*是将适用的文件模式;您可能不得不对此感到困惑,或者只为某个目录中的文件添加自动命令,以确保您编辑的所有内容都不会发生这种情况。请注意,这是危险的;例如,它将替换字符串中的文字制表符。

  • 使用 Git 的涂抹/清洁过滤器。man gitattributes您可以在或Pro Git中阅读有关它们的信息。您可以使用它们进行转换以进行编辑,然后返回到提交标准。如果从来没有任何奇怪的缩进,它可能就像将前导制表符更改为一定数量的空格一样简单,并将前导空格更改为该制表符数量的一小部分。用 sed/perl/indent 来做,不管你喜欢什么。
于 2011-12-04T19:43:17.687 回答