如何配置git diff/git difftool/vimdiff仅比较COBOL程序1-72列?
解决Git对比COBOL程序仅查看1-72列的问题
一、直接用Git Diff结合文本截断
如果不需要打开编辑器,直接在终端输出对比结果,可通过sed截断每行前72列后再对比:
- 对比版本库中两个提交的COBOL程序:
git diff <commit哈希1> <commit哈希2> -- path/to/your/program.cbl | sed 's/\(.\{72\}\).*/\1/' - 对比本地Dev和Prod环境的两个文件:
diff <(sed 's/.\{72\}$//' dev/program.cbl) <(sed 's/.\{72\}$//' prod/program.cbl)
sed命令会保留每行前72个字符,截断后续内容,确保对比仅聚焦在目标区间。
二、临时配置VimDiff对比
找不到.vimrc或不想修改永久配置时,可直接带参数启动VimDiff:
vimdiff -c '%s/\(.\{72\}\).*/\1/g' dev/program.cbl prod/program.cbl
启动后Vim会自动将两个文件的所有行截断到72列,再执行对比。如果已经进入VimDiff界面,也可手动执行命令:
:%s/\(.\{72\}\).*/\1/g
回车确认后,即可完成内容截断并刷新对比结果。
三、永久配置VimDiff自动处理COBOL对比
如果经常需要做这类对比,可手动在用户主目录下创建.vimrc文件,添加以下配置:
" 进入Diff模式时自动截断每行到72列 autocmd BufEnter * if &diff | %s/\(.\{72\}\).*/\1/g | endif
之后启动vimdiff dev/program.cbl prod/program.cbl时,会自动处理内容并聚焦1-72列对比。
四、配置Git DiffTool使用自定义VimDiff
修改Git配置文件(~/.gitconfig),添加自定义diff工具:
[difftool "vimdiff72"] cmd = vimdiff -c '%s/\\(.\\{72\\}\\).*/\\1/g' "$LOCAL" "$REMOTE"
之后使用以下命令启动对比:
git difftool --tool=vimdiff72 <commit哈希1> <commit哈希2> -- path/to/program.cbl
内容的提问来源于stack exchange,提问作者RedGoldPhoenix
相关产品推荐
相关产品推荐

