前言
最近因为工作原因,需要找出一个工程里面修改过的地方。VSCode里自带代码比较功能,可以高亮代码不同的地方。然而手动一个个打开文件来比较显然非常的繁琐,在网上检索后发现并没有相关的方法。因此,为了解决这个问题,在查阅了官方文档后,决定分享这个方法。
查阅文档
在The Visual Studio Code command-line interface中,有-d指令,可以打开差异编辑器(代码比较),需要输入两个文件夹的参数。
ArgumentDescription
-h
or
--help
Print usage
-v
or
--version
Print VS Code version (for example, 1.22.2), GitHub commit ID, and architecture (for example, x64).
-n
or
--new-window
Opens a new session of VS Code instead of restoring the previous session (default).
-r
or
--reuse-window
Forces opening a file or folder in the last active window.
-g
or
--goto
When 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
--wait
Wait 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币)
如果帮到你的话,希望能给作者点点赞,有问题可以在评论区提问,看到会及时回复。
版权归原作者 Dinephy 所有, 如有侵权,请联系我们删除。