Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(重新)在Vim中格式化PHP代码_Php_Vim_Code Formatting_Macvim - Fatal编程技术网

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

(重新)在Vim中格式化PHP代码,php,vim,code-formatting,macvim,Php,Vim,Code Formatting,Macvim,如何格式化看起来像这样的PHP代码 class SomeClass { function insideclass() { } } 在不使用任何外部工具的情况下使用Vim class SomeClass { function insideclass() { } } 我并不是说这是格式化代码的最佳方式,但这是我们团队正在遵循的 编辑:删除了对snippet插件的引用,这导致了对该问题的一些混淆。为什么不修改该插件的源代码 例如,更改以下内容:

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

class SomeClass
{
    function insideclass()
    {


    }
} 
在不使用任何外部工具的情况下使用Vim

class SomeClass {
    function insideclass() {


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


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

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

例如,更改以下内容:

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...}
        }
    }


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


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

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


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

您有两个不相关的问题,无法找到解决这两个问题的唯一方法

  • 您不喜欢默认的
    代码段。

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

  • 某些现有代码不符合编码规则。

    Snipmate不会有任何帮助,因为它只处理插入,而不处理转换。您将需要一些外部宏或一些宏

    编辑

    下面是一个非常简单的命令,它完全满足您在示例中的要求。我不能保证它在任何地方都适用。把它作为一个天真的起点

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

    • ^\s*{\s*$
      匹配所有单个
      {
      ,无论它们之间的空白量和行的开头

    • normal
      执行
      normal
      命令,请参见
      :h:normal

    • kJ
      上升一行,
      J
      将该行与匹配行连接

    • 完成了

    ENDEDIT


  • 你有两个不相关的问题,你找不到解决这两个问题的唯一方法

  • 您不喜欢默认的
    代码段。

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

  • 某些现有代码不符合编码规则。

    Snipmate不会有任何帮助,因为它只处理插入,而不是转换。您需要一些外部宏或几个宏

    编辑

    这里有一个非常简单的命令,它可以完全满足您在示例中的要求。我不能保证它在任何地方都适用。将它作为一个简单的起点

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

    • ^\s*{\s*$
      匹配所有单个
      {
      ,无论它们之间的空白量和行的开头

    • normal
      执行
      normal
      命令,请参见
      :h:normal

    • kJ
      上升一行,
      J
      将该行与匹配行连接

    • 完成了

    ENDEDIT


  • 是的,修改插件绝对是一个选项。我只是想看看是否有可能将代码从一种样式转换为另一种样式。是的,修改插件绝对是一个选项。我只是想看看是否有可能将代码从一种样式转换为另一种样式。实际上,我的问题更多的是针对第二个问题。我只是简单地说了一下ate插件作为一个例子。我的错。我现在编辑了这个问题来澄清它。除了使用beautifier外,第二个问题还有基于Vim的解决方案吗?我知道没有交钥匙解决方案。也许有人写了一个基于PHP_beautifier的脚本?我不知道。它看起来像是宏和替换的典型用例。+1。我知道
    kJ
    是最简单的解决方案,但我不知道如何在找到匹配项时执行它。谢谢!哇!!这正是我想要的。简单而优雅。我将把它映射到我的.vimrc中易于记忆的键。实际上我的问题更多的是针对第二个问题。我只是以插件为例。我的错。我编辑了que现在让我澄清一下。除了使用beautifier之外,第二个问题还有基于Vim的解决方案吗?我知道没有交钥匙解决方案。也许有人写了一个基于PHP_beautifier的脚本?我不知道。它看起来像是宏和替换的典型用例。+1。我知道
    kJ
    是最简单的解决方案,但我不知道w如何在找到匹配项时执行它。谢谢!哇!!这正是我想要的。简单而优雅。我将把它映射到我的.vimrc中易于记忆的键。