{"id":25696665,"url":"https://github.com/tizee/unicode.vim","last_synced_at":"2026-02-17T06:01:34.909Z","repository":{"id":106361456,"uuid":"386949843","full_name":"tizee/unicode.vim","owner":"tizee","description":"Convert unicode value string into unicode character.","archived":false,"fork":false,"pushed_at":"2025-07-21T11:46:59.000Z","size":183,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-09T08:07:50.621Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Vim Script","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tizee.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-07-17T13:49:14.000Z","updated_at":"2025-07-21T11:47:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"7c6d2e49-bcd1-4aaa-ae72-7d35f5eb988e","html_url":"https://github.com/tizee/unicode.vim","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/tizee/unicode.vim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tizee%2Funicode.vim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tizee%2Funicode.vim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tizee%2Funicode.vim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tizee%2Funicode.vim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tizee","download_url":"https://codeload.github.com/tizee/unicode.vim/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tizee%2Funicode.vim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29535934,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-17T05:00:25.817Z","status":"ssl_error","status_checked_at":"2026-02-17T04:57:16.126Z","response_time":100,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-25T01:54:57.467Z","updated_at":"2026-02-17T06:01:34.884Z","avatar_url":"https://github.com/tizee.png","language":"Vim Script","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Unicode.vim\n\nA comprehensive Vim plugin for converting between Unicode characters and their various string representations. Supports multiple Unicode formats including emoji conversion.\n\n**Version:** 1.0.0  \n**Author:** tizee  \n**Homepage:** https://github.com/tizee/unicode.vim\n\n## Features\n\n- **Bidirectional conversion**: Unicode strings ↔ actual characters\n- **Multiple Unicode formats**: `\\u1F600`, `\\U0001F600`, `U+1F600`, `\u0026#x1F600;`, `\\x{1F600}`, `0x1F600`\n- **Emoji support**: Convert Unicode strings to actual emoji characters 😀👍❤️\n- **Visual selection support**: Works with selected text\n- **API functions**: Reusable autoload functions for other plugins\n- **Comprehensive documentation**: Full Vim help system integration\n\n![usage](https://user-images.githubusercontent.com/33030965/129754099-a8da88aa-c63d-4e15-b440-5f5e3528ffbc.gif)\n\n## Installation\n\n### Using vim-plug\n```vim\nPlug 'tizee/unicode.vim'\n```\n\n### Using Vundle\n```vim\nPlugin 'tizee/unicode.vim'\n```\n\n### Manual installation\n```bash\ngit clone https://github.com/tizee/unicode.vim ~/.vim/bundle/unicode.vim\n```\n\nAdd to your runtime path in `.vimrc`:\n```vim\nset runtimepath^=~/.vim/bundle/unicode.vim\n```\n\nAfter installation, generate help tags:\n```vim\n:helptags ~/.vim/doc\n```\n\n## Quick Start\n\n### Convert Unicode strings to characters\n\n```vim\n\" Place cursor on Unicode string and run:\n:Unicode\n\n\" Or specify directly:\n:Unicode \\u1F600    \" → 😀\n:Unicode U+1F44D    \" → 👍  \n:Unicode \u0026#x2764;   \" → ❤️\n```\n\n### Convert characters to Unicode\n\n```vim\n\" Place cursor on character and run:\n:GetUnicode\n\n\" Examples:\n:GetUnicode 😀      \" → 0x1F600\n:GetUnicode Hello   \" → 0x48 0x65 0x6C 0x6C 0x6F\n```\n\n## Commands\n\n| Command | Description | Example |\n|---------|-------------|---------|\n| `:Unicode [string]` | Convert Unicode string to character | `:Unicode \\u1F600` → 😀 |\n| `:GetUnicode [string]` | Convert character to hex representation | `:GetUnicode 😀` → 0x1F600 |\n\nBoth commands work with visual selections when no argument is provided.\n\n## Supported Unicode Formats\n\n| Format | Example | Description |\n|--------|---------|-------------|\n| `\\u1234` | `\\u1F600` | JavaScript/JSON style (4 hex digits) |\n| `\\U12345678` | `\\U0001F600` | 8-digit Unicode |\n| `U+1234` | `U+1F600` | Unicode standard notation |\n| `\u0026#x1234;` | `\u0026#x1F600;` | HTML entity |\n| `\\x{1234}` | `\\x{1F600}` | Perl/regex style |\n| `0x1234` | `0x1F600` | Hexadecimal with prefix |\n| `1234` | `1F600` | Plain hexadecimal |\n\n## API Functions\n\nThe plugin provides autoload functions for use in other plugins:\n\n```vim\n\" Parse Unicode format and extract hex code\nlet [valid, hex] = unicode#parse_formats('\\u1F600')\n\n\" Convert hex to character  \nlet char = unicode#hex_to_char('1F600')\n\n\" Convert character to hex codes\nlet hex_list = unicode#char_to_hex('Hello')\n\n\" Validate Unicode value\nlet [valid, clean_hex] = unicode#is_valid_value('0x1F600')\n```\n\nSee `:help unicode-functions` for complete API documentation.\n\n## Configuration\n\n```vim\n\" Enable debug output (default: 0)\nlet g:debug_unicode_vim = 1\n\n\" Set Unicode range (defaults shown)\nlet g:min_unicode = 0x0\nlet g:max_unicode = 0x10FFFF\n\n\" Disable plugin loading\nlet g:loaded_unicode_vim = 1\n\n\" Check plugin version (read-only, set automatically)\necho g:unicode_vim_version  \" 1.0.0\n```\n\n## Documentation\n\nComplete documentation is available through Vim's help system:\n\n```vim\n:help unicode           \" Main help\n:help :Unicode         \" Unicode command\n:help :GetUnicode      \" GetUnicode command  \n:help unicode-functions \" API functions\n:help unicode-examples  \" Usage examples\n```\n\n## Development\n\n### Project Structure\n\n```\nunicode.vim/\n├── autoload/unicode.vim    # Core functionality (reusable API)\n├── plugin/unicode.vim      # User commands and UI logic\n├── doc/unicode.txt         # Vim help documentation\n├── doc/tags               # Generated help tags\n├── test/                  # Unit test suite\n│   ├── test_unicode.vim\n│   └── README.md\n├── run_tests.sh           # Command-line test runner\n├── update_doc.sh          # Documentation helper\n├── release.sh             # Automated release script\n├── version.sh             # Version information script\n└── README.md\n```\n\n### Running Tests\n\nExecute the comprehensive test suite:\n\n```bash\n# Run all unit tests (57 test cases)\n./run_tests.sh\n\n# Expected output:\n# Total tests: 57\n# Passed: 57\n# Failed: 0\n# 🎉 All tests passed!\n```\n\nThe test suite runs in a clean Vim environment and covers:\n- All supported Unicode formats\n- Edge cases and boundary conditions  \n- Error handling\n- API function validation\n\n### Updating Documentation\n\nAfter modifying `doc/unicode.txt`:\n\n```bash\n# Regenerate help tags\n./update_doc.sh\n\n# Or manually:\nvim -u NONE -c \"helptags doc/\" -c \"quit\"\n```\n\n### Development Workflow\n\n1. **Make changes** to plugin code\n2. **Run tests** with `./run_tests.sh` \n3. **Update documentation** if needed\n4. **Regenerate tags** with `./update_doc.sh`\n5. **Test manually** in Vim: `:help unicode`\n\n### Release Workflow\n\nFor creating new releases:\n\n```bash\n# Check current version and status\n./version.sh\n\n# Create git tag with current commit message\n./release.sh\n\n# Preview what the release script would do (dry run)\n./release.sh --dry-run\n```\n\nThe release script will:\n- Extract version from plugin file (`g:unicode_vim_version`)\n- Use current git commit message as release notes\n- Create annotated git tag (e.g., `v1.0.0`)\n- Optionally push tag to remote repository\n\n### Architecture\n\n- **Plugin file** (`plugin/unicode.vim`): Defines user commands, handles UI interactions\n- **Autoload file** (`autoload/unicode.vim`): Core functions, reusable API for other plugins  \n- **Documentation** (`doc/unicode.txt`): Complete help system integration\n- **Tests** (`test/`): Comprehensive unit test coverage\n\n### Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Run the test suite: `./run_tests.sh`\n5. Update documentation if needed\n6. Submit a pull request\n\n### Testing Your Changes\n\n```bash\n# Test core functionality\n./run_tests.sh\n\n# Test documentation  \n./update_doc.sh\n\n# Check version and git status\n./version.sh\n\n# Manual testing in clean environment\nvim -u NONE -c 'set runtimepath+=.' -c 'help unicode'\n```\n\n### Release Management\n\n```bash\n# Check current status before release\n./version.sh\n\n# Preview release without making changes\n./release.sh --dry-run\n\n# Create new release with current commit message\n./release.sh\n\n# The release script will:\n# 1. Read version from plugin file\n# 2. Check for uncommitted changes\n# 3. Create annotated git tag using commit message\n# 4. Optionally push to remote\n```\n\n## Examples\n\n### Basic Usage\n```vim\n\" Convert various Unicode formats\n:Unicode \\u1F600    \" 😀\n:Unicode U+1F44D    \" 👍\n:Unicode \u0026#x2764;   \" ❤️\n\n\" Get hex codes\n:GetUnicode 🚀     \" 0x1F680\n```\n\n### Batch Processing\n```vim\n\" Replace all \\u sequences in buffer with actual characters\n:%s/\\\\u\\(\\x\\{4\\}\\)/\\=unicode#hex_to_char(submatch(1))/g\n```\n\n### Using in Scripts\n```vim\nfunction! ConvertUnicodeInLine()\n    let line = getline('.')\n    let [valid, hex] = unicode#parse_formats(line)\n    if valid\n        let char = unicode#hex_to_char(hex)\n        call setline('.', char)\n    endif\nendfunction\n```\n\n## Requirements\n\n- Vim 7.0 or higher\n- Terminal with Unicode support for proper emoji display\n\n## License\n\nMIT License\n\n---\n\n**Completed Development Tasks:**\n- ✅ Enhanced Unicode format support (`\\u`, `\\U`, `U+`, `\u0026#x`, `\\x{}`)\n- ✅ Comprehensive unit test suite (57 tests)\n- ✅ Command-line test runner with clean environment\n- ✅ Refactored architecture (plugin + autoload)\n- ✅ Complete Vim documentation system\n- ✅ API functions for plugin reusability\n- ✅ Error handling and user feedback\n- ✅ Development tooling and automation","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftizee%2Funicode.vim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftizee%2Funicode.vim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftizee%2Funicode.vim/lists"}