Crates.io | intelli-shell |
lib.rs | intelli-shell |
version | 0.2.7 |
source | src |
created_at | 2023-03-17 21:27:44.105387 |
updated_at | 2023-06-20 17:57:59.477111 |
description | Like IntelliSense, but for shells |
homepage | |
repository | https://github.com/lasantosr/intelli-shell/ |
max_upload_size | |
id | 813192 |
size | 273,990 |
Like IntelliSense, but for shells!
IntelliShell acts like a bookmark store for commands, so you don't have to keep your history clean in order to be able
to find something useful with ctrl + R
.
It currently works on Bash, Zsh, Fish and PowerShell and should be compatible with most Linux, Windows and MacOS.
Install the binaries:
curl -sSf https://raw.githubusercontent.com/lasantosr/intelli-shell/main/install.sh | bash
Bookmark your first command by typing it on a terminal and using ctrl + b
(optional) Run intelli-shell fetch
to download commands from tldr
Hit ctrl + space
to begin the journey!
Remember to bookmark some commands or fetch them after the installation!
To skip profile updates, set INTELLI_SKIP_PROFILE
environment variable to 1
before installing.
curl -sSf https://raw.githubusercontent.com/lasantosr/intelli-shell/main/install.sh | bash
After installing it using bash, it should work in any supported shell.
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser # Optional: Needed to run a remote script the first time
irm https://raw.githubusercontent.com/lasantosr/intelli-shell/main/install.ps1 | iex
After installing it with powershell, it should also work on cmd (without hotkeys).
To install from source you'll need to have Rust installed, which is recommended to be installed using rustup.
cargo install intelli-shell --locked
To enable hotkeys, additional steps are required:
Download source script:
Bash / Zsh:
mkdir -p ~/.local/share/intelli-shell/bin
curl -sSf https://raw.githubusercontent.com/lasantosr/intelli-shell/main/intelli-shell.sh > ~/.local/share/intelli-shell/bin/intelli-shell.sh
Fish:
mkdir -p ~/.local/share/intelli-shell/bin
curl -sSf https://raw.githubusercontent.com/lasantosr/intelli-shell/main/intelli-shell.fish > ~/.local/share/intelli-shell/bin/intelli-shell.fish
Edit your profile to source it:
Bash / Zsh: ~/.bashrc
, ~/.zshrc
or ~/.bash_profile
source ~/.local/share/intelli-shell/bin/intelli-shell.sh
Fish: ~/.config/fish/config.fish
:
source ~/.local/share/intelli-shell/bin/intelli-shell.fish
Download the source script also:
New-Item -Path $env:APPDATA\IntelliShell\Intelli-Shell\data\bin -Type Directory
Invoke-WebRequest -UseBasicParsing -URI "https://raw.githubusercontent.com/lasantosr/intelli-shell/main/intelli-shell.ps1" -OutFile $env:APPDATA\IntelliShell\Intelli-Shell\data\bin\intelli-shell.ps1
Edit your $Profile
to execute it:
. $env:APPDATA\IntelliShell\Intelli-Shell\data\bin\intelli-shell.ps1
You can view supported actions by running intelli-shell -h
. Most used standalone commands are:
intelli-shell fetch [category]
to fetch tldr commands and store them.
[category] can be skipped or a valid folder from tldr's pagesintelli-shell export
to export user-bookmarked commands (won't export tldr's commands)intelli-shell import user_commands.txt
to import commands into the user categoryctrl + b
bookmark currently typed commandctrl + space
show suggestions for current linectrl + l
replace labels of currently typed commandesc
clean current line, this binding can be skipped if INTELLI_SKIP_ESC_BIND=1
Note: When navigating items, selected suggestion can be deleted with ctrl + d
or edited with any of: ctrl + e
,
ctrl + u
or F2
You can customize key bindings using environment variables: INTELLI_BOOKMARK_HOTKEY
, INTELLI_SEARCH_HOTKEY
and INTELLI_LABEL_HOTKEY
When the search criteria matches an alias or produces a single result, it's automatically autocompleted!
You can alias common commands to store some kind of favorite labels, for example bookmark cd {{path}}
and give it a
cd
alias
cd
but if you hit ctrl + space
it will show your "pinned" foldersLong commands or even functions can also be bookmarked
function custom_echo () { echo "hey: $@"; }; custom_echo {{text}};
You can avoid labels to be stored and keep them secret if wrapped between '*' : echo {{*my-secret*}}
Label suggestions are stored based on the root command and the label name, which gives you flexibility to decide.
For these two commands, the same images will be suggested:
docker run {{--rm}} {{--interactive}} {{image}}
docker rmi {{--no-prune}} {{image}}
But these two commands will suggest different volumes:
docker run --volume {{image-1-volumes}} image-1
docker run --volume {{image-2-volumes}} -p {{image-2-ports}} image-2
You might want to have a look at Marker which is pretty similar but requires Python to be installed on your system.
IntelliShell is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.