Warning
π§ UNDER DEVELOPMENT π§
This project is currently in active development and is not yet ready for production use. Features, APIs, and commands may change without notice.
VEM is a command-line tool written in Rust for efficiently managing multiple Vim environments. Switch between different .vim configurations easily based on your needs and preferences.
VEM aims to integrate with various amazing tools and plugins in the Vim/Neovim ecosystem. We would like to express our gratitude to the following projects:
- vim-plug - Minimalist Vim Plugin Manager
- packer.nvim - A use-package inspired plugin manager for Neovim
- lazy.nvim - Modern plugin manager for Neovim
- dein.vim - Dark powered Vim/Neovim plugin manager
- paq-nvim - Neovim package manager
- jetpack.vim - Lightning-fast plugin manager for Vim/Neovim
- GitHub Copilot - AI pair programmer
- ChatGPT - Conversational AI assistant
- Codeium - Free AI code completion tool
- Tabnine - AI code completion assistant
- Amazon CodeWhisperer - AI-powered code suggestions
- Claude Code - Anthropic's AI assistant
- Gemini Code Assist - Google's AI coding assistant
- Cursor - AI-powered code editor
- Continue - Open-source AI code assistant
- Aider - AI pair programming in terminal
- Sourcegraph Cody - AI coding assistant
- Gruvbox - Retro groove color scheme
- Nord - Arctic, north-bluish color palette
- Dracula - Dark theme for many applications
- TokyoNight - Clean, dark Neovim theme
- Catppuccin - Soothing pastel theme
- OneDark - Atom's iconic One Dark theme
- Solarized - Precision colors for machines and people
- Monokai - Iconic color scheme for developers
- Exuberant Ctags - Programming language indexing tool
- Universal Ctags - Modern maintained version of Ctags
- LSP (Language Server Protocol) - Language intelligence protocol
- CoC.nvim - Intellisense engine for Vim/Neovim
And many more themes and plugins that enhance the Vim/Neovim experience!
- π Fast: Lightweight and fast environment switching powered by Rust
- π§ Flexible: Manage multiple Vim configuration profiles with TOML-based configuration
- π Organized: Keep each environment isolated to prevent configuration conflicts
- π― Simple: Intuitive command-line interface with comprehensive ctags management
- π€ AI-Enhanced: Built-in support for AI coding assistants (GitHub Copilot, ChatGPT, Codeium)
- π Plugin Management: Support for multiple plugin managers (vim-plug, lazy.nvim, packer, etc.)
- π·οΈ Smart Tagging: Advanced ctags management with multi-repository support
- π Theme Support: Extensive color scheme and theme management
- π Multi-Repository: Cross-repository code navigation and tagging
π Read the full documentation
- Quick Start Guide - Get up and running in 5 minutes
- Installation Instructions - Platform-specific installation guides
- Environment Management - Managing Vim/Neovim environments
- Command Reference - Complete command documentation
- Configuration Guide - TOML configuration reference
- Ctags Management - Advanced ctags features
- AI Integration Guide - Setting up AI coding assistants
- Multi-Repository Setup - Managing multiple codebases
- Plugin Manager Guide - Using different plugin managers
- Architecture Overview - Technical architecture details
- Contributing Guide - How to contribute to VEM
- API Reference - Internal API documentation
Download the latest release from GitHub Releases.
Package names follow the format: vem-<version>-<date>-<arch>.<ext>
- Example:
vem-0.1.0-20251020-amd64.deb - Date is in UTC format (YYYYMMDD)
Note: Replace the package names below with the actual latest version from the Releases page.
# Check the latest release and download the appropriate package for your architecture
# For amd64:
wget https://github.com/ryo-arima/vem/releases/download/latest/vem_0.1.0-20251020_amd64.deb
sudo dpkg -i vem_0.1.0-20251020_amd64.deb
# For arm64:
wget https://github.com/ryo-arima/vem/releases/download/latest/vem_0.1.0-20251020_arm64.deb
sudo dpkg -i vem_0.1.0-20251020_arm64.deb# Check the latest release and download the appropriate package for your architecture
# For x86_64:
wget https://github.com/ryo-arima/vem/releases/download/latest/vem-0.1.0-20251020.x86_64.rpm
sudo rpm -i vem-0.1.0-20251020.x86_64.rpm
# For aarch64:
wget https://github.com/ryo-arima/vem/releases/download/latest/vem-0.1.0-20251020.aarch64.rpm
sudo rpm -i vem-0.1.0-20251020.aarch64.rpm# Download the Homebrew formula from the release
wget https://github.com/ryo-arima/vem/releases/download/latest/vem.rb
brew install ./vem.rb# Linux x86_64
wget https://github.com/ryo-arima/vem/releases/download/latest/vem-0.1.0-20251020-x86_64.tar.gz
tar -xzf vem-0.1.0-20251020-x86_64.tar.gz
sudo mv vem/vem /usr/local/bin/
# Linux aarch64
wget https://github.com/ryo-arima/vem/releases/download/latest/vem-0.1.0-20251020-aarch64.tar.gz
tar -xzf vem-0.1.0-20251020-aarch64.tar.gz
sudo mv vem/vem /usr/local/bin/
# macOS x86_64 (Intel)
wget https://github.com/ryo-arima/vem/releases/download/latest/vem-0.1.0-20251020-x86_64.tar.gz
tar -xzf vem-0.1.0-20251020-x86_64.tar.gz
sudo mv vem/vem /usr/local/bin/
# macOS arm64 (Apple Silicon)
wget https://github.com/ryo-arima/vem/releases/download/latest/vem-0.1.0-20251020-arm64.tar.gz
tar -xzf vem-0.1.0-20251020-arm64.tar.gz
sudo mv vem/vem /usr/local/bin/cargo install vemgit clone https://github.com/ryo-arima/vem.git
cd vem
cargo build --release
sudo cp target/release/vem /usr/local/bin/# Create a new environment
vem create <environment-name>
# List all environments
vem list
# Switch to an environment
vem switch <environment-name>
# Show current environment
vem current
# Remove an environment
vem remove <environment-name>VEM provides powerful ctags management for efficient code navigation across multiple repositories:
# Generate ctags for a repository
vem generate ctags <repository> [options]
# Update existing ctags
vem update ctags <repository> [options]
# Delete ctags for a repository
vem delete ctags <repository> [options]
# List all ctags
vem list ctags
# Clean all ctags files
vem clean ctags# Create a development environment
vem create development
# Create an AI-enhanced environment
vem create ai-development
# List all environments
vem list
# basic-vim
# developer-vim
# modern-nvim
# ai-development
# Switch to AI development environment
vem switch ai-development
# Check current environment
vem current
# ai-development# Generate ctags for main project
vem generate ctags main_project
# Generate ctags for ML models with AI enhancement
vem generate ctags ml_models --ai-enhance
# Update shared libraries ctags
vem update ctags shared_libs --languages=python,rust
# List all ctags with status
vem list ctags
# Name Repository Tag File Size Status
# ai_comprehensive ml_models ai_comprehensive 2.1MB Active
# copilot_enhanced ai_project copilot_enhanced 1.8MB Active
# Clean all ctags files (with backup)
vem clean ctagsVEM comes with pre-configured sample environments to get you started quickly:
- Purpose: Minimal Vim setup for beginners
- Features: Essential settings, syntax highlighting, line numbers
- Plugin Manager: None (pure Vim)
- Best For: Learning Vim, lightweight editing
- Purpose: Professional development environment
- Features: vim-plug, NERDTree, FZF, CoC.nvim, Git integration
- Plugin Manager: vim-plug
- Theme: Gruvbox
- Ctags: Multi-repository support with shared libraries
- Best For: Serious development work
- Purpose: Modern Neovim with LSP and Treesitter
- Features: lazy.nvim, Neo-tree, Telescope, Mason LSP, completion
- Plugin Manager: lazy.nvim
- Theme: TokyoNight
- Ctags: Workspace-focused with LSP integration
- Best For: Modern development workflow
- Purpose: AI-enhanced development environment
- Features: GitHub Copilot, ChatGPT, Codeium, comprehensive LSP
- Plugin Manager: lazy.nvim
- Theme: Catppuccin
- Ctags: AI-optimized cross-repository tagging
- Best For: AI-assisted coding, ML/Data Science
Each environment is fully configured and ready to use with its own vem.toml configuration file.
VEM uses a sophisticated configuration system based on TOML files:
etc/.vem/
βββ envs/ # Environment configurations
β βββ basic-vim/
β β βββ vimrc # Vim configuration
β β βββ vem.toml # Environment settings
β βββ developer-vim/
β β βββ vimrc
β β βββ vem.toml
β βββ modern-nvim/
β β βββ init.lua # Neovim configuration
β β βββ lua/plugins/
β β βββ vem.toml
β βββ ai-development/
β βββ init.lua
β βββ vem.toml
βββ global/ # Shared configurations
βββ vim/ # Global Vim settings
βββ nvim/ # Global Neovim settings
βββ scripts/ # Shared VimScript functions
βββ themes/ # Color schemes
βββ ai-tools/ # AI tool configurations
Each environment's vem.toml file contains:
- Environment metadata (name, description, type)
- Plugin manager selection (vim-plug, lazy.nvim, packer, etc.)
- Package management with dependency tracking
- Ctags configuration with multi-repository support
- Theme and UI settings
- Keymapping definitions
- LSP and AI tool integrations
VEM provides sophisticated ctags management across multiple repositories:
- Cross-Repository Navigation: Generate unified tags across related projects
- Smart Filtering: AI-enhanced tag relevance and filtering
- Repository Sync: Automatic synchronization of external repositories
- Context-Aware Tagging: Different tag configurations for different purposes
Built-in support for modern AI coding assistants:
- GitHub Copilot: Native integration with enhanced context
- ChatGPT: Direct access to conversational AI assistance
- Codeium: Free alternative with smart completion
- Context Enhancement: AI tools receive rich context from ctags
Support for all major Vim/Neovim plugin managers:
- Vim: vim-plug, pathogen, vundle, dein
- Neovim: lazy.nvim, packer.nvim, paq-nvim
- Auto-Configuration: Automatic plugin installation and updates
- Dependency Management: Smart package dependency resolution
Comprehensive color scheme and theme support:
- 30+ Built-in Themes: Gruvbox, Nord, Dracula, TokyoNight, Catppuccin, etc.
- Environment-Specific: Different themes for different purposes
- Plugin Integration: Automatic theme configuration for status lines and UI
VEM follows a modular architecture with clear separation of concerns:
src/
βββ main.rs # Application entry point
βββ cnf/ # Configuration management
βββ ctl/ # Control layer (commands and CLI)
βββ ent/ # Entity definitions (data models)
βββ rep/ # Repository layer (data persistence)
βββ usc/ # Use case layer (business logic)
- Configuration (
cnf): Handles application settings and environment configurations - Control (
ctl): Command-line interface and user interaction handling - Entity (
ent): Core data structures and domain models - Repository (
rep): Data storage and retrieval operations - Use Case (
usc): Business logic and application workflows
This layered architecture ensures:
- Clear separation of concerns
- Easy testing and maintenance
- Scalable codebase structure
- Clean dependency management
- Rust 1.70 or higher (nightly toolchain recommended for development)
- Git
vem/
βββ docs/ # Documentation (mdBook)
β βββ src/ # Documentation source
β βββ book.toml # mdBook configuration
β βββ book/ # Generated documentation (ignored)
βββ scripts/ # Packaging and release scripts
β βββ main.sh # Main packaging script entry point
β βββ packages/ # Package format specific scripts
β βββ apt/ # Debian package scripts
β βββ rpm/ # RPM package scripts
β βββ brew/ # Homebrew formula scripts
β βββ common/ # Shared utilities
βββ src/ # Source code
β βββ cnf/ # Configuration layer
β βββ ctl/ # Control layer
β βββ ent/ # Entity layer
β βββ rep/ # Repository layer
β βββ usc/ # Use case layer
β βββ util/ # Utility modules
β βββ main.rs # Entry point
βββ .github/ # GitHub Actions workflows
β βββ workflows/ # CI/CD pipelines
βββ Cargo.toml # Project configuration
βββ Cargo.lock # Dependency lock file
βββ rustfmt.toml # Rust formatter configuration
βββ README.md # Project documentation
git clone https://github.com/ryo-arima/vem.git
cd vem
cargo buildcargo testThis project uses nightly rustfmt with custom configurations:
# Install nightly toolchain
rustup toolchain install nightly
# Format code
cargo +nightly fmt
# Check formatting
cargo +nightly fmt --checkTo build distribution packages locally:
# Build all packages (Linux only)
bash scripts/main.sh all
# Build specific package types
bash scripts/main.sh apt # Debian packages
bash scripts/main.sh rpm # RPM packages
bash scripts/main.sh dist # tar.gz and zip archives
bash scripts/main.sh brew # Homebrew formulaMIT License
Pull requests and issue reports are welcome!