zsh安装,参考 oh-my-zsh
默认的 PS1 为
PS1='[\u@\h \w]\$'
网上对这个的处理大多是打开
.bashrc
然后修改PS1
或者重新定义修改PS1
但
oh-my-zsh
的 shell 是zsh
,明显不能在.bashrc
中改
不信可以在终端输入
echo $PS1
或者
echo $PROMPT
可以看到其定义为
${ret_status} %{$fg[cyan]%}%~%{$reset_color%} $(git_prompt_info)
这和.bashrc
里PS1
的定义是不同的,根本无从下手。
于是又有人说那就在.zshrc
中改,我试过,发现改了以后终端的显示会不正常,比如linux
的指令都有返回值,一般为0
,其他表示运行错误之类。
oh_my_zsh
是可以用符号提醒用户的上一个指令是否执行成功的,如果在.zshrc
重新定义PS1
,这个功能将会失效。所以只能用特别的方式。
解决办法:按照1中链接的安装方式,oh_my_zsh
的主题和设置会被复制到主目录下,只要在终端输入
cd ~/.oh-my-zsh/themes
然后输入
echo $ZSH_THEME
查看自己主题,我的是robbyrussell,然后输入
vim robbyrussell.zsh-theme
可以看到
local ret_status="%(?:%{$fg_bold[green]%}➜ :%{$fg_bold[red]%}➜ )"
PROMPT='${ret_status} %{$fg[cyan]%}%~%{$reset_color%} $(git_prompt_info)'
ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}git:(%{$fg[red]%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} "
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}✗"
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})"
PROMPT
就是设置显示的用户名
由于oh_my_zsh
时常会有版本更新,为了避免我们修改的跟更新的版本有冲突,建议不要修改robbyrussell.zsh-theme
,而是将其拷贝出来,命名为自己的主题文件,比如叫做myrobbyrussell.zsh-theme
,然后只对myrobbyrussell.zsh-theme
进行修改。
修改后将 ~/.zshrc
中的
ZSH_THEME="robbyrussell"
改为
ZSH_THEME="myrobbyrussell"
这样就能避免冲突了。
参考设置
PROMPT='%{$fg[green]%}%m@%{$fg[magenta]%}%(?..%?%1v)%n:%{$reset_color%}%{$fg[cyan]%}%~#'
PROMPT='%{$fg_bold[red]%}-> %{$fg_bold[green]%}%p%{$fg[cyan]%}%d %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%}% %{$reset_color%}~#:'
PROMPT='%{$fg_bold[red]%}-> %{$fg_bold[green]%}%p%{$fg[cyan]%}%d %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%}% %{$fg[magenta]%}%(?..%?%1v)%{$reset_color%}~#: '
PROMPT='%{$fg_bold[red]%}-> %{$fg_bold[magenta]%}%n%{$fg_bold[cyan]%}@%{$fg[green]%}%m %{$fg_bold[green]%}%p%{$fg[cyan]%}%~ %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%}% %{$fg[magenta]%}%(?..%?%1v)%{$fg_bold[blue]%}? %{$fg[yellow]%}# '
code | info |
---|---|
%T | 系统时间(时:分) |
%* | 系统时间(时:分:秒) |
%D | 系统日期(年-月-日) |
%n | 你的用户名 |
%B - %b | 开始到结束使用粗体打印 |
%U - %u | 开始到结束使用下划线打印 |
%d | 你目前的工作目录 |
%~ | 你目前的工作目录相对于~的相对路径 |
%M | 计算机的主机名 |
%m | 计算机的主机名(在第一个句号之前截断) |
%l | 你当前的tty |
%n | 登录名 |