#nu #tabs #file #blazing-fast #complete

bin+lib posh-tabcomplete

Blazing fast tab completion for powershell

7 releases

0.1.6 Sep 16, 2023
0.1.5 Sep 5, 2023
0.1.4 Apr 11, 2023
0.1.2 Mar 13, 2023
Download history 5/week @ 2023-06-10 6/week @ 2023-06-17 5/week @ 2023-06-24 7/week @ 2023-07-01 1/week @ 2023-07-15 2/week @ 2023-07-22 1/week @ 2023-07-29 10/week @ 2023-08-05 1/week @ 2023-08-12 6/week @ 2023-08-19 5/week @ 2023-08-26 23/week @ 2023-09-02 16/week @ 2023-09-09 82/week @ 2023-09-16

126 downloads per month

MIT/Apache and maybe CC-PDDC

130KB
365 lines

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: 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:

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
  • npm
    • run

Dependencies

~56–96MB
~1.5M SLoC