mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2025-12-12 01:52:31 +01:00
feat(fancy-ctrl-z): Flip-flop between two backgrounded jobs
Added a feature to `fancy-ctrl-z` which, if and only if there are precisely two backgrounded jobs, switches between them (using `fg %-`) when bringing back something to the foreground.
This commit is contained in:
parent
899af6328b
commit
6f7a50dca8
2 changed files with 16 additions and 8 deletions
|
|
@ -1,8 +1,10 @@
|
||||||
# fancy-ctrl-z
|
# fancy-ctrl-z
|
||||||
|
|
||||||
Allows pressing Ctrl-Z again to switch back to a background job.
|
Allows pressing Ctrl-Z again to switch back to the most recently backgrounded
|
||||||
|
job. If there are precisely two backgrounded jobs, Ctrl-Z will toggle between
|
||||||
|
them, bringing the other one back.
|
||||||
|
|
||||||
To use it, add `fancy-ctrl-z` to the plugins array in your zshrc file:
|
To use it, add `fancy-ctrl-z` to the `plugins` array in your `.zshrc` file:
|
||||||
|
|
||||||
```zsh
|
```zsh
|
||||||
plugins=(... fancy-ctrl-z)
|
plugins=(... fancy-ctrl-z)
|
||||||
|
|
@ -11,14 +13,14 @@ plugins=(... fancy-ctrl-z)
|
||||||
## Motivation
|
## Motivation
|
||||||
|
|
||||||
I frequently need to execute random commands in my shell. To achieve it I pause
|
I frequently need to execute random commands in my shell. To achieve it I pause
|
||||||
Vim by pressing Ctrl-z, type command and press fg<Enter> to switch back to Vim.
|
Vim by pressing Ctrl-Z, type command and press fg<Enter> to switch back to Vim.
|
||||||
The fg part really hurts me. I just wanted to hit Ctrl-z once again to get back
|
The fg part really hurts me. I just wanted to hit Ctrl-Z once again to get back
|
||||||
to Vim. I could not find a solution, so I developed one on my own that
|
to Vim. I could not find a solution, so I developed one on my own that
|
||||||
works wonderfully with ZSH.
|
works wonderfully with ZSH.
|
||||||
|
|
||||||
Source: http://sheerun.net/2014/03/21/how-to-boost-your-vim-productivity/
|
Source: http://sheerun.net/2014/03/21/how-to-boost-your-vim-productivity/
|
||||||
|
|
||||||
Credits:
|
Credits:
|
||||||
- original idea by @sheerun
|
- original idea by [@sheerun](https://github.com/sheerun)
|
||||||
- added to OMZ by @mbologna
|
- added to OMZ by [@mbologna](https://github.com/mbologna)
|
||||||
|
- two-job switching added by [@Whisperity](https://github.com/Whisperity)
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,18 @@
|
||||||
fancy-ctrl-z () {
|
fancy-ctrl-z () {
|
||||||
if [[ $#BUFFER -eq 0 ]]; then
|
if [[ $#BUFFER -eq 0 ]]; then
|
||||||
BUFFER="fg"
|
BUFFER="fg"
|
||||||
|
|
||||||
|
IFS=$'\n' local num_jobs=($(jobs))
|
||||||
|
if [[ "${#num_jobs[@]}" -eq 2 ]]; then
|
||||||
|
BUFFER="fg %-"
|
||||||
|
fi
|
||||||
|
|
||||||
zle accept-line -w
|
zle accept-line -w
|
||||||
else
|
else
|
||||||
zle push-input -w
|
zle push-input -w
|
||||||
zle clear-screen -w
|
zle clear-screen -w
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
zle -N fancy-ctrl-z
|
zle -N fancy-ctrl-z
|
||||||
bindkey '^Z' fancy-ctrl-z
|
bindkey '^Z' fancy-ctrl-z
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue