icdiff - CUIでもサイドバイサイドの差分表示
CLIにおけるdiffコマンドは行の削除や追加が縦に並ぶ形になっています。慣れれば理解できないことはないと思いますが、GUIやWebベースの差分ツールでは一般的にサイドバイサイドの差分表示が使われます。この方が人にとっては分かりやすいのでしょう。 そんな差分表示をCLIでも可能にするのがicdiffです。
icdiffの使い方
例えば基本的な表示はこちらです。
$ git diff
diff --git a/app/assets/javascripts/form_builder.js b/app/assets/javascripts/form_builder.js
index 48f486e..689209b 100755
--- a/app/assets/javascripts/form_builder.js
+++ b/app/assets/javascripts/form_builder.js
@@ -363,7 +363,7 @@ $(function() {
}
});
- select.attr('name', form_builder.cleanName($(this.prefix + 'name').val()) + '[]');
+ select.attr('name', form_builder.cleanName($(this.prefix + 'name').val()));
label.text($(this.prefix + 'label').val());
select.html(list_options);
}
これをicdiffを使うようにしてみます。
$ git difftool --extcmd icdiff
Viewing (1/8): 'app/assets/javascripts/form_builder.js'
Launch 'icdiff' [Y/n]: Y
/var/folders/vn/rnq2qddx7cj6ljnr7lnjgw4m0000gn/T//jLmPth_form_builder.js app/assets/javascripts/form_builder.js
list_options += "<option value=\"" + list_options += "<option value=\"" +
form_builder.cleanName(val) + "\">" + val + "</option>\n"; form_builder.cleanName(val) + "\">" + val + "\n";
} }
} }
}); });
select.attr('name', form_builder.cleanName($(thi select.attr('name', form_builder.cleanName($(thi
s.prefix + 'name').val()) + '[]'); s.prefix + 'name').val()));
label.text($(this.prefix + 'label').val()); label.text($(this.prefix + 'label').val());
select.html(list_options); select.html(list_options);
} }
}, },
このように左右にコードを並べてその違いを確認できるようになります。カラー表示もされますので、一目でどこが違うのか分かるようになります。GitやSubversionはもちろん、通常のファイル同士の比較でも使えますので普段遣いできるツールです。
icdiffはPython製、GPLのオープンソース・ソフトウェアです。
icdiff: side-by-side highlighted command line diffs jeffkaufman/icdiff