4.0 KiB
Loki Shell Integrations
Loki supports the following integrations with a handful of shell environments to enhance user experience and streamline workflows.
Tab Completions
Dynamic
Dynamic tab completions are supported by Loki to assist users in quickly completing commands, options, and arguments. You can enable it by using the corresponding command for your shell. To enable dynamic tab completions for every shell session (i.e. persistently), add the corresponding command to your shell's configuration file as indicated:
# Bash
# (add to: `~/.bashrc`)
source <(COMPLETE=bash loki)
# Zsh
# (add to: `~/.zshrc`)
source <(COMPLETE=zsh loki)
# Fish
# (add to: `~/.config/fish/config.fish`)
source <(COMPLETE=fish loki | psub)
# Elvish
# (add to: `~/.elvish/rc.elv`)
eval (E:COMPLETE=elvish loki | slurp)
# PowerShell
# (add to: `$PROFILE`)
$env:COMPLETE = "powershell"
loki | Out-String | Invoke-Expression
At the time of writing, nushell is not yet fully supported for dynamic tab completions due to limitations
in the clap crate. However, nushell support is being actively developed, and will
be added in a future release.
Progress on this feature can be tracked in the following issue: Clap Issue #5840.
Static
Static tab completions (i.e. pre-generated completion scripts that are not context aware) can also be generated using the
--completions flag. You can enable static tab completions by using the corresponding commands for your shell. These commands
will enable them for every shell session (i.e. persistently):
# Bash
echo 'source <(loki --completions bash)' >> ~/.bashrc
# Zsh
echo 'source <(loki --completions zsh)' >> ~/.zshrc
# Fish
echo 'loki --completions fish | source' >> ~/.config/fish/config.fish
# Elvish
echo 'eval (loki --completions elvish | slurp)' >> ~/.elvish/rc.elv
# Nushell
[[ -d ~/.config/nushell/completions ]] || mkdir -p ~/.config/nushell/completions
loki --completions nushell | save -f ~/.config/nushell/completions/loki.nu
echo 'use ~/.config/nushell/completions/cli.nu *' >> ~/.config/nushell/config.nu
# PowerShell
Add-content $PROFILE "loki --completions powershell | Out-String | Invoke-Expression"
Shell Assistant
Loki has an -e,--execute flag that allows users to run natural language commands directly from the CLI. It accepts
natural language input and translates it into executable shell commands.
Intelligent Command Completions
Loki also provides shell scripts that bind Alt-e to loki -e "<current command line>", allowing users to generate
commands from natural text directly without invoking the CLI.
For example:
$ find all typescript files with more than 100 lines<Alt-e>
# Gets replaced with
$ find . -name '*.ts' -type f -exec awk 'NR>100{exit 1}' {} \; -print
To use the CLI helper, add the content of the appropriate integration script for your shell to your shell configuration file:
- Bash Integration (add to:
~/.bashrc) - Zsh Integration (add to:
~/.zshrc) - Elvish Integration (add to:
~/.elvish/rc.elv) - Fish Integration (add to:
~/.config/fish/config.fish) - Nushell Integration (add to:
~/.config/nushell/config.nu) - PowerShell Integration (add to:
$PROFILE)
Code Generation
Users can also directly generate code snippets from natural language prompts using the -c,--code flag.
Pro Tip: Pipe the output of the code generation directly into tee to ensure the generated code is properly extracted
from any generated Markdown (i.e. remove any triple backticks).

