У меня есть код C с большим количеством typedef
ed struct
, и он выглядит так в 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
просто разделяет столбцы «логически» (т. е. с помощью трех жестких вкладок), а не лексически, и вывод выглядит так:
typedef struct {
int--->--->--->a;
someValue*>--->--->b;
someOtherValue*--->--->--->c;
} val_t;
Есть ли способ указать col
выровнять столбцы данных с помощью жестких вкладок фиксированной ширины (т.е.: 4 «пробела» на вкладку), как показано ниже, чтобы начало имен переменных в структуре визуально выровнялось? Желаемый результат:
typedef struct {
int--->--->--->--->a;
someValue*>--->--->b;
someOtherValue*--->c;
} val_t;
Это позволило бы мне реорганизовать кучу файлов заголовков на уровне блоков/структур, а не тратить часы вручную на отступы блоков кода, чтобы они выглядели красиво.
Спасибо.
"\t someValue \t* \tname\n\n\t ;"
? Это достаточно умно? - person   schedule 20.07.2015s/\t/ /g
, а затем заменить последовательные разделители одним черезs/\t\{1,\}/\t/g
. Это означает, что я знаю, что просто ищу два поля, разделенные одной вкладкой. - person Cloud   schedule 20.07.2015