mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-04-10 16:32:00 +00:00
Compare commits
7 Commits
03acab6207
...
4deb970f99
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4deb970f99 | ||
|
|
887a864aba | ||
|
|
d1fb3ebfc7 | ||
|
|
beab0c0b3c | ||
|
|
f0e2160abb | ||
|
|
2bbd7156c3 | ||
|
|
6f7a50dca8 |
2
.github/dependencies.yml
vendored
2
.github/dependencies.yml
vendored
@@ -30,7 +30,7 @@ dependencies:
|
||||
plugins/kube-ps1:
|
||||
repo: jonmosco/kube-ps1
|
||||
branch: master
|
||||
version: 9b41c091d5dd4a99e58cf58b5d98a4847937b1bb
|
||||
version: e19c9ee867c5655814c384a6bf543e330e6ef1b7
|
||||
precopy: |
|
||||
set -e
|
||||
find . ! -name kube-ps1.sh ! -name LICENSE ! -name README.md -delete
|
||||
|
||||
2
.github/workflows/dependencies.yml
vendored
2
.github/workflows/dependencies.yml
vendored
@@ -13,7 +13,7 @@ jobs:
|
||||
contents: write # this is needed to push commits and branches
|
||||
steps:
|
||||
- name: Harden the runner (Audit all outbound calls)
|
||||
uses: step-security/harden-runner@fa2e9d605c4eeb9fcad4c99c224cee0c6c7f3594 # v2.16.0
|
||||
uses: step-security/harden-runner@fe104658747b27e96e4f7e80cd0a94068e53901d # v2.16.1
|
||||
with:
|
||||
egress-policy: audit
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
certifi==2026.2.25
|
||||
charset-normalizer==3.4.6
|
||||
charset-normalizer==3.4.7
|
||||
idna==3.11
|
||||
PyYAML==6.0.3
|
||||
requests==2.33.0
|
||||
requests==2.33.1
|
||||
semver==3.0.4
|
||||
urllib3==2.6.3
|
||||
|
||||
4
.github/workflows/installer.yml
vendored
4
.github/workflows/installer.yml
vendored
@@ -26,7 +26,7 @@ jobs:
|
||||
- macos-latest
|
||||
steps:
|
||||
- name: Harden the runner (Audit all outbound calls)
|
||||
uses: step-security/harden-runner@fa2e9d605c4eeb9fcad4c99c224cee0c6c7f3594 # v2.16.0
|
||||
uses: step-security/harden-runner@fe104658747b27e96e4f7e80cd0a94068e53901d # v2.16.1
|
||||
with:
|
||||
egress-policy: audit
|
||||
|
||||
@@ -47,7 +47,7 @@ jobs:
|
||||
- test
|
||||
steps:
|
||||
- name: Harden the runner (Audit all outbound calls)
|
||||
uses: step-security/harden-runner@fa2e9d605c4eeb9fcad4c99c224cee0c6c7f3594 # v2.16.0
|
||||
uses: step-security/harden-runner@fe104658747b27e96e4f7e80cd0a94068e53901d # v2.16.1
|
||||
with:
|
||||
egress-policy: audit
|
||||
|
||||
|
||||
2
.github/workflows/main.yml
vendored
2
.github/workflows/main.yml
vendored
@@ -24,7 +24,7 @@ jobs:
|
||||
if: github.repository == 'ohmyzsh/ohmyzsh'
|
||||
steps:
|
||||
- name: Harden the runner (Audit all outbound calls)
|
||||
uses: step-security/harden-runner@fa2e9d605c4eeb9fcad4c99c224cee0c6c7f3594 # v2.16.0
|
||||
uses: step-security/harden-runner@fe104658747b27e96e4f7e80cd0a94068e53901d # v2.16.1
|
||||
with:
|
||||
egress-policy: audit
|
||||
|
||||
|
||||
2
.github/workflows/project.yml
vendored
2
.github/workflows/project.yml
vendored
@@ -17,7 +17,7 @@ jobs:
|
||||
if: github.repository == 'ohmyzsh/ohmyzsh'
|
||||
steps:
|
||||
- name: Harden the runner (Audit all outbound calls)
|
||||
uses: step-security/harden-runner@fa2e9d605c4eeb9fcad4c99c224cee0c6c7f3594 # v2.16.0
|
||||
uses: step-security/harden-runner@fe104658747b27e96e4f7e80cd0a94068e53901d # v2.16.1
|
||||
with:
|
||||
egress-policy: audit
|
||||
- name: Authenticate as @ohmyzsh
|
||||
|
||||
2
.github/workflows/scorecard.yml
vendored
2
.github/workflows/scorecard.yml
vendored
@@ -36,7 +36,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Harden the runner (Audit all outbound calls)
|
||||
uses: step-security/harden-runner@fa2e9d605c4eeb9fcad4c99c224cee0c6c7f3594 # v2.16.0
|
||||
uses: step-security/harden-runner@fe104658747b27e96e4f7e80cd0a94068e53901d # v2.16.1
|
||||
with:
|
||||
egress-policy: audit
|
||||
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
# fancy-ctrl-z
|
||||
|
||||
Allows pressing Ctrl-Z again to switch back to a background job.
|
||||
Allows pressing <kbd>Ctrl</kbd>-<kbd>Z</kbd> is an empty prompt to bring to the
|
||||
foreground the only suspended job, or, if there are more than one such jobs, to
|
||||
switch between the two most recently suspended ones.
|
||||
|
||||
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
|
||||
plugins=(... fancy-ctrl-z)
|
||||
@@ -10,15 +12,29 @@ plugins=(... fancy-ctrl-z)
|
||||
|
||||
## Motivation
|
||||
|
||||
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.
|
||||
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
|
||||
works wonderfully with ZSH.
|
||||
I frequently need to execute random commands in my shell.
|
||||
To achieve it, I often pause Vim by pressing <kbd>Ctrl</kbd>-<kbd>Z</kbd>, type
|
||||
a command and then would use `fg`<kbd>↵ Enter</kbd> to switch back to Vim.
|
||||
Having to type in the `fg` part really hurt me.
|
||||
I just wanted to hit <kbd>Ctrl</kbd>-<kbd>Z</kbd> once again to get back to Vim.
|
||||
I could not find a solution, so I developed one on my own that works wonderfully
|
||||
with Zsh.
|
||||
|
||||
Source: http://sheerun.net/2014/03/21/how-to-boost-your-vim-productivity/
|
||||
Switching between the last two suspended jobs is motivated by both TV remotes
|
||||
that had such feature, and tools like `cd -` and `git checkout -` that switch
|
||||
between the current and the second most recent state (directory, branch, etc.).
|
||||
Sometimes, you have your Vim where code is changed, and another longer-running
|
||||
process (e.g., a `tail` on some logs, or a Python interpreter) where you want
|
||||
to test or observe your changes.
|
||||
There is no point in time where you would "have the editor open" and "have the
|
||||
program open" together, and the workflow clearly mandates always switching
|
||||
back and forth between the two.
|
||||
That's why the original version of _fancy-ctrl-z_ was extended with this "even
|
||||
fancier" behaviour, because the original version would've opened Vim back again
|
||||
and again.
|
||||
|
||||
Credits:
|
||||
- original idea by @sheerun
|
||||
- added to OMZ by @mbologna
|
||||
## Credits
|
||||
|
||||
- Original idea by [@sheerun](https://github.com/sheerun), http://sheerun.net/2014/03/21/how-to-boost-your-vim-productivity
|
||||
- Added to OMZ by [@mbologna](https://github.com/mbologna)
|
||||
- Two-job switching added by [@Whisperity](https://github.com/Whisperity)
|
||||
|
||||
@@ -1,12 +1,40 @@
|
||||
fancy-ctrl-z () {
|
||||
if [[ $#BUFFER -eq 0 ]]; then
|
||||
local -i hascmd=$(( ${#BUFFER} > 0 ))
|
||||
local -a sjobs=("${(@f)$(jobs -s)}")
|
||||
local -a opts=("${(@f)$(setopt)}")
|
||||
local -i isverbose=$opts[(Ie)verbose]
|
||||
# In Zsh, arrays are 1-indexed, and an empty array has size 1, not 0.
|
||||
# So we must check the first element's length to see whether it describes a
|
||||
# suspended job.
|
||||
local -i nsjobs="${#${(@)sjobs}}"
|
||||
local -i hassjob=$(( ${#sjobs[1]} > 0 ))
|
||||
local -i hassjobs=$(( nsjobs >= 2 ))
|
||||
# Whether the ^Z action will result in a side effect to the terminal.
|
||||
local -i sideeffect=$(( hassjob || hassjobs || isverbose ))
|
||||
|
||||
if (( hascmd && sideeffect )); then
|
||||
# Save the current command.
|
||||
# It will be restored after the side-effect is over, e.g., if the
|
||||
# foregrounded job is put to the background again.
|
||||
zle push-input -w
|
||||
fi
|
||||
|
||||
if (( hassjobs )); then
|
||||
# Multiple suspended jobs: foreground the second-to-last suspended job.
|
||||
BUFFER="fg %-"
|
||||
zle accept-line -w
|
||||
elif (( hassjob )); then
|
||||
# Single suspended job: foreground it.
|
||||
# "fg %-" would result in an error as the only suspended job is the
|
||||
# last one, which is referenced by "fg" or "fg %+".
|
||||
BUFFER="fg %+"
|
||||
zle accept-line -w
|
||||
elif (( isverbose )); then
|
||||
# No suspended jobs, but verbose mode, let show the "fg: no current job".
|
||||
BUFFER="fg"
|
||||
zle accept-line -w
|
||||
else
|
||||
zle push-input -w
|
||||
zle clear-screen -w
|
||||
fi
|
||||
}
|
||||
|
||||
zle -N fancy-ctrl-z
|
||||
bindkey '^Z' fancy-ctrl-z
|
||||
|
||||
|
||||
@@ -55,7 +55,17 @@ _kube_ps1_shell_type() {
|
||||
_kube_ps1_init() {
|
||||
[[ -f "${_KUBE_PS1_DISABLE_PATH}" ]] && KUBE_PS1_ENABLED=off
|
||||
|
||||
case "$(_kube_ps1_shell_type)" in
|
||||
# Detect shell type once and cache it
|
||||
_KUBE_PS1_SHELL="$(_kube_ps1_shell_type)"
|
||||
|
||||
# Check tput availability once
|
||||
if tput setaf 1 &> /dev/null; then
|
||||
_KUBE_PS1_TPUT_AVAILABLE=true
|
||||
else
|
||||
_KUBE_PS1_TPUT_AVAILABLE=false
|
||||
fi
|
||||
|
||||
case "${_KUBE_PS1_SHELL}" in
|
||||
"zsh")
|
||||
_KUBE_PS1_OPEN_ESC="%{"
|
||||
_KUBE_PS1_CLOSE_ESC="%}"
|
||||
@@ -96,10 +106,10 @@ _kube_ps1_color_fg() {
|
||||
if [[ "${_KUBE_PS1_FG_CODE}" == "default" ]]; then
|
||||
_KUBE_PS1_FG_CODE="${_KUBE_PS1_DEFAULT_FG}"
|
||||
return
|
||||
elif [[ "$(_kube_ps1_shell_type)" == "zsh" ]]; then
|
||||
elif [[ "${_KUBE_PS1_SHELL}" == "zsh" ]]; then
|
||||
_KUBE_PS1_FG_CODE="%F{$_KUBE_PS1_FG_CODE}"
|
||||
elif [[ "$(_kube_ps1_shell_type)" == "bash" ]]; then
|
||||
if tput setaf 1 &> /dev/null; then
|
||||
elif [[ "${_KUBE_PS1_SHELL}" == "bash" ]]; then
|
||||
if [[ "${_KUBE_PS1_TPUT_AVAILABLE}" == "true" ]]; then
|
||||
_KUBE_PS1_FG_CODE="$(tput setaf "${_KUBE_PS1_FG_CODE}")"
|
||||
elif [[ $_KUBE_PS1_FG_CODE -ge 0 ]] && [[ $_KUBE_PS1_FG_CODE -le 256 ]]; then
|
||||
_KUBE_PS1_FG_CODE="\033[38;5;${_KUBE_PS1_FG_CODE}m"
|
||||
@@ -129,15 +139,15 @@ _kube_ps1_color_bg() {
|
||||
if [[ "${_KUBE_PS1_BG_CODE}" == "default" ]]; then
|
||||
_KUBE_PS1_FG_CODE="${_KUBE_PS1_DEFAULT_BG}"
|
||||
return
|
||||
elif [[ "$(_kube_ps1_shell_type)" == "zsh" ]]; then
|
||||
elif [[ "${_KUBE_PS1_SHELL}" == "zsh" ]]; then
|
||||
_KUBE_PS1_BG_CODE="%K{$_KUBE_PS1_BG_CODE}"
|
||||
elif [[ "$(_kube_ps1_shell_type)" == "bash" ]]; then
|
||||
if tput setaf 1 &> /dev/null; then
|
||||
elif [[ "${_KUBE_PS1_SHELL}" == "bash" ]]; then
|
||||
if [[ "${_KUBE_PS1_TPUT_AVAILABLE}" == "true" ]]; then
|
||||
_KUBE_PS1_BG_CODE="$(tput setab "${_KUBE_PS1_BG_CODE}")"
|
||||
elif [[ $_KUBE_PS1_BG_CODE -ge 0 ]] && [[ $_KUBE_PS1_BG_CODE -le 256 ]]; then
|
||||
_KUBE_PS1_BG_CODE="\033[48;5;${_KUBE_PS1_BG_CODE}m"
|
||||
else
|
||||
_KUBE_PS1_BG_CODE="${DEFAULT_BG}"
|
||||
_KUBE_PS1_BG_CODE="${_KUBE_PS1_DEFAULT_BG}"
|
||||
fi
|
||||
fi
|
||||
echo "${_KUBE_PS1_OPEN_ESC}${_KUBE_PS1_BG_CODE}${_KUBE_PS1_CLOSE_ESC}"
|
||||
@@ -174,7 +184,7 @@ _kube_ps1_symbol() {
|
||||
symbol="$(_kube_ps1_color_fg ${oc_symbol_color})${oc_glyph}${KUBE_PS1_RESET_COLOR}"
|
||||
;;
|
||||
*)
|
||||
case "$(_kube_ps1_shell_type)" in
|
||||
case "${_KUBE_PS1_SHELL}" in
|
||||
bash)
|
||||
if ((BASH_VERSINFO[0] >= 4)) && [[ $'\u2388' != "\\u2388" ]]; then
|
||||
symbol="$(_kube_ps1_color_fg $custom_symbol_color)${symbol_default}${KUBE_PS1_RESET_COLOR}"
|
||||
@@ -212,7 +222,7 @@ _kube_ps1_file_newer_than() {
|
||||
local file=$1
|
||||
local check_time=$2
|
||||
|
||||
if [[ "$(_kube_ps1_shell_type)" == "zsh" ]]; then
|
||||
if [[ "${_KUBE_PS1_SHELL}" == "zsh" ]]; then
|
||||
# Use zstat '-F %s.%s' to make it compatible with low zsh version (eg: 5.0.2)
|
||||
mtime=$(zstat -L +mtime -F %s.%s "${file}")
|
||||
elif stat -c "%s" /dev/null &> /dev/null; then
|
||||
@@ -292,13 +302,13 @@ _kube_ps1_get_ns() {
|
||||
|
||||
_kube_ps1_get_context_ns() {
|
||||
# Set the command time
|
||||
if [[ "$(_kube_ps1_shell_type)" == "bash" ]]; then
|
||||
if [[ "${_KUBE_PS1_SHELL}" == "bash" ]]; then
|
||||
if ((BASH_VERSINFO[0] >= 4 && BASH_VERSINFO[1] >= 2)); then
|
||||
_KUBE_PS1_LAST_TIME=$(printf '%(%s)T')
|
||||
else
|
||||
_KUBE_PS1_LAST_TIME=$(date +%s)
|
||||
fi
|
||||
elif [[ "$(_kube_ps1_shell_type)" == "zsh" ]]; then
|
||||
elif [[ "${_KUBE_PS1_SHELL}" == "zsh" ]]; then
|
||||
_KUBE_PS1_LAST_TIME=$EPOCHREALTIME
|
||||
fi
|
||||
|
||||
@@ -325,7 +335,7 @@ Toggle kube-ps1 prompt on
|
||||
|
||||
Usage: kubeon [-g | --global] [-h | --help]
|
||||
|
||||
With no arguments, turn oon kube-ps1 status for this shell instance (default).
|
||||
With no arguments, turn on kube-ps1 status for this shell instance (default).
|
||||
|
||||
-g --global turn on kube-ps1 status globally
|
||||
-h --help print this message
|
||||
|
||||
Reference in New Issue
Block a user