(重新)在Vim中格式化PHP代码

时间:2012-04-12 06:48:11

标签: php vim code-formatting macvim

如何设置看起来像这样的PHP代码

class SomeClass
{
    function insideclass()
    {


    }
} 

进入这个,使用Vim而不使用任何外部工具?

class SomeClass {
    function insideclass() {


    }
} 

我并不认为这是格式化代码的最佳方式,但这是我们在团队中遵循的内容。

修改:删除了对代码段插件的引用,这引起了对该问题的一些疑惑。

3 个答案:

答案 0 :(得分:4)

你有两个不相关的问题,你找不到两者的独特解决方案。

  1. 您不喜欢默认的class代码段。

    没问题。如果它尚未存在,请创建~/.vim/snippets/php.snippets并根据其他答案对其进行自定义以符合您团队的规则。 Snipmate不够聪明,无法适应你的编码风格。

  2. 您的部分现有代码不符合您的编码规则。

    Snipmate完全没有帮助,因为它只处理插入,而不是转换。您将需要一些外部beautifier或一些宏。

    修改

    这是一个非常简单的命令,可以完全按照您的示例执行。我不能保证它能适用于所有地方。把它作为一个天真的起点。

    :g/^\s*{\s*$/normal kJ
    
    • :g/pattern会对包含pattern的所有行行事,请参阅:h :global

    • ^\s*{\s*$匹配所有单{,无论它们与行首之间的空白量是多少。

    • normal执行normal个命令,请参阅:h :normal

    • kJ上升一行,J此行与匹配的行一起上线。

    • 完成。

    EndEdit中

答案 1 :(得分:2)

为什么不修改该插件的源代码?

例如,更改这些:

snippet class
    /**
     * ${1}
     */
    class ${2:ClassName}
    {
        ${3}
        function ${4:__construct}(${5:argument})
        {
            ${6:// code...}
        }
    }

snippet class
    /**
     * ${1}
     */
    class ${2:ClassName}{
        ${3}
        function ${4:__construct}(${5:argument}){
            ${6:// code...}
        }
    }

答案 2 :(得分:0)

Al snipmate片段存储在目录中。转到该目录并编辑所需的文件。

direcorty存储在vim目录中并被称为snippets。在那里你看到一个php.snippets文件。转到该文件,在第70行,您可以编辑该类的片段。