【问题标题】:Formatting PHP Code within Vim在 Vim 中格式化 PHP 代码
【发布时间】:2010-10-25 20:47:01
【问题描述】:

我目前使用 Vim 作为轻量级 IDE。我有 NERDTree、bufexplorer、supertab 和 ctags 插件,它们几乎完成了我想要的一切。对我来说唯一缺少的就是自动代码格式化。

我正在处理一些乱七八糟的 PHP 代码,这些代码的缩进和代码格式不一致,理想情况下我可以突出显示我想要格式化的代码(整个文件也可以)并运行命令来整理它。

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

【问题讨论】:

  • 我喜欢 Wesley Mason 使用“shift-v”后跟“=”的想法。我将“shift-v”和“=”的键序列记录到一个宏中。然后我可以多次调用宏来格式化多行代码。

标签: php vim code-formatting tidy


【解决方案1】:

在 vim 中修复 PHP 缩进的快速方法是使用 shift-v 直观地选择要使用的行,然后按等于 (= ) 触发自动格式化。

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

【讨论】:

  • 我不敢相信几年前我不知道 equals 自动格式化,这真的很有用。对于我可以构建一些自定义正则表达式的格式问题,我想我希望有人已经完成(并测试过)它。
  • Protip:ggvG= 将选择文件中的每一行并自动格式化
  • 鲸鱼。你甚至可以只 gg=G 并保存一个字符。值得记住的是,您可以在 vim 中执行大多数命令
  • 喜欢 shift-v + = 快捷方式。这将使我免于头痛。非常感谢。我如何给你更多的选票:)
  • 哇!简单而强大!
【解决方案2】:

在vim中进入普通模式,然后输入

1GVG=

【讨论】:

  • 1G - 转到第一行; V - 切换到视觉模式; G - 转到文件末尾; = - 自动格式化所选代码;
  • gg=G 更简单(更少大写锁定)
  • 实际上这个命令触发了缩进脚本中的功能。它只是重新缩进代码,没有完全重新格式化。
  • 我会使用ggvG= 来记录它们是同一件事
  • gg: 光标到第N行,默认第一行
【解决方案3】:

PSR-2 风格的格式

对于新标准Coding Style Guide PSR-2,请使用PHP-CS-Fixer

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

如何安装:

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

composer global require friendsofphp/php-cs-fixer

然后添加 Vim 插件 (Pathogen):

cd ~/.vim/bundle
git clone git@github.com:stephpy/vim-php-cs-fixer.git

重启 Vim。

默认映射:

<leader>pcd " For directory
<leader>pcf " For flie

【讨论】:

  • 要在文件保存后自动运行 php-cs-fixer,在 ~/.vimrc 中添加以下行:autocmd BufWritePost *.php call PhpCsFixerFixFile()
  • 我收到错误E117: Unknown function: php_cs_fixer#fix
  • @Mahdimehrabi 同样在这里,运气好吗?
【解决方案4】:

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

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

它将外部代码格式化程序集成到 vim 中。安装此插件后,您只需安装外部代码格式化程序即可让所有内容开箱即用。它支持php格式化程序phpCB,这是我目前见过的最好的php格式化程序。

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

【讨论】:

    【解决方案5】:

    vim website 不是最容易导航的,但那里有大量耐嚼的牛轧糖中心。

    例如,我在那里找到了this php indenting script。试试看吧。

    【讨论】:

      猜你喜欢
      • 2012-04-24
      • 2011-04-16
      • 1970-01-01
      • 2014-01-07
      • 1970-01-01
      • 1970-01-01
      • 2014-05-25
      • 2021-01-29
      • 2011-01-22
      相关资源
      最近更新 更多