You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Vim中正确缩进C语言结构体的指定初始化器?

在Vim中修复带强制类型转换的C结构体指定初始化器缩进问题

当你在Vim中使用带强制类型转换的C结构体指定初始化器时,默认缩进会出现子项额外缩进的问题,只需调整Vim的C缩进配置即可解决。

解决方案

在你的~/.vimrc(或Vim配置文件)中添加以下配置:

set cinoptions+=(:0

配置说明

cinoptions是Vim控制C语言缩进的核心选项,(:0的作用是让强制类型转换括号(...)后的结构体初始化器大括号内的所有行,与大括号所在行保持相同的缩进层级,避免出现不必要的额外缩进。

效果验证

添加配置后,重新打开代码文件,缩进将符合你的期望:

typedef struct {
    int foo;
    int bar;
} child_t;

typedef struct {
    child_t child;
} parent_t;

int main(int argc, char *argv[]) {
    parent_t p;
    p.child = (child_t) {
        .foo = 1,
        .bar = 2,
    };
}

内容的提问来源于stack exchange,提问作者Anne van Rossum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 10:10:32