{"id":16905961,"url":"https://github.com/hopding/vm.zsh","last_synced_at":"2025-03-20T16:23:56.290Z","repository":{"id":49125116,"uuid":"380864385","full_name":"Hopding/vm.zsh","owner":"Hopding","description":"Better runtime version management","archived":false,"fork":false,"pushed_at":"2021-06-28T21:57:02.000Z","size":11,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-25T15:23:50.685Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Hopding.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-06-28T00:25:53.000Z","updated_at":"2024-06-12T06:44:26.000Z","dependencies_parsed_at":"2022-09-21T04:01:26.974Z","dependency_job_id":null,"html_url":"https://github.com/Hopding/vm.zsh","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hopding%2Fvm.zsh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hopding%2Fvm.zsh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hopding%2Fvm.zsh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hopding%2Fvm.zsh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Hopding","download_url":"https://codeload.github.com/Hopding/vm.zsh/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244647865,"owners_count":20487160,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":"2024-10-13T18:40:24.524Z","updated_at":"2025-03-20T16:23:56.262Z","avatar_url":"https://github.com/Hopding.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `vm.zsh`\n\n\u003e Better runtime version management\n \nMost language runtimes have version managers that allow you to install and switch between different runtime versions via the CLI. This is much more convenient than manually installing runtimes and is less likely to corrupt your system.\n\nSo why should you use `vm.zsh`?\n* **Consistent CLI.** If you're working with multiple version managers it is difficult to remember each tool's idiosyncrasies. `vm.zsh` enhances several common version managers with a unified interface for the most common operations: `list`, `use`, `install`, and `uninstall`.\n* **Fast startup.** Many version managers must be initialized before they can be used. This initialization is usually done in your `.bash_profile` or `.zshrc` and as a result increases the time it takes to load a new shell/terminal (by up to several seconds). `vm.zsh` solves this problem by (1) lazy loading the version managers and (2) using the default/latest version of each runtime whenever a shell is created.\n\n## Install\n\n```\ncurl -o- https://raw.githubusercontent.com/Hopding/vm.zsh/master/vm.zsh \u003e ~/.vm.zsh\necho 'source ~/.vm.zsh' \u003e\u003e ~/.zshrc\n```\n\n## Usage\n\n```\n  Usage: \u003cvm\u003e [command] [args]\n\n  Variants:\n\n    jvm                         Java (https://sdkman.io/)\n    nvm                         Node (https://github.com/nvm-sh/nvm)\n    pvm                         Python (https://github.com/pyenv/pyenv)\n    gvm                         Go (https://github.com/stefanmaric/g)\n    rvm                         Ruby (https://rvm.io/)\n\n  Commands:\n\n    \u003cvm\u003e list                   List installed versions of runtime\n    \u003cvm\u003e use \u003cversion\u003e          Use a specific version of runtime\n    \u003cvm\u003e install \u003cversion\u003e      Install a specific version of runtime\n    \u003cvm\u003e install list           List all installable versions of runtime\n    \u003cvm\u003e uninstall \u003cversion\u003e    Uninstall a specific version of runtime\n\n  Examples:\n\n    jvm install 11.0.2-open\n    rvm install list\n    nvm use v9.8.0\n    pvm install 3.9.5\n    nvm install 12\n    gvm install list\n    rvm uninstall ruby-2.7.2\n```\n\n## Version Manager Versions\n\n`vm.zsh` has been tested with the following version manager versions:\n* `nvm` - v0.38.0\n* `sdk` - v5.11.6\n* `pyenv` - v2.0.2\n* `g` - v0.9.0\n* `rvm` - v1.29.12\n\n## References\n\nThese articles and examples were useful references when creating this script:\n* https://frederic-hemberger.de/notes/shell/speed-up-initial-zsh-startup-with-lazy-loading/\n* https://github.com/lukechilds/zsh-nvm/blob/23067bd9bb6eb6f4737a3ea90cb0cb5e85f61ba2/zsh-nvm.plugin.zsh#L5-L9\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhopding%2Fvm.zsh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhopding%2Fvm.zsh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhopding%2Fvm.zsh/lists"}