前言

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

查阅文档

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

Argument Description
-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币)

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

VSCode批量代码比较相关推荐

  1. vscode格式化代码无效--可能的解决方法

    vscode格式化代码无效--可能的解决方法 参考文章: (1)vscode格式化代码无效--可能的解决方法 (2)https://www.cnblogs.com/code1992/p/8657985 ...

  2. vscode设置代码编辑时组合键代替方向键移动光标

    在使用vscode编写代码的时候,经常需要移动光标来修改或者插入,这个时候我们通常会选择使用键盘上的方向键,但是从键盘的主输入区到方向键有一定的距离,在输入很快的时候,右手移动这一点距离也是无法忍受的 ...

  3. LEGO EV3 中执行 VSCode Python 代码过程分析

    镜像为 ev3dev. 通过 SSH 连接 LEGO EV3 设备,默认密码为 maker: $ ssh robot@ev3dev.local Password: Linux ev3dev 4.14. ...

  4. vscode统计代码行数,前端开发配置、快捷键使用

    1.统计代码行数 使用场景是项目年终统计行数. 实现:在需要统计得文件夹右键"在文件夹中查找" ,后输入筛选得正则表达式 ^b*[^:b#/]+.*$ (注意右边小图标都点亮) 这 ...

  5. VSCode + git 代码托管【当前没有源代码管理提供程序注册】(没有‘+’加法号) - 解决篇

    bug截图如下:VSCode无法进行git托管,git扩展程序未启动? 软件提示[当前没有源代码管理提供程序注册] (没有'+'加法号),如下图1所示 上述截图1,表示VSCode的git的本地配置失 ...

  6. VSCode + git代码托管:入门到实战

    VSCode + git代码托管:入门到实战 使用VSCode代码开发工具(IDE开发工具的一种),该代码开发软件功能,常用举例如下: 可以实现代码开发: 代码提示等等插件安装: Git代码托管:修改 ...

  7. vscode创建代码截图_如何在VSCode中创建代码配置文件

    vscode创建代码截图 This post piggybacks off of the work done by @avanslaars who is a fellow instructor at ...

  8. VSCode自定义代码片段1——vue主模板

    VSCode自定义代码片段(vue主模板) {// vue// 1,自定义用户代码片段:VSCode =>左下角设置 =>用户代码片段 => 自定义片段名称 =>编辑用户片段 ...

  9. c语言 vscode代码自动补全_借助C/C++ Extension实现VSCode C++代码补全

    在VSCode C/C++ IntelliSense领域,目前有两位实力相当的选手,它们分别是基于微软闭源技术的C/C++ Extension和开源方案clangd.根据我目前体验,它俩的特性可以总结 ...

  10. VSCode 设置代码自动保存!!!

    VSCode 设置代码自动保存!!! 一.打开VSCode界面 二.搜索框内输入 auto save 三.默认是off不保存 四.afterDelay -将在配置的 "#files.auto ...

最新文章

  1. NativeXml (1):下载、安装、测试
  2. 【Java爬虫】我的第一个爬虫 -- 简单抓取网页源代码
  3. ABAP开发环境终于支持以驼峰命名法自动格式化ABAP变量名了
  4. 深入理解equals和hashCode关系和区别
  5. 简单好用的sshfs -- 通过ssh映射远程路径(转)
  6. golang 学习记录
  7. elementui 表头错位解决方法
  8. 【笔记】Yale博弈论第一课
  9. 深度Q学习——从入门到实践
  10. 外接显示器无信号的解决方案win10 笔记本
  11. iconv()和mb_conver_encoding()字符编码转换函数
  12. 通过bitset库实现sha256
  13. 玄幻:开局选择瑶池,我只想默默签到!(三)
  14. 每日一佳——Information-Theoretic Metric Learning(Jason V. Davis et al. ,ICML,2007)
  15. CSS 背景图像 background-image属性
  16. 关键决策——策略模式
  17. mysql5.7.25安装包,Mysql5.7.25在windows下安装
  18. MSP430如何使用energia(TI公司的arduino简易编译器)
  19. Java 实现HTTP请求的四种方式总结
  20. java 羽化_JAVA10来了 - 羽化布凉的个人空间 - OSCHINA - 中文开源技术交流社区

热门文章

  1. 花呗的24期利息计算器_花呗分期利息怎么算(附计算公式大全)
  2. MMKV_MMKV—强大的存储工具
  3. 优麒麟桌面闪烁_优麒麟 19.10 正式发布—百尺竿头,更进一步
  4. Thumb指令集与ARM指令集的区别
  5. vs2015卸载指南
  6. 线性代数基本公式结论简要总结(2)
  7. 微信H5扫码支付 java
  8. axure原型设计:手机版可视化图表
  9. Scala下载和配置
  10. vdbench安装及使用