【问题标题】:vim, reformat text to initializersvim,将文本重新格式化为初始化程序
【发布时间】:2010-11-24 21:34:46
【问题描述】:

我有一个大文件,里面的行看起来像

2 没有通往指定公交的路线 网络

3 没有到达目的地的路线

即行首的数字,后跟描述。

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

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

{3,"没有到达目的地的路线"},

我该怎么做?

【问题讨论】:

    标签: c vim formatting


    【解决方案1】:

    试试

    :%s/^\(\d\+\)\s\(.*\)$/{\1, "\2"},/
    

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

    或者,使用“更多魔法”(感谢 cmets 中的 Al):

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

    【讨论】:

    • +1。如果某些数字有多个数字,请使用\d* 而不是\d
    • 根据我的目的调整为 %s/^(\d*)[ ]*\s(.*)$/{\1, "\2"},/ 。谢谢。
    • @Stephan202: \d\+ 可能比 \d* 更好,如果你想确保至少有一位数字。此外,您可以使用 :%s/\v^(\d+)\s(.*)$/{\1, "\2"},/ (:help \v) 节省一些反斜杠。如果你确定它们永远是空格,你可以这样做:%s/\v^(\d+) +(.*)$/{\1, "\2"},/
    • AI:谢谢,直到现在我才知道\v,非常有帮助。
    • 路过 +1:\v 很棒。谁不喜欢所谓的“更多魔法”?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    • 2020-10-21
    相关资源
    最近更新 更多