Files
loki/docs/SHELL-INTEGRATIONS.md

4.3 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.

Shell Assistant Demo

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:

Explain Commands

In addition to the Shell Assistant, Loki has a built-in role that explains shell commands to you to decipher their language. So if Loki generates a command that you're unsure of what it does, simply pass it to the explain-shell role:

Explain Shell Role

Code Generation

Users can also directly generate code snippets from natural language prompts using the -c,--code flag.

Code Generation Demo

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).