在Vim中格式化PHP代码

gac*_*rux 27 php vim code-formatting tidy

我目前正在使用Vim作为轻量级IDE.我有NERDTree,bufexplorer,supertab和ctags插件,可以完成我想要的几乎所有操作.对我来说,唯一遗漏的是自动代码格式化.

我正在使用一些混乱的PHP代码,它具有不一致的缩进和代码格式,理想情况下我可以突出显示我想要格式化的代码(整个文件也可以)并运行命令来整理它.

在Vim工作的人有没有一个很好的解决方案?

Wes*_*son 65

在vim中修复PHP缩进的快速方法是使用shift- 在视觉上选择要使用的行- v,然后按下equals(=)以触发自动格式化.

至于其他格式问题,你可能看一些使用正则表达式搜索和替换,例如:%s/^M/\r/g(这是ctrl- - V ctrl,m不是caret- M)修复行尾

  • Whaledawg.你甚至可以只用gg = G并保存一个角色.值得记住的是,你可以在vim中动作大多数命令 (17认同)
  • Protip:ggvG =将选择文件和autoformat中的每一行 (9认同)
  • 我不敢相信我几年前不知道 equals 自动格式化,这真的很有用。对于格式问题,我*可以*构建一些自定义正则表达式,我想我希望有人已经完成(并测试)了它。 (2认同)

wor*_*hit 13

在vim中进入正常模式,然后键入

1GVG=
Run Code Online (Sandbox Code Playgroud)

  • `gg = G`更容易(更少封锁) (13认同)
  • 实际上,此命令会触发缩进脚本中的功能.它只是重新编写代码,没有完全重新格式化. (5认同)
  • 1G-转到第一行;V-切换至视觉模式;G-转到文件末尾;=-自动格式化所选代码; (2认同)

Jan*_*hou 10

PSR-2风格的格式

对于新标准编码风格指南PSR-2使用PHP-CS-Fixer.

有一个Vim插件:Vim-php-cs-fixer

如何安装:

安装PHP-CS-Fixer(全局Composer):

composer global require friendsofphp/php-cs-fixer
Run Code Online (Sandbox Code Playgroud)

然后添加Vim插件(Pathogen):

cd ~/.vim/bundle
git clone git@github.com:stephpy/vim-php-cs-fixer.git
Run Code Online (Sandbox Code Playgroud)

重启Vim.

默认映射:

<leader>pcd " For directory
<leader>pcf " For flie
Run Code Online (Sandbox Code Playgroud)

  • 要在文件保存后自动运行 **php-cs-fixer**,请在 ~/.vimrc 中添加以下行:`autocmd BufWritePost *.php call PhpCsFixerFixFile()` (2认同)

Chi*_*nke 8

有一个vim插件可以在vim中对代码进行格式化.它被称为vim-autoformat,您可以阅读它并在此处下载:

https://github.com/Chiel92/vim-autoformat

它将外部代码格式化程序集成到vim中.安装此插件时,您只需安装外部代码格式化程序即可开箱即用.它支持php格式化程序phpCB,这是迄今为止我见过的最好的PHP格式化程序.

更新:由于代码破坏行为,不再支持phpCB.但是,vim的indentfile总是用作后备,允许您在没有可用的格式化程序时至少缩进代码.