Skip to content

domsleee/posh-tabcomplete

Repository files navigation

posh-tabcomplete

Crates.io Build Status

Blazing fast tab completion for powershell and pwsh.

demo

This video is using the MenuComplete binding in code $PROFILE:

Set-PSReadLineKeyHandler -Key Tab MenuComplete

Features:

  • Fast startup and execution using nushell/nu-engine
  • Extendable using .nu files, with built in support for commmon tasks like git and npm run
  • Supports all platforms. Tested on windows, WSL, mac and linux

By default, completions.nu is used. An alternative .nu file can be specified in the TABCOMPLETE_FILE environment variable.

Installation

Step 1. Install binary

There are binaries available in releases, or with one of these commands:

Repository Instructions
crates.io cargo install posh-tabcomplete --locked

Step 2. Setup powershell

Add this line to your profile, you can edit this by typing code $PROFILE in powershell:

Invoke-Expression (&posh-tabcomplete init | Out-String)

Built in completions

The completions packaged with the binary in completions.nu are:

Benchmarks

To run these, run ./benchmark/benchmark_all.ps1

Benchmark Results
benchmark/init - startup time posh-tabcomplete: 42ms, posh-git: 268ms (6.38x faster)
benchmark/complete - tab completion (100 branches) posh-tabcomplete: 80ms, posh-git: 176ms (2.2x faster)

Aliases / Function support

Functions are supported. For example, the completion of gco in the demo is:

function gco() { git checkout $args }

There is no support for alias completions at this time.

Full list of completions

See completions.nu:

  • git
    • branch
    • checkout
    • cherry-pick
    • fetch
    • merge
    • push
    • rebase
    • switch
    • diff
  • npm
    • run