1

如何格式化看起来像这样的 PHP 代码

class SomeClass
{
    function insideclass()
    {


    }
} 

进入这个,在没有任何外部工具的情况下使用 Vim?

class SomeClass {
    function insideclass() {


    }
} 

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

编辑:删除了对代码片段插件的引用,这导致了对该问题的一些混淆。

4

3 回答 3

4

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

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

    没问题。如果它不存在,~/.vim/snippets/php.snippets请按照其他答案创建和自定义它以适应您团队的规则。Snipmate 不够聪明,无法适应您的编码风格。

  2. 您现有的一些代码不符合您的编码规则。

    Snipmate 根本无济于事,因为它只处理插入,而不处理转换。您将需要一些外部美化器或一些宏。

    编辑

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

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

    • ^\s*{\s*${无论它们与行首之间有多少空格,都匹配所有单个。

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

    • kJ上升一行并J与匹配的行一起进入该行。

    • 完毕。

    结束编辑

于 2012-04-12T07:58:49.160 回答
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...}
        }
    }
于 2012-04-12T06:54:51.623 回答
0

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

目录存储在 vim 目录中并调用snippets. 在那里你看到一个php.snippets文件。转到该文件,在第 70 行,您可以编辑该类的代码段。

于 2012-04-12T06:56:33.190 回答