Kika's
Blog
图片简介 | CC BY 4.0 | 换一张

vscode 文本批量替换技巧

2024-07-22

在批量改Verilog信号名的时候很管用

方法一:多行编辑

按住shift+alt,然后再用鼠标选择另外一行,即可在每一行相同列位置出现光标,同时编辑多行

方法二:正则表达式

比如我要替换下面的文本

    .o_arburst    (mst0_arburst),
    .o_arlock     (mst0_arlock),
    .o_arcache    (mst0_arcache),
    .o_arprot     (mst0_arprot),
    .o_arqos      (mst0_arqos),
    .o_arregion   (mst0_arregion),
    .o_arid       (mst0_arid),
    .o_aruser     (mst0_aruser),

变成这样:

    .o_arburst    (mst_0_ar_burst),
    .o_arlock     (mst_0_ar_lock),
    .o_arcache    (mst_0_ar_cache),
    .o_arprot     (mst_0_ar_prot),
    .o_arqos      (mst_0_ar_qos),
    .o_arregion   (mst_0_ar_region),
    .o_arid       (mst_0_ar_id),
    .o_aruser     (mst_0_ar_user),

那么就可以编写正则表达式mst(\d)_ar来查找匹配,然后替换为mst_$1_ar_,其中\d指匹配一个数字,把\d包起来的括号代表一个捕获组,第i对括号包起来的就是第i个捕获组,在替换的时候就可以通过$i来使用捕获组。

另外一个更复杂的例子:\b[a-zA-Z]{3}_\d+_ar\w*,其中:

  • \b 表示单词边界,确保我们匹配的是完整的单词而不是更长单词的一部分。
  • [a-zA-Z]{3} 表示匹配任意三个字母。
  • \d+ 匹配一个或多个数字。
  • \w* 匹配任意数量的字母、数字或下划线,直到单词的结尾。