Compare Helper
Compare files or folders via configured external tools.
Features
Extension adds a new submenu Compare (External)
-
CompareCompares selected items with the configured default tool.
-
Compare With...Shows a tool selection GUI and compares selected items with the chosen tool. Tools are filtered by item's kind.
Remote Development support
-
Remote
TextfilesComparison is possible, changes made by external tools are synced back with
editor. -
Remote
ImagefilesComparison is possible, but changes are ignored. Further releases will feature an option to transfer changed images back to the original remote location.
-
Remote
FoldersComparison is not possible.
Requirements
Extension is fully dependent upon installed external tools. Configure them as needed in the Extension's Settings.
Extension Settings
This extension contributes the following settings:
-
compareHelper.defaultExternalTools: default tools to useFor example:
"compareHelper.defaultExternalTools": { "folders": "FreeFileSync", "images": "p4merge", "text": "bbdiff" }Property Type Optional Default Description folders string ✔ '' Default tool for folders images string ✔ '' Default tool for images text string ✔ '' Default tool for text Use the value of the tool's
nameproperty. -
compareHelper.externalTools: external tools configurationFor example:
"compareHelper.externalTools": [ { "name": "bbdiff", "path": "bbdiff", "args": [ "--text-files-only", "${FOLDER_ITEM_1}", "${FOLDER_ITEM_2}" ], "compares": [ "text", "folders" ] }, { "name": "p4merge", "path": "/Applications/p4merge.app/Contents/MacOS/p4merge", "args": [ "${FOLDER_ITEM_1}", // base / left "${FOLDER_ITEM_2}", // left / right "${FOLDER_ITEM_3}", // right "${FOLDER_ITEM_4}" // merge ], "compares": [ "text", "images" ] } ]Property Type Optional Default Description name string Used in GUI and as ID for default settings. Must be a unique value path string Absolute or relative path to the executable args (string | args)[] ✔ SPECIAL See Args bellow compares string[] ✔ ['folders', 'images', 'text'] Specifies what kind of items a tool can handle. Allowed values: "folders", "images", "text" Args
When args array is empty or missing all selected items are used as args, one item per argument.
The following template
${FOLDER_ITEM_n}where n ≥ 1 can be used to refer to the selected item. Items are in click order.An entire arg is ignored when template refers to an item out of range.
For example:
[ "${FOLDER_ITEM_1}", // base / left "${FOLDER_ITEM_2}", // left / right "${FOLDER_ITEM_3}", // right "${FOLDER_ITEM_4}" // merge ]With only two selected items args will be
["path/to/item/1", "path/to/item/2"]Nested Args
Arguments could be nested. An entire nested arg and all its children is ignored when template refers to an item out of range.
For example:
[ "${FOLDER_ITEM_1}", // base / left "${FOLDER_ITEM_2}", // left / right "${FOLDER_ITEM_3}", // right [ "--out", "${FOLDER_ITEM_4}", // Output file [ "-L", "Label for Base", "-L", "Label for Left", "-L", "Label for Right", ] ] ]With only two selected items args will be
["path/to/item/1", "path/to/item/2"]With four selected items args will be flatten to:
[ "path/to/item/1", "path/to/item/2", "path/to/item/3", "--out", "path/to/item/4", "-L", "Label for Base", "-L", "Label for Left", "-L", "Label for Right", ]
Example configurations:
Known Issues
-
Keybindings
Triggering
Compare,Compare With...commands via keybindings doesn't work.Due to API limitation, current selection in
Explorerview is passed to command only if such command is triggered via context menu. -
Remote Development
-
Remote
ImagefilesComparison is possible, but changes are ignored. Further releases will feature an option to transfer changed images back to the original remote location.
-
Remote
FoldersComparison is not possible.
-
Latest Version
1.1.1
Fixed
- Compatibility issue with snap version of VS Code 1.78.0
See CHANGELOG.md for complete release notes.
Acknowledgements
- Fonts by Font Awesome Free




