lingti-code is an all-in-one AI-ready development environment platform built on Tmux + Vim/Neovim + Zsh. Supports macOS and Ubuntu one-line installation, as well as Docker instant deployment. Bundles ZSH (Prezto), Neovim (SpaceVim), Tmux, Git, AI coding tools (Claude Code, GitHub Copilot), network acceleration, and 100+ developer utilities into a cohesive system.
macOS one-click install via Homebrew | Ubuntu one-click install via apt | Docker instant deployment
- What's Included
- Quick Start
- Project Structure
- Documentation
- Tool Configurations
- Customization
- AI Integration (Claude)
- Development & Contributing
- ZSH with Prezto framework
- 100+ shell aliases and functions (git, docker, k8s, etc.)
- fasd for quick directory navigation
- Custom prompt themes
- Neovim with SpaceVim distribution
- Language layers: TypeScript, Go, Ruby, Python, Rust, C
- LSP integration with auto-completion
- Snippets, linting (ALE), and formatting
- GitHub Copilot integration
- Tmux with vim-style keybindings
- Powerful status bar
- Session management
- vim-tmux-navigator for seamless pane switching
- Git configuration with sensible defaults
- Extensive git aliases (
ga,gc,gd,gfr, etc.) - Commitlint for conventional commits
- asdf version manager (Node.js, Ruby, Python, etc.)
- ctags configuration
- IRB/Pry Ruby REPL enhancements
- Claude Code CLI configuration
- Project-aware AI assistance via CLAUDE.md
# macOS
brew install zsh tmux neovim ag
# Linux
sudo apt install zsh tmux neovim silversearcher-ag
# Set zsh as default shell
chsh -s $(which zsh)
# Install Python support for Neovim
python3 -m pip install --user --upgrade pynvim# One-line install (macOS or Ubuntu)
bash -c "$(curl -fsSL https://raw.githubusercontent.com/ruilisi/lingti-code/master/install.sh)"
# Or clone and install manually
git clone https://github.com/ruilisi/lingti-code.git ~/.lingti
cd ~/.lingti
rake installThe installer automatically detects your platform and uses Homebrew (macOS) or apt (Ubuntu/Debian) to install all dependencies. No manual configuration needed.
docker run -it ubuntu:latest
apt update && apt install -y git curl zsh sudo
bash -c "$(curl -fsSL https://raw.githubusercontent.com/ruilisi/lingti-code/master/install.sh)"Ideal for cloud development, CI/CD pipelines, or spinning up a temporary full-featured dev environment in seconds.
cd ~/.lingti
git pull --rebase
rake update~/.lingti/
├── Rakefile # Main installation orchestrator
├── lib/
│ ├── helpers.rb # Shared Ruby utilities
│ └── tasks/ # Modular rake tasks
├── zsh/ # ZSH configuration files
│ ├── 0_path.zsh # PATH setup (loaded first)
│ ├── aliases.zsh # Shell aliases
│ ├── files.zsh # File operation functions
│ └── prezto-override/ # Prezto customizations
├── SpaceVim.d/ # SpaceVim user configuration
│ ├── init.toml # Main config with layers
│ ├── autoload/ # Custom vim functions
│ └── snippets/ # Code snippets
├── git/ # Git configuration
├── tmux/ # Tmux configuration
├── claude/ # Claude Code CLI config
├── bin/ # Executable utilities (lingti command)
└── doc/ # Documentation
| Location | Description |
|---|---|
~/.lingti |
Main repository |
~/.SpaceVim |
SpaceVim framework |
~/.SpaceVim.d |
Symlink to ~/.lingti/SpaceVim.d |
~/.zprezto |
Prezto framework |
~/.zshrc |
Symlink to Lingti zsh config |
~/.tmux.conf |
Symlink to Lingti tmux config |
~/.gitconfig |
Symlink to Lingti git config |
~/.claude |
Claude Code configuration |
| Document | Description |
|---|---|
| doc/keymaps.md | All keyboard shortcuts (Zsh, Tmux, Vim) |
| doc/shortcuts.md | Shell commands and aliases |
| doc/vim-basic.md | Basic vim commands |
| doc/zsh/themes.md | Custom ZSH theme guide |
| CLAUDE.md | AI assistant project context |
| FAQ.md | Frequently asked questions |
| Document | Description |
|---|---|
| doc/vim/loading.md | How nvim loads (startup phases, hooks, config order) |
| doc/vim/coding.md | Coding features |
| doc/vim/navigation.md | Navigation shortcuts |
| doc/vim/textobjects.md | Text objects |
| doc/vim/manage_plugins.md | Plugin management |
| doc/vim/override.md | Customization guide |
Lingti uses Prezto as the ZSH framework, bundled as a git submodule.
Installation Process (rake install_prezto):
- Git submodule init pulls prezto into
~/.lingti/zsh/prezto/ - Symlinks
~/.zprezto→~/.lingti/zsh/prezto/ - Symlinks runcoms (
~/.zshrc,~/.zshenv, etc.) from prezto - Overrides
~/.zpreztorcwith Lingti's custom config (enables extra modules) - Creates user customization directories
Resulting Symlinks:
| Target | Links To |
|---|---|
~/.zprezto |
~/.lingti/zsh/prezto/ |
~/.zpreztorc |
~/.lingti/zsh/prezto-override/zpreztorc |
~/.zshrc |
~/.lingti/zsh/prezto/runcoms/zshrc |
Load Order: 0_path.zsh → 0000_before.zsh → (alphabetical) → zzzz_after.zsh
User Customization:
~/.zsh.before/- Loaded before Lingti configs~/.zsh.after/- Loaded after Lingti configs~/.zsh.prompts/- Custom prompt themes
Platform-Specific: Use -darwin.zsh or -linux.zsh suffix.
Configuration: ~/.SpaceVim.d/init.toml
# Enable language layers
[[layers]]
name = "lang#go"
[[layers]]
name = "lang#typescript"
# Custom plugins
[[custom_plugins]]
repo = "github/copilot.vim"
merged = falseKey Prefixes:
SPC(Space) - SpaceVim leader,- Local leader / Lingti utilities\- Vim leader
Store personal settings in ~/.gitconfig.user:
[user]
name = Your Name
email = your@email.comEnvironment variables go in ~/.secrets.
Prefix: Ctrl-a (changed from default Ctrl-b)
User Overrides: ~/.tmux.conf.user
See doc/keymaps.md#2-tmux for all shortcuts.
# ~/.zsh.after/my-aliases.zsh
alias myproject="cd ~/projects/myproject"# Via command line
lingti vim-add-plugin tpope/vim-surround
# Or edit SpaceVim.d/init.toml
[[custom_plugins]]
repo = "tpope/vim-surround"
merged = falseEdit ~/.SpaceVim.d/autoload/config.vim:
function! config#before() abort
" Settings before SpaceVim loads
endfunction
function! config#after() abort
" Settings after SpaceVim loads
set relativenumber
endfunctionLingti includes configuration for Claude Code, Anthropic's AI coding assistant.
rake install_claudeThis creates ~/.claude/ with:
CLAUDE.md- Global instructions for Claude across all projectssettings.json- Claude Code settingsscripts/- Custom scripts (symlinked)
Plays a sound when Claude needs your attention (e.g., waiting for input, task complete):
"hooks": {
"Notification": [{ "hooks": [{ "type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff" }] }]
}Shows current directory, model, and token usage in the status bar:
lingti | Claude Sonnet 4 | Tokens: 12,847/200,000 (93.6% remaining)
The status line script (scripts/statusline.sh) displays:
- Current directory name
- Active model
- Output style (if set)
- Token usage and remaining percentage
Pre-configured language server plugins:
basedpyright- Pythongopls- Go
The root CLAUDE.md provides Claude with project overview, architecture, commands, and conventions. Claude Code automatically reads this file to understand the project context.
Edit ~/.lingti/claude/settings.json for global settings, or create project-specific .claude/ directories.
rake -T # List all tasks
rake install_prezto # ZSH/Prezto
rake install_spacevim # Neovim/SpaceVim
rake install_asdf # Version manager
rake install_claude # Claude Code config
ASK=true rake install # Interactive mode
DEBUG=true rake install # Dry run- Modular Tasks: Each component in
lib/tasks/ - Helpers: Shared utilities in
lib/helpers.rb - Symlinks: Configs linked to
~/with.prefix - Backups: Existing files saved as
~/.filename.backup - Commits: Conventional commits via commitlint
# Test on fresh Ubuntu system (see Docker Instant Deployment above)
ASK=true rake install # Interactive mode
DEBUG=true rake install # Dry run- CHANGELOG.md - Version history
- doc/credits.md - Acknowledgments
- LICENSE - MIT License