我正在尝试使用 vim 替换命令将特定类型的 C 代码转换为宏代码。此示例片段
#define LIST_GEN_FUNCS(TYPE)
struct list_##TYPE* list_generate() {
struct list_##TYPE* ret = malloc(sizeof(struct list));
ret->len = 0; ret->first = 0;
return ret;
}
需要看起来像这样:
#define LIST_GEN_FUNCS(TYPE)
struct list_##TYPE* list_generate() { \
struct list_##TYPE* ret = malloc(sizeof(struct list)); \
ret->len = 0; ret->first = 0; \
return ret; \
} \
为此,我需要一种方法来用空格填充所有列,直到固定的行长,然后在每行结束后添加“\”。
%s/$/\= submatch(0) . " " . repeat(" ", 78 - LENGTH_OF_LINE)
现在,这是我的问题。我无法找出如何获得匹配线的长度。谁能告诉我,插入什么为 LENGTH_OF_LINE?