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:

powershell 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: pwsh Invoke-Expression (&posh-tabcomplete init | Out-String)

Built in completions

The completions packaged with the binary in completions.nu are: * git completions. These are also combined with git auto generated completions * npm completions * cargo completions

Benchmarks

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

| Benchmark | Results | | ---------------------------------------------------- | ------------------------------------------------------ | | benchmark/init - startup time | posh-tabcomplete: 80ms, posh-git: 307ms (3.84x faster) | | benchmark/complete - tab completion (100 branches) | posh-tabcomplete: 80ms, posh-git: 178ms (2.22x faster) |

Aliases / Function support

Functions are supported. For example, the completion of gco in the demo is: pwsh function gco() { git checkout $args }

There is no support for alias completions at this time.

Full list of completions

See completions.nu: