簡體   English   中英

如何在ZSH提示中輸出當前歷史記錄事件編號(%!或%h)-1?

[英]How do I output the current history event number (%! or %h) -1 in my ZSH prompt?

在我的ZSH提示符下,我希望能夠輸出當前歷史記錄事件編號( %!%h )-1

如果當前歷史事件編號為!256,我想將其減去1,然后在提示符下輸出結果(即!255)。

這是現在的樣子以及我希望它的樣子:

我當前的ZSH提示符下的屏幕截圖

以下是我當前的ZSH主題(與該問題有關的代碼位於previous_history_event_number()函數中,該函數從return_code_enabled =聲明觸發):

# ------------------------------------------------------------------------------
#          FILE:  hced.zsh-theme
#   DESCRIPTION:  oh-my-zsh theme file.
#                 (Credits to authors of blinks.zsh-theme and dieter.zsh-theme
#                  from which themes I've taken useful bits.)
#        AUTHOR:  hced
#       VERSION:  0.0.1
#    SCREENSHOT:
# ------------------------------------------------------------------------------

function _prompt_char() {
  if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1); then
    echo "%{%F{blue}%}±%{%f%k%b%}"
  else
    echo ' '
  fi
}

ZSH_THEME_GIT_PROMPT_PREFIX=" [%{%B%F{blue}%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{%f%k%b%K{black}%B%F{green}%}]"
ZSH_THEME_GIT_PROMPT_DIRTY=" %{%F{red}%}*%{%f%k%b%}"
ZSH_THEME_GIT_PROMPT_CLEAN=""

PROMPT='%{%f%k%b%}
%{%K{black}%B%F{green}%}%n%{%B%F{blue}%}@%{%B%F{cyan}%}%m%{%B%F{green}%} %{%b%F{yellow}%K{black}%}%~%{%B%F{green}%}$(git_prompt_info)%E%{%f%k%b%}
%{%K{black}%}$(_prompt_char)%{%K{black}%} %#%{%f%k%b%} '

#RPROMPT='!%{%B%F{cyan}%}%!%{%f%k%b%}'

function previous_history_event_number () {
    prev_hist_num=("%!"-1)
    declare -i prev_hist_num
    echo "$prev_hist_num gave exit code: "
}

# elaborate exitcode on the right when >0
return_code_enabled="%(?..%{$fg[red]%}$(previous_history_event_number)%?%{$reset_color%})"
return_code_disabled=
return_code=$return_code_enabled

RPS1='${return_code}  !%{%B%F{cyan}%}%!%{%f%k%b%}'

function accept-line-or-clear-warning () {
    if [[ -z $BUFFER ]]; then
        time=$time_disabled
        return_code=$return_code_disabled
    else
        time=$time_enabled
        return_code=$return_code_enabled
    fi
    zle accept-line
}
zle -N accept-line-or-clear-warning
bindkey '^M' accept-line-or-clear-warning

免責聲明:我不是程序員,所以previous_history_event_number ()函數中的代碼現在非常(非常)毫無頭緒。

如果在添加%!時顯示當前歷史記錄事件號%! 提示中的原子,然后可以使用(%)修飾符將其放入變量中:

V='%!'
integer HISTORY_EVENT_NUMBER=${(%)V}-1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM