English | 日本語
Turn runes into commands.
runex is a cross-shell abbreviation engine that expands short tokens into full commands in real-time.
- Cross-shell support (bash / zsh / pwsh / cmd)
- Real-time expansion (customizable trigger)
- Single config file
- Conditional rules (OS / shell / command existence)
- Fast and lightweight (Rust core)
runex treats short inputs as runes, and expands them into full casts.
gcm␣ → git commit -m
ls␣ → lsd
cargo install runexGenerated shell scripts and your config.toml are part of your local shell environment. Only load and sync files you trust.
If runex is not found after install, make sure Cargo's bin directory is on your PATH:
- Unix-like shells:
~/.cargo/bin - Windows:
%USERPROFILE%\.cargo\bin
$PROFILE:
Invoke-Expression ((& runex export pwsh) -join "`n")~/.bashrc:
eval "$(runex export bash)"~/.zshrc:
eval "$(runex export zsh)"Nushell integration is currently experimental and not considered stable yet.
config.nu:
mkdir ~/.config/nu
runex export nu | save -f ~/.config/nu/runex.nu
open ~/.config/nu/config.nuThen add this line to config.nu:
source ~/.config/nu/runex.nu%LOCALAPPDATA%\clink\runex.lua:
runex export clink > %LOCALAPPDATA%\clink\runex.lua~/.config/runex/config.toml
No keybindings are active until you configure them.
version = 1
[keybind]
trigger = "space"
[[abbr]]
key = "ls"
expand = "lsd"
[[abbr]]
key = "gcm"
expand = "git commit -m"expand is inserted as shell-native text. runex does not reinterpret or re-escape it for you.
Supported key values:
spacetabalt-space
trigger sets the default expand key for all shells.
Shell-specific keys like bash, zsh, pwsh, and nu override that default.
Example override:
[keybind]
trigger = "space"
bash = "alt-space"
zsh = "tab"If you want multiple shells or environments to share one physical config file, set RUNEX_CONFIG to that path before loading runex.
If you use trigger = "space", there are a few practical ways to avoid expansion when needed.
- In many terminal setups,
Shift+Spaceinserts a plain space without triggeringrunex. This is convenient, but terminal- and shell-dependent. - In bash, prefixing the token with
\avoids a match, so\lsstays literal.command lsalso works. - In PowerShell,
\lsis just a different token, not a built-in escape. For built-in aliases such asls, prefer the full command name such asGet-ChildItem.
runex expand --token ls # expand a single token
runex list # list all runes
runex doctor # check config and environment
runex export <shell> # generate shell integration scriptInput: gcm␣
Output: git commit -m ␣
| Feature | alias | runex |
|---|---|---|
| Cross-shell | No | Yes |
| Real-time expand | No | Yes |
| Conditional rules | No | Yes |
- One config, all shells
- Minimal typing, maximal power
- Runes over repetition
- Fuzzy suggestions
- Interactive picker
- Editor integrations
- run (execute)
- ex (expand / execute)
- rune (compressed command)
MIT
