A VS Code extension for working with Unicode Separated Values (USV) files with ease. Convert between CSV and USV formats, with real-time syntax highlighting and intelligent file management.
- Clean syntax highlighting for USV files
- Support for
.usv,.usx, and.ussfile extensions - Real-time highlighting as you edit
- Convert CSV ↔ USV with a single command
- Create conversions in new files or replace current file
- Handles quoted fields, escaped quotes, and edge cases
- Robust CSV parser supporting RFC 4180 standard
- Smart error detection and helpful error messages
- Real-time file statistics (rows × columns)
- One-click conversion from status bar
- Automatic updates as you edit
- Quick access without opening command palette
- Quick save with correct file extension (
.usvor.csv) - Suggested filename based on current file
- File extension filters in save dialog
- Workspace-aware file operations
- View USV files as formatted tables in a side panel
- Column-based color coding for easy data tracking
- Real-time statistics (rows, columns, file size)
- Professional table rendering with hover effects
- Detailed error messages with helpful hints
- Validation for empty files and malformed data
- Line-by-line quote mismatch detection
- Clear feedback on conversion success/failure
- Open VS Code
- Go to Extensions (
Ctrl+Shift+X/Cmd+Shift+X) - Search for "UniSeparate"
- Click Install
- Open a CSV file in VS Code
- Open Command Palette (
Ctrl+Shift+P/Cmd+Shift+P) - Select "Convert CSV to USV"
- Choose one of:
- "Convert CSV to USV" - overwrites the current file
- "Convert CSV to USV (New File)" - creates a new USV file
Quick method: Click the statistics display in the status bar (bottom-right) for instant conversion to new file.
Same process in reverse:
- Open a USV file
- Run "Convert USV to CSV" or "Convert USV to CSV (New File)"
- Open a USV file
- Right-click → "Open USV Preview"
- A new panel appears showing the data as a formatted table
- Each column is color-coded for easy visual tracking
- Run "Save As USV File" or "Save As CSV File" from Command Palette
- A save dialog appears with the correct extension suggestion
- Choose location and save
All conversion commands are available via right-click context menu in the editor:
- Right-click in a CSV file → See CSV-to-USV options
- Right-click in a USV file → See USV-to-CSV options
| Command | Description |
|---|---|
| Convert CSV to USV | Replace current CSV file with USV format |
| Convert CSV to USV (New File) | Create new USV file from current CSV |
| Convert USV to CSV | Replace current USV file with CSV format |
| Convert USV to CSV (New File) | Create new CSV file from current USV |
| Save As USV File | Save current file as .usv with extension suggestion |
| Save As CSV File | Save current file as .csv with extension suggestion |
| Open USV Preview | Display USV file as a formatted table in side panel |
Access commands via:
- Command Palette:
Ctrl+Shift+P/Cmd+Shift+P→ type command name - Right-click context menu in editor
- Status bar: Click statistics display
USV is a modern, hierarchical data format that solves CSV limitations:
- Visible Separators: Uses printable Unicode characters (␟ ␞ ␝ ␜) instead of invisible control characters
- Hierarchical Structure: Supports 4 levels of data organization (units, records, groups, files)
- Unambiguous: No escaping needed for commas, quotes, or newlines within data
- Standardized: Pursuing IETF RFC and IANA registration
- Human-Readable: Separators are visible in text editors
| Character | Name | Unicode | Purpose |
|---|---|---|---|
| ␟ | Unit Separator | U+241F | Separates fields/cells |
| ␞ | Record Separator | U+241E | Separates rows/records |
| ␝ | Group Separator | U+241D | Separates tables/groups |
| ␜ | File Separator | U+241C | Separates files/documents |
- GitHub - SixArm/usv - Official USV project
- IETF Draft - Unicode Separated Values - RFC proposal
Name,Age,City
Alice,28,New York
Bob,35,Los Angeles
Charlie,42,Chicago
Name␟Age␟City␞Alice␟28␟New York␞Bob␟35␟Los Angeles␞Charlie␟42␟Chicago
Name,Address,Phone
Alice,"123 Main St, Apt 4",555-0123
Bob,"456 Oak Ave, Suite B",555-0456
Name␟Address␟Phone␞Alice␟123 Main St, Apt 4␟555-0123␞Bob␟456 Oak Ave, Suite B␟555-0456
- Ensure the file actually contains USV separator characters (␟ ␞ ␝ ␜)
- If you pasted from plain text, the separators may not have copied correctly
- Check that you're opening a genuine USV file
- Your CSV has a quotation mark (
") that isn't properly closed - Check the specified line number for mismatched or unescaped quotes
- Verify all quoted fields have matching opening and closing quotes
- The highlighting is working; colors depend on your VS Code theme
- Try switching to a different theme to see the effect (Settings → Color Theme)
- Some themes don't define colors for all scope names
- Verify your input file is valid CSV or USV
- Try the "New File" option to see results without overwriting
- Check the status bar statistics to verify row/column counts
- Conversions modify the file in the editor but don't auto-save
- Use
Ctrl+S/Cmd+Sor "Save As" commands to persist changes - Enable "Auto Save" in VS Code settings if desired
- Ensure the USV file has valid data with separators
- The file must contain at least one record separator (␞)
- Check the browser console (F12) for JavaScript errors
Contributions are welcome! This extension is part of the USV ecosystem and aligns with the SixArm/usv project goals.
- Fork the repository on GitHub
- Create a branch for your feature (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
# Clone the repository
git clone https://github.com/lucamauri/UniSeparate.git
cd uniseparate
# Install dependencies
npm install
# Run in debug mode
npm run compile
# Then press F5 in VS Code- Field-based syntax coloring in editor
- Support for Group (␝) and File (␜) separators in conversions
- Interactive preview of conversions before applying
- Batch file conversion utilities
- Performance optimization for large files
- Additional file format support (JSON, XML, Parquet)
- Internationalization (i18n) support
- Additional test coverage
- Documentation improvements
Found an issue? Report it on GitHub
Please include:
- VS Code version
- Extension version
- Steps to reproduce
- Example file (if applicable)
- Expected vs. actual behavior
This project is licensed under the GNU General Public License v2.0 or later (GPL-2.0-or-later).
This means:
- You are free to use, modify, and distribute this software
- Any modifications must also be released under GPL-2.0-or-later
- The source code must be made available to users
- See the LICENSE file for full details
For more information about GPL-2.0, visit: GNU GPL v2.0
- SixArm/usv - USV format specification and reference implementation
- VS Code Extension API - Excellent documentation and examples
- USV Community - For standardizing this powerful data format
- Contributors - Thank you for helping improve UniSeparate!
| Component | Status |
|---|---|
| CSV ↔ USV Conversion | ✅ Complete |
| Syntax Highlighting | ✅ Complete |
| Status Bar Integration | ✅ Complete |
| Command Palette Integration | ✅ Complete |
| Context Menu | ✅ Complete |
| USV Preview (Table View) | ✅ Complete |
| Error Handling | ✅ Complete |
| Field-based Syntax Coloring | 🔄 In Progress |
| Group/File Separator Support | 📋 Planned |
| Batch Conversion | 📋 Planned |
| Settings/Preferences | 📋 Planned |
- GitHub Issues: Report bugs or request features
- Discussions: Join community discussions
- Documentation: Comprehensive help in this README
- USV Project: Visit SixArm/usv for format details
Made with ❤️ for the USV community
UniSeparate - Making hierarchical data editing simple, visible, and standardized.