如何格式化看起来像这样的 PHP 代码
class SomeClass
{
function insideclass()
{
}
}
进入这个,在没有任何外部工具的情况下使用 Vim?
class SomeClass {
function insideclass() {
}
}
我并不是说这是格式化代码的最佳方式,但这是我们在团队中所遵循的。
编辑:删除了对代码片段插件的引用,这导致了对该问题的一些混淆。
如何格式化看起来像这样的 PHP 代码
class SomeClass
{
function insideclass()
{
}
}
进入这个,在没有任何外部工具的情况下使用 Vim?
class SomeClass {
function insideclass() {
}
}
我并不是说这是格式化代码的最佳方式,但这是我们在团队中所遵循的。
编辑:删除了对代码片段插件的引用,这导致了对该问题的一些混淆。
你有两个不相关的问题,你不会找到一个独特的解决方案。
您不喜欢默认class代码段。
没问题。如果它不存在,~/.vim/snippets/php.snippets请按照其他答案创建和自定义它以适应您团队的规则。Snipmate 不够聪明,无法适应您的编码风格。
您现有的一些代码不符合您的编码规则。
Snipmate 根本无济于事,因为它只处理插入,而不处理转换。您将需要一些外部美化器或一些宏。
编辑
这是一个非常简单的命令,可以完全按照您的示例进行操作。我不保证它适用于任何地方的一切。把它作为一个天真的起点。
:g/^\s*{\s*$/normal kJ
:g/pattern作用于所有包含 的行pattern,请参阅:h :global。
^\s*{\s*${无论它们与行首之间有多少空格,都匹配所有单个。
normal执行normal命令,请参阅:h :normal.
kJ上升一行并J与匹配的行一起进入该行。
完毕。
结束编辑
为什么不修改那个插件的源代码呢?
例如,更改这些:
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 片段都存储在一个目录中。转到该目录并编辑所需的文件。
目录存储在 vim 目录中并调用snippets. 在那里你看到一个php.snippets文件。转到该文件,在第 70 行,您可以编辑该类的代码段。