VSCode批量代码比较

前言

最近因为工作原因,需要找出一个工程里面修改过的地方。VSCode里自带代码比较功能,可以高亮代码不同的地方。然而手动一个个打开文件来比较显然非常的繁琐,在网上检索后发现并没有相关的方法。因此,为了解决这个问题,在查阅了官方文档后,决定分享这个方法。

查阅文档

The Visual Studio Code command-line interface中,有-d指令,可以打开差异编辑器(代码比较),需要输入两个文件夹的参数。

ArgumentDescription
-h or --helpPrint usage
-v or --versionPrint VS Code version (for example, 1.22.2), GitHub commit ID, and architecture (for example, x64).
-n or --new-windowOpens a new session of VS Code instead of restoring the previous session (default).
-r or --reuse-windowForces opening a file or folder in the last active window.
-g or --gotoWhen used with file:line{:character}, opens a file at a specific line and optional character position. This argument is provided since some operating systems permit : in a file name.
-d or --diff <file1> <file2>Open a file difference editor. Requires two file paths as arguments.
-m or --merge <path1> <path2> <base> <result>Perform a three-way merge by providing paths for two modified versions of a file, the common origin of both modified versions, and the output file to save merge results.
-w or --waitWait for the files to be closed before returning.
--locale <locale>Set the display language (locale) for the VS Code session. (for example, en-US or zh-TW)

因此,通过在VScode终端(或用win+R,输入CMD,用cd指令进入需要比较的文件夹)例如:

code  . -d 目标文件1路径 目标文件2路径
cd 目标文件目录
code  . -d 目标文件1路径 目标文件2路径

可以用CMD来进行操作意味着:通过编写bat批处理命令文件即可实现一键打开所有需要比较的代码。 

以我在桌面创建的compare文件夹为例,compare文件夹中包含了proj1和proj2文件夹,分别代表着修改前和修改后的工程文件,现在我们要找出哪些代码发生了变化:

 在下方终端输入

code  . -d .\proj1\main.c .\proj2\main.c

 然后编辑器便打开了这两个文件的差异比较器,可以看到两个代码第六行有区别和变动。

 通过依次输入下列的命令,即可以打开所有需要比对的文件:

code  . -d .\proj1\main.c .\proj2\main.c
code  . -d .\proj1\module1.c .\proj2\module1.c
code  . -d .\proj1\module2.c .\proj2\module2.c
code  . -d .\proj1\module3.c .\proj2\module3.c
code  . -d .\proj1\lib.h .\proj2\lib.h

 但索性这里的文件比较少,如果是一个比较大的工程,文件到达两位数时,手动输入这些代码也非常耗时耗力。这里推荐通过python来实现列出文件夹中的列表,并输出需要的指令(这里python文件创建在compare目录下,".\"可以指向当前所在目录)。

import os
temp=''
filelist = os.listdir('.\\proj1')
for sv in filelist:
    #通过该判断筛选掉需要读取的文件
    if(sv.find(".c")>0):
        #通过该判断筛选不需要读取的文件
        if(sv.find("h")<0):
            if(temp!=''):
                temp+='&'
            temp+="code  . -d .\\proj1\\"+sv+" .\\proj1\\"+sv
print(temp)

运行改代码后,成功导出了以下字符串 

code  . -d .\proj1\main.c .\proj2\main.c&code  . -d .\proj1\module1.c .\proj2\module1.c&code  . -d .\proj1\module2.c .\proj2\module2.c&code  . -d .\proj1\module3.c .\proj2\module3.c

在compare文件夹下创建新文本文档,重命名,将txt改为bat,右键编辑,将python运行后输出的字符串复制到其中,并保存。

(注:“&”可以一次性指向这些命令,如果没有“&”,只执行第一句。)

保存后双击该bat文件即可,vscode会自动打开所有需要比较的代码文件。

 

 如果需要源文件进行学习的,可以点击下方链接来进行调试。

 点击前往下载(1C币)

如果帮到你的话,希望能给作者点点赞,有问题可以在评论区提问,看到会及时回复。 

 

  • 8
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值