Skip to content

abgox/PSCompletions

Repository files navigation

✨PSCompletions(psc) ✨

English | 简体中文 | Github | Gitee

license code size repo size created


Introduce

  • PowerShell: A Cross-platform PowerShell. Start it in command line by running pwsh.

  • Windows PowerShell: A PowerShell which is built-in on Windows systems. Start it in command line by running powershell.


  • A completion manager in PowerShell for better and simpler use completions.

    It can also be used in Windows PowerShell.(Not Recommend)

  • Manage completions together.
  • Switch between languages(zh-CN,en-US...) freely.
  • Sort completion tab dynamically by frequency of use.

If this project is helpful to you, please consider giving it a star ⭐.

How to install

  1. Start PowerShell
  2. Install-Module PSCompletions -Scope CurrentUser
  3. Import-Module PSCompletions
    • echo "Import-Module PSCompletions" >> $PROFILE
    • So you don't have to import the module every time you open PowerShell.

How to uninstall

  1. Start PowerShell
  2. Uninstall-Module PSCompletions

How to use(e.g. git)

  • If it doesn't include the completion you want, you can submit an issue and I will consider adding it.
  1. psc add git
  2. Then you can enter git and press Space Tab to get command completion.
  3. For more commands on psc, you can learn by entering psc and then pressing Space Tab.

Demo

demo

Tips

About the completion trigger key

  • The module uses the Tab key by default.
  • You can set it by running Set-PSReadLineKeyHandler <key> MenuComplete.

About completion update

  • When the module is imported after opening PowerShell, PSCompletions will start a background job to check for the completion status of the remote repository.
  • After getting the update, PSCompletions will show the latest status of the completions in the next time.

About completion menu

  • The module's completion menu provided by the module is based on PS-GuiCompletion realization idea, thanks!

  • It can only be used in PowerShell(pwsh) under Windows.

  • Some keys in the completion menu provided by the module.

    1. Apply the selected completion item: Enter

    2. Delete filter characters: Backspace

    3. Exit the completion menu: ESC / Ctrl + c

      • When there are no characters in the filter area, you can also use Backspace key to exit the completion menu.
    4. Select completion item:

      Select previous item Select next item
      Up Down
      Left Right
      Shift + Tab Tab
      Shift + Space Space
      Ctrl + u Ctrl + d
      Ctrl + p Ctrl + n
  • All configurations of it, you can trigger completion by running psc menu, then learn about them by completion tip.

About special symbols

  • 😄🤔😎 : If there are multiple, you can choose the effect of one of them.
    • 😄 : It means that after you choose it, you can press Space and Tab key to continue to get command completions.(Normal or optional completions)
      • It can be customized by running psc menu symbol SpaceTab <symbol>
    • 🤔 : It means that after you choose it (option completion), you can press Space and Tab key to continue to get option completions. (e.g. --verbose)
      • It can be customized by running psc menu symbol OptionTab <symbol>
    • 😎 : It means that after you choose it (option completion), you can enter a string, then press Space and Tab key to continue to get the rest of option completions.
      • If the string has Spaces, Please use "" or '' to wrap it. e.g. 'test content'
      • If there is also 😄, it means that there are some strings to complete, you can press Space and Tab key to continue to get command completions without entering a string.
      • It can be customized by running psc menu symbol WriteSpaceTab <symbol>
    • Completion of generic options can also be triggered if there is one or more generic option completion.
    • All complements can be triggered by pressing the Tab key after entering a part.
    • If you don't need or want to see these symbols, you can hide them by replacing them with the empty string.
      • e.g. psc menu symbol SpaceTab ""

About language

  • Global language: Default to the language of current system.
    • You can show it by running psc config language
    • You can change it by running psc config language zh-CN
  • Completion language: The language set for the specified completion.
    • e.g. psc completion git language en-US
  • Available language: In the completion config.json file, there is a language attribute whose value is a list of available languages.

Determine language

  1. Get the specified language:
    • If there is Completion language,use it.
    • If not, use Global language.
  2. Determine the final language:
    • Determine whether the value of the first step exists in Available language.
    • If it exists, use it.
    • If not, use the first of the Available language. (It's usually en-US)

About path completion

  • Take git for example, when entering git add, pressing the Space and Tab keys, path completion will not be triggered, only completion provided by the module will be triggered.
  • If you want to trigger path completion, you need to enter a content.
  • If the content matches this regex rule ^\.*[\\/].*, it will get the path completion, which is PowerShell completion.
  • e.g.
    • Please enter ./ or .\ and press Tab key to get path completion for the subdirectory or file.
    • Please enter ../ or ..\ and press Tab key to get path completion for the parent directory or file.
    • Please enter / or \ and press Tab key to get path completion for the sibling directory.
  • So you can enter git add ./ and then press Tab key to get the path completion.

Available Completions List

Completions Source
psc psc - PSCompletions Module
bun Bun - JavaScript all-in-one toolkit
cargo cargo - Rust package manager
chfs chfs(CuteHttpFileServer)
choco choco(chocolatey) - Software Manager
conda conda - binary package and environment manager
deno deno - A secure runtime for JS and TS
docker docker - Container Application Development
git Git - Version control system
kubectl Kubernetes(k8s) command-line tool
npm npm - package manager
nrm nrm - npm registry manager
nvm nvm - Node Version Manager
pip pip - Python Package Manager
pnpm pnpm - Package Manager
python python - command-line
scoop Scoop - Software Manager
volta volta - Accessible JavaScript Tool Manager
winget WinGet - Windows package manager
wsl WSL - Windows Subsystem for Linux
wt windows terminal command line
yarn yarn - package manager
... ...

About

A completion manager for better and simpler use completions in PowerShell. 一个补全管理模块,更简单、更方便的在 PowerShell 中使用命令补全。

Topics

Resources

License

Stars

Watchers

Forks