我安装了 zsh 5.3 并正在使用它。
现在在 .zshrc 中我做了以下操作 -
autoload -Uz compinit promptinit
compinit
promptinit
# End of lines added by compinstall
现在我浏览了一些提示并喜欢其中一个 big_fade
big_fade 看起来像这样 -
۲��shirish@think-debian���۲�� Mon Dec 26 02:24:01am
/usr/share/zsh/functions/Prompts>
提示符的内置代码位于 /usr/share/zsh/functions/Prompts/prompt_bigfade_setup
/usr/share/zsh/functions/Prompts> cat prompt_bigfade_setup
# Generic large colour fade-bar prompt theme from bashprompt
# Created by James Manning <[email protected]>
# Changed by Spidey 08/06
# Converted to zsh prompt theme by <[email protected]>
prompt_bigfade_help () {
cat <<EOH
This prompt is color-scheme-able. You can invoke it thus:
prompt bigfade [<fade-bar> [<userhost> [<date> [<cwd>]]]]
where the parameters are the colors for the fade-bar, user@host text,
date text, and current working directory respectively. The default
colors are blue, white, white, and yellow. This theme works best with
a dark background.
Recommended fonts for this theme: either UTF-8, or nexus or vga or similar.
If you don't have any of these, the 8-bit characters will probably look
stupid.
EOH
}
prompt_bigfade_setup () {
local fadebar=${1:-'blue'}
local userhost=${2:-'white'}
local date=${3:-'white'}
local cwd=${4:-'yellow'}
local -A schars
autoload -Uz prompt_special_chars
prompt_special_chars
PS1="%B%F{$fadebar}$schars[333]$schars[262]$schars[261]$schars[260]%B%F{$userhost}%K{$fadebar}%n@%m%b%k%f%F{$fadebar}%K{black}$schars[260]$schars[261]$schars[262]$schars[333]%b%f%k%F{$fadebar}%K{black}$schars[333]$schars[262]$schars[261]$schars[260]%B%F{$date}%K{black} %D{%a %b %d} %D{%I:%M:%S%P}$prompt_newline%B%F{$cwd}%K{black}%d>%b%f%k "
PS2="%B%F{$fadebar}$schars[333]$schars[262]$schars[261]$schars[260]%b%F{$fadebar}%K{black}$schars[260]$schars[261]$schars[262]$schars[333]%F{$fadebar}%K{black}$schars[333]$schars[262]$schars[261]$schars[260]%B%F{$fadebar}>%b%f%k "
prompt_opts=(cr subst percent)
}
prompt_bigfade_preview () {
if (( ! $#* )); then
prompt_preview_theme bigfade
print
prompt_preview_theme bigfade red white grey white
else
prompt_preview_theme bigfade "$@"
fi
}
prompt_bigfade_setup "$@"
现在,虽然这一切都很好,但我想对提示做一些更改。例如,我不需要特殊符号 '2��' 。
另外,最后提示符以 > 结尾。我想将其结束为 $ (类似于 bash) 。有人可以帮忙吗?
答案1
此主题的推荐字体:UTF-8、nexus、vga 或类似字体。
如果没有这些,8 位字符可能看起来很愚蠢。
你在剧本中读过这条评论,不是吗? ☺
该prompt_special_chars
模块正在设置一个名为的数组变量schars
,其中包含各种字符的输出序列,然后在提示中使用这些字符,如您所见。主要是白描字和块字。该prompt_special_chars
模块就位于您正在查看的模块旁边。
prompt_special_chars
您的终端(模拟器)显然已正确配置为识别放入这些字符串中的UTF-8 编码输出。 (这是一件好事,考虑到 Debian 的人们,现在已经是 2016 年 12 月了,正在重新提出彻底废除 Debian 中任何非 UTF-8 终端模拟器的提案。)但它缺乏相关字形的字体支持,并且正在替换替换字符因为您的字体没有实际的线条图和方框字符。
因此,正如评论所说,请使用包含这些 Unicode 线条画和块字符的字体来设置您的终端模拟器。例如,寻找具有 Windows Glyph List 4 (WGL4) 全部功能的字体。
如果你不喜欢块状字符,那么提示设计这是主要的一点不适合你。你本质上是在说你喜欢提示设计,但你不喜欢它所做的独特之处,这是一个矛盾。块字符用于名称“bigfade”中的“颜色淡入淡出”效果。
答案2
@jdeBP - 谢谢你,你提供了第一个线索。
这是我得到的输出 -
然后我抬头看看字体是否不存在 -
> aptitude search xfonts-nexus
i xfonts-nexus - Nexus font for X
我意识到字体就在那里,那么剩下的唯一可能性是控制台,即 .zsh 尚未被告知它需要使用 utf-8,并且已通过 - 确认了这一点
> locale
LANG=en_IN
LANGUAGE=en_IN:en
LC_CTYPE="en_IN"
LC_NUMERIC="en_IN"
LC_TIME="en_IN"
LC_COLLATE="en_IN"
LC_MONETARY="en_IN"
LC_MESSAGES="en_IN"
LC_PAPER="en_IN"
LC_NAME="en_IN"
LC_ADDRESS="en_IN"
LC_TELEPHONE="en_IN"
LC_MEASUREMENT="en_IN"
LC_IDENTIFICATION="en_IN"
LC_ALL=
意识到这一点后,我知道我需要做什么,从如何在 Linux 控制台中启用 UTF-8 支持?@GAD3R 的答案。
我刚刚添加了这些位 -
/home/shirish> cat ~/.zsh/.zshrc | grep UTF-8
export LC_ALL=en_IN.UTF-8
export LANG=en_IN.UTF-8
export LANGUAGE=en_IN.UTF-8
为提示找到这些位 -
/home/shirish> source ~/.zsh/.zshrc
并得到了正确的提示 -
看到那个语言环境也不错,现在就正确了。
/home/shirish> locale
LANG=en_IN.UTF-8
LANGUAGE=en_IN.UTF-8
LC_CTYPE="en_IN.UTF-8"
LC_NUMERIC="en_IN.UTF-8"
LC_TIME="en_IN.UTF-8"
LC_COLLATE="en_IN.UTF-8"
LC_MONETARY="en_IN.UTF-8"
LC_MESSAGES="en_IN.UTF-8"
LC_PAPER="en_IN.UTF-8"
LC_NAME="en_IN.UTF-8"
LC_ADDRESS="en_IN.UTF-8"
LC_TELEPHONE="en_IN.UTF-8"
LC_MEASUREMENT="en_IN.UTF-8"
LC_IDENTIFICATION="en_IN.UTF-8"
LC_ALL=en_IN.UTF-8
(咆哮)-感谢您了解到废除 Debian 中不支持 utf-8 的终端模拟器的提议。我将阅读整个线程,但实际上会说,这不仅仅是终端,而是每个应用程序。应该是utf-8,而且Debian的默认字体应该是utf-8。尽管除非其他事情先就位,否则最后一部分不可能发生。我不必在 .zshrc 中输入 UTF-8 凭据,它们应该是默认体验的一部分。 (/咆哮)