feat(npm): toggle `npm install` / `npm uninstall` by pressing F2 twice (#9717)
Co-authored-by: Marc Cornellà <hello@mcornella.com>
This commit is contained in:
parent
2acb3071ca
commit
ce9104c4f3
|
@ -29,3 +29,20 @@ plugins=(... npm)
|
||||||
| `npmI` | `npm init` | Run npm init |
|
| `npmI` | `npm init` | Run npm init |
|
||||||
| `npmi` | `npm info` | Run npm info |
|
| `npmi` | `npm info` | Run npm info |
|
||||||
| `npmSe` | `npm search` | Run npm search |
|
| `npmSe` | `npm search` | Run npm search |
|
||||||
|
|
||||||
|
## `npm install` / `npm uninstall` toggle
|
||||||
|
|
||||||
|
The plugin adds a function that toggles between `npm install` and `npm uninstall` in
|
||||||
|
the current command or the last command, for up to 2 previous commands. **The default
|
||||||
|
key binding is pressing <kbd>F2</kbd> twice**.
|
||||||
|
|
||||||
|
You can change this key binding by adding the following line to your zshrc file:
|
||||||
|
|
||||||
|
```zsh
|
||||||
|
bindkey -M emacs '<seq>' npm_toggle_install_uninstall
|
||||||
|
bindkey -M vicmd '<seq>' npm_toggle_install_uninstall
|
||||||
|
bindkey -M viins '<seq>' npm_toggle_install_uninstall
|
||||||
|
```
|
||||||
|
|
||||||
|
where `<seq>` is a key sequence obtained by running `cat` and pressing the keyboard
|
||||||
|
sequence you want.
|
||||||
|
|
|
@ -69,3 +69,43 @@ alias npmi="npm info"
|
||||||
|
|
||||||
# Run npm search
|
# Run npm search
|
||||||
alias npmSe="npm search"
|
alias npmSe="npm search"
|
||||||
|
|
||||||
|
npm_toggle_install_uninstall() {
|
||||||
|
# Look up to the previous 2 history commands
|
||||||
|
local line
|
||||||
|
for line in "$BUFFER" \
|
||||||
|
"${history[$((HISTCMD-1))]}" \
|
||||||
|
"${history[$((HISTCMD-2))]}"
|
||||||
|
do
|
||||||
|
case "$line" in
|
||||||
|
"npm uninstall"*)
|
||||||
|
BUFFER="${line/npm uninstall/npm install}"
|
||||||
|
(( CURSOR = CURSOR + 2 )) # uninstall -> install: 2 chars removed
|
||||||
|
;;
|
||||||
|
"npm install"*)
|
||||||
|
BUFFER="${line/npm install/npm uninstall}"
|
||||||
|
(( CURSOR = CURSOR + 2 )) # install -> uninstall: 2 chars added
|
||||||
|
;;
|
||||||
|
"npm un "*)
|
||||||
|
BUFFER="${line/npm un/npm install}"
|
||||||
|
(( CURSOR = CURSOR + 5 )) # un -> install: 5 chars added
|
||||||
|
;;
|
||||||
|
"npm i "*)
|
||||||
|
BUFFER="${line/npm i/npm uninstall}"
|
||||||
|
(( CURSOR = CURSOR + 8 )) # i -> uninstall: 8 chars added
|
||||||
|
;;
|
||||||
|
*) continue ;;
|
||||||
|
esac
|
||||||
|
return 0
|
||||||
|
done
|
||||||
|
|
||||||
|
BUFFER="npm install"
|
||||||
|
CURSOR=${#BUFFER}
|
||||||
|
}
|
||||||
|
|
||||||
|
zle -N npm_toggle_install_uninstall
|
||||||
|
|
||||||
|
# Defined shortcut keys: [F2] [F2]
|
||||||
|
bindkey -M emacs '^[OQ^[OQ' npm_toggle_install_uninstall
|
||||||
|
bindkey -M vicmd '^[OQ^[OQ' npm_toggle_install_uninstall
|
||||||
|
bindkey -M viins '^[OQ^[OQ' npm_toggle_install_uninstall
|
||||||
|
|
Loading…
Reference in New Issue