vim,将文本重新格式化为初始值设定项

3 c vim formatting

我有一个大文件,看起来像是行

2没有到指定传输网络的路由

3没有前往目的地的路线

即一行开头的数字,后面是描述.

我想将其转换为结构初始化器

{2,"没有指定公交网络的路线"},

{3,"没有前往目的地的路线"},

我该怎么做?

Kon*_*lph 8

尝试

:%s/^\(\d\+\)\s\(.*\)$/{\1, "\2"},/
Run Code Online (Sandbox Code Playgroud)

这使用搜索和替换,并搜索以数字开头的行,后跟空格,后跟任意文本,直到行尾.这将由您指定的模式替换.

或者,使用"更多魔法"(感谢评论中的Al):

:%s/\v^(\d+)\s(.*)$/{\1, "\2"},/
Run Code Online (Sandbox Code Playgroud)

  • 如果你想确保至少有一个数字,@ Stephan202:\ d\+可能比\ d*更好.另外,你可以用`:%s /\v ^(\ d +)\ s(.*)$/{\ 1,"\ 2"},/`(`:help\v`)保存一些反斜杠. .如果你确定它们总是空格,你可以做`:%s /\v ^(\ d +)+(.*)$/{\ 1,"\ 2"},/` (4认同)