VSCode批量代码比较
前言
最近因为工作原因,需要找出一个工程里面修改过的地方。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批量代码比较相关推荐
- vscode格式化代码无效--可能的解决方法
vscode格式化代码无效--可能的解决方法 参考文章: (1)vscode格式化代码无效--可能的解决方法 (2)https://www.cnblogs.com/code1992/p/8657985 ...
- vscode设置代码编辑时组合键代替方向键移动光标
在使用vscode编写代码的时候,经常需要移动光标来修改或者插入,这个时候我们通常会选择使用键盘上的方向键,但是从键盘的主输入区到方向键有一定的距离,在输入很快的时候,右手移动这一点距离也是无法忍受的 ...
- LEGO EV3 中执行 VSCode Python 代码过程分析
镜像为 ev3dev. 通过 SSH 连接 LEGO EV3 设备,默认密码为 maker: $ ssh robot@ev3dev.local Password: Linux ev3dev 4.14. ...
- vscode统计代码行数,前端开发配置、快捷键使用
1.统计代码行数 使用场景是项目年终统计行数. 实现:在需要统计得文件夹右键"在文件夹中查找" ,后输入筛选得正则表达式 ^b*[^:b#/]+.*$ (注意右边小图标都点亮) 这 ...
- VSCode + git 代码托管【当前没有源代码管理提供程序注册】(没有‘+’加法号) - 解决篇
bug截图如下:VSCode无法进行git托管,git扩展程序未启动? 软件提示[当前没有源代码管理提供程序注册] (没有'+'加法号),如下图1所示 上述截图1,表示VSCode的git的本地配置失 ...
- VSCode + git代码托管:入门到实战
VSCode + git代码托管:入门到实战 使用VSCode代码开发工具(IDE开发工具的一种),该代码开发软件功能,常用举例如下: 可以实现代码开发: 代码提示等等插件安装: Git代码托管:修改 ...
- vscode创建代码截图_如何在VSCode中创建代码配置文件
vscode创建代码截图 This post piggybacks off of the work done by @avanslaars who is a fellow instructor at ...
- VSCode自定义代码片段1——vue主模板
VSCode自定义代码片段(vue主模板) {// vue// 1,自定义用户代码片段:VSCode =>左下角设置 =>用户代码片段 => 自定义片段名称 =>编辑用户片段 ...
- c语言 vscode代码自动补全_借助C/C++ Extension实现VSCode C++代码补全
在VSCode C/C++ IntelliSense领域,目前有两位实力相当的选手,它们分别是基于微软闭源技术的C/C++ Extension和开源方案clangd.根据我目前体验,它俩的特性可以总结 ...
- VSCode 设置代码自动保存!!!
VSCode 设置代码自动保存!!! 一.打开VSCode界面 二.搜索框内输入 auto save 三.默认是off不保存 四.afterDelay -将在配置的 "#files.auto ...
最新文章
- NativeXml (1):下载、安装、测试
- 【Java爬虫】我的第一个爬虫 -- 简单抓取网页源代码
- ABAP开发环境终于支持以驼峰命名法自动格式化ABAP变量名了
- 深入理解equals和hashCode关系和区别
- 简单好用的sshfs -- 通过ssh映射远程路径(转)
- golang 学习记录
- elementui 表头错位解决方法
- 【笔记】Yale博弈论第一课
- 深度Q学习——从入门到实践
- 外接显示器无信号的解决方案win10 笔记本
- iconv()和mb_conver_encoding()字符编码转换函数
- 通过bitset库实现sha256
- 玄幻:开局选择瑶池,我只想默默签到!(三)
- 每日一佳——Information-Theoretic Metric Learning(Jason V. Davis et al. ,ICML,2007)
- CSS 背景图像 background-image属性
- 关键决策——策略模式
- mysql5.7.25安装包,Mysql5.7.25在windows下安装
- MSP430如何使用energia(TI公司的arduino简易编译器)
- Java 实现HTTP请求的四种方式总结
- java 羽化_JAVA10来了 - 羽化布凉的个人空间 - OSCHINA - 中文开源技术交流社区