1

我有一些带有很多typedef'edstruct的 C 代码,在 VIM 中看起来像这样:

typedef struct {
  int         a;
  someValue*    b;
  someOtherValue* c;
} val_t;

当我通过 VIM 在 VIM 中启用“打印空白字符”时:set list,我看到代码如下所示(.字符表示空格,-->表示硬制表符):

typedef struct {
  int->-->-->-->a;
  someValue*....b;
  someOtherValue*>>c;
} val_t;

因此,似乎这段代码到处都是硬制表符和空格,这可能是由于使用了不同的编辑器来维护它。我正在尝试编写一些命令来整理它。我知道我可以通过SHIFT+进行视觉选择V,然后将选择col通过管道传递给:

:'<:'>!col

但是,VIM 中的输出看起来很糟糕,因为它似乎col只是“逻辑地”(即:通过三个硬制表符)而不是词法地分隔列,并且输出看起来像这样:

typedef struct {
  int--->--->--->a;
  someValue*>--->--->b;
  someOtherValue*--->--->--->c;
} val_t;

有没有办法告诉col使用固定宽度的硬制表符(即:每个制表符 4 个“空格”)对齐数据列,如下所示,以便结构中变量名称的开头在视觉上对齐?期望的结果是:

typedef struct {
  int--->--->--->--->a;
  someValue*>--->--->b;
  someOtherValue*--->c;
} val_t;

这将允许我在每个块/每个结构级别上重构一堆头文件,而不是花费数小时手动缩进代码块以使其看起来不错。

谢谢你。

4

1 回答 1

2

你被困在硬标签上吗?如果不是,您可能需要查看tabularvim-easy-align

使用表格,您可以执行以下操作:

:?{?+,/}/-Tabularize/\ze\w\+;/

如需更多帮助,请参阅:

:h \ze
:h range
于 2015-07-20T19:58:41.227 回答