如何格式化看起来像这样的 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 行,您可以编辑该类的代码段。