1

我想使用 codemirror(不是合并工具)实现差异模式。类似:git diff。我使用 Codemirror 官方差异模式,但是,当用户添加或更改某些内容时,无法获取标记器(+、-)。

4

1 回答 1

0

CodeMirror Diff 模式仅根据其格式突出显示一行(例如,如果一行以“+”开头,则以绿色突出显示,如果以“-”开头,则以红色突出显示)。您需要自己生成差异文本。您可以使用几个库,例如jsdiff

您可以像这样获得 2 个文本之间的差异:

import * as Diff from 'diff';

var text1=`
line1
line2
line3
`;

var text2=`
line0

line3

line4
line5
`;

var diff = Diff.createTwoFilesPatch('old', 'new', text1, text2, { context: 1 });
console.log('diff', diff);

它将产生以下差异:

diff ===================================================================
--- old [object Object]
+++ new
@@ -1,4 +1,7 @@
 
-line1
-line2
+line0
+
 line3
+
+line4
+line5

之后,您可以将此文本插入 CodeMirror。

于 2021-07-07T16:54:05.447 回答