1

多くのtypedef'ed structs を含む C コードがいくつかあり、VIM では次のようになります。

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

を介してVIMで「空白文字の印刷」を有効にすると:set list、コードが次のように表示されます(.文字はスペースを-->表し、ハードタブを表します):

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

したがって、このコードにはハードタブとスペースがあちこちに混在しているように見えます。これは、おそらくそれを維持するために使用されているさまざまなエディターが原因です。私はそれを片付けるためにいくつかのコマンドを書き込もうとしています。SHIFT+を介して視覚的な選択を行うことができることを知っていますV。次に、選択を次のようにパイプしcolます。

:'<:'>!col

ただし、VIM の出力はcol、列を語彙的にではなく「論理的に」(つまり、3 つのハードタブを介して) 分離しているだけのように見え、出力は次のようになります。

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

ハードタブで立ち往生していますか?そうでない場合は、tabularまたはvim-easy-alignを調べてください。

表形式を使用すると、次のようなことができます。

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

詳細については、次を参照してください。

:h \ze
:h range
于 2015-07-20T19:58:41.227 に答える