【问题标题】:VIM autoindent doesn't work properlyVIM 自动缩进不能正常工作
【发布时间】:2026-01-08 07:10:01
【问题描述】:

在 VIM 中,当我键入 gg=G 以自动缩进整个代码时,除了具有以下结构的行之外,所有内容都会正确缩进:

$my_arr = array(
    'a' => 1,
    'b' => 2,
)

我已将 shiftwidthtabstop 设置为 2,但它会将数组元素缩进 4 个空格。为什么?

【问题讨论】:

  • 文件类型、缩进设置(autoindentsmartindentindentexpr)、Vim 版本?
  • filetype = php/ vim version = 7.3/ smartindent 和 autoindent 已设置
  • 试试 :set equalprg?查看点击 = 时实际运行的内容。如果这不是空白,您可能需要配置/更改该程序。
  • 这就是 vim 缩进下一行的未完成语句的方式。如果你有 a = 在一行和 b;在下一个它将以相同的方式缩进。尝试在:h indent.txt 中搜索如何更改。
  • cinoptions 设置了吗?仅使用您提到的设置,我无法重现此行为。

标签: vim vim7.3


【解决方案1】:

你从未回答过关于'indentexpr' 的问题。可能这意味着它是空的。试试

:set indentexpr=GetPhpIndent()

如果你有这个应该自动设置

:filetype plugin indent on

在你的 vimrc 文件中。我间接地从

:source $VIMRUNTIME/vimrc_example.vim

:help :filetype
:help :filetype-indent-on
:help php-indent

【讨论】:

    最近更新 更多