答案1
您可以在您的~/.zshrc
:
realPS1="$PS1"
changed=false
changePS1() {
$changed && {
PS1="%n (normal) in %~> "
#Or
PS1="$realPS1"
changed=false
: # <-- It might be not necessary add this `:`. This one
#represents a zero-status code (or successful).
} || {
PS1="%n (hidden)> "
changed=true
}
}
bindkey -s "^H" 'changePS1^M'
上面的代码将创建一个快捷方式(使用bindkey)来 Ctrl + H 执行该changePS1
函数。所以基本上 Ctrl + H 所做的就是启用hidden
提示,当您 Ctrl + H 再次按下时将启用normal
提示。
关于$PS1
你应该分配的值根据您的需求。例如,此行PS1="%n (normal) in %~> "
显示如下提示:
edgar (normal) in ~/Documents/Gitlab/Linux_programming>
其中%n
是用户名和%~
我当前工作目录的相对路径。
但是,您可以备份真实的$PS1
(行realPS1="$PS1"
)并使用该行PS1="$realPS1"
而不是PS1="%n (normal) in %~> "
并PS1="%n (hidden)> "
会显示以下提示:
edgar (hidden)>
因此,您应该PS1
使用自定义提示分配变量,但不必使用%~
以避免打印路径。