← Back to Support

Moving from Plain text or CSV file to KeyVi

This is the general path that works for any source: a text file with one macro per line. KeyVi imports both formats below.

Tab-separated text

Each line is the shortcut, one Tab character, then the full text. A shortcut is 1 to 32 printable ASCII characters with no spaces and no Vietnamese letters (shortcuts match the keys as typed: dc, not đc). The expansion can be up to 4,000 characters.

vn	Việt Nam
dc	được
tphcm	Thành phố Hồ Chí Minh

Two-column CSV

vn,Việt Nam
dc,được
"cam on","Cảm ơn bạn rất nhiều, hẹn gặp lại"

UTF-8 encoding. Wrap text that contains commas in double quotes.

KeyVi's own settings export

In Settings > About & Support you can export all settings to one JSON file, UTF-8, named like keyvi-settings-YYYYMMDD.json. The kind field is always settings-export; schemaVersion (an integer) is the format version; writtenBy is the app version that wrote the file; exportedAt is the export time (ISO 8601, UTC). Then come settings, appModes (per-app modes), ruleOverrides (compatibility rules you set yourself) and macros (shortcut trigger, text expansion, case following adaptCase, on or off enabled). When exporting you can untick macros and per-app modes, because macros may contain private text; an unticked part is left out of the file. When you import a file written by a newer version, KeyVi imports the fields it understands and lists the ones it skipped.

{
  "kind": "settings-export",
  "schemaVersion": 1,
  "writtenBy": "0.1.0",
  "exportedAt": "2026-11-13T09:00:00Z",
  "settings": { },
  "appModes": { },
  "ruleOverrides": [ ],
  "macros": [
    { "id": "3F2504E0-4F89-11D3-9A0C-0305E82C3301", "trigger": "vn", "expansion": "Việt Nam", "adaptCase": true, "enabled": true }
  ]
}

Import into KeyVi

  1. Open KeyVi, go to Settings > Macros > Import from file... (or choose Choose file... at the import step during setup).
  2. Read the preview: counts of new, duplicate and invalid rows. For duplicates, choose to keep yours or use the imported one.
  3. Invalid rows are skipped with a reason; one bad row never ruins the whole import.