Ubuntu下安装oh-my-zsh

[转]http://www.jianshu.com/p/9a5c4cb0452d

http://blog.csdn.net/z3512498/article/details/51245853

默认状况下Termial样式

Ubuntu系统默认状况下的终端样式如下:


Ubuntu default terminal's style

有个知名的神奇:Oh-My-Zsh 可以让终端及美观又实用:


Oh-My-Zsh agnoster theme install powerline font

今天就一步步的记录我安装Oh My Zsh 的过程

安装Oh-My-Zsh

安装Oh-My-Zsh之前必须安装zsh,否则会收到如下提示:


Zsh is not installed! Please install zsh first!

安装zsh:

  1. sudo apt-get install zsh安装zsh
  2. zsh --version确认是否安装成功
  3. sudo chsh -s $(which zsh)设置zsh为默认shell
  4. 注销重新登录

设置完成之后,终端变成如下样式:


ubuntu zsh style
  1. echo $SHELL确认zsh是否是默认SHELL,输出/usr/bin/zsh

安装Oh-My-Zsh

  1. 使用curl方式安装:
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
  1. 默认安装完成Oh-My-Zsh的样式如下:(重启终端后有效)

  1. Oh-My-Zsh的默认配置文件在:~/.zshrc

  2. 编辑~/.zshrc修改主题为:agnoster,效果:

修改:


Oh-My-Zsh agnoster theme configuration

修改后:


Oh-My-Zsh agnoster theme example

修改Oh-My-Zsh agnoster匹配字体

从上图我们可以明显的发现,显示效果中有乱码,这是因为字体没适配。我们需要下载支持Powerline的字体。

默认Ubuntu 终端使用的是 Ubuntu mono regular字体 13字号,体会成Ubuntu Mono derivative Powerline字体后,效果如下:


Oh-My-Zsh agnoster theme install powerline font

进一步优化

精简 user@hostname:

1、网上对这个的处理大多是打开bashrc然后修改PS1或者重新定义修改PS1,但oh_my_zsh的shell是zsh,明显不能在.bashrc中改。
不信可以在终端输入

echo $PS1

或者

 echo $PROMPT

可以看到其定义为

 %{%f%b%k%}$(build_prompt) 

 

这和bashrc里PS1的定义是不同的,根本无从下手。于是又有人说那就在.zshrc中改咯,我试过,发现改了以后终端的显示会不正常,比如linux的指令都有返回值,一般为0,其他表示运行错误之类。oh_my_zsh是可以用符号提醒用户的上一个指令是否执行成功的,如果在.zshrc重新定义PS1,这个功能将会失效。所以只能用特别的方式啦。

3、解决办法:按照1中链接的安装方式,oh_my_zsh的主题和设置会被复制到主目录下,只要在终端输入

 cd ~/.oh-my-zsh/themes

然后输入

echo $ZSH_THEME

查看自己主题,我的是agnoster,然后输入

vi agnoster.zsh-theme

可以看到最下面对build_prompt的定义为

## Main prompt
build_prompt() {
 RETVAL=$?
 prompt_status
 prompt_virtualenv
 prompt_context
 prompt_dir
 prompt_git
 prompt_hg
 prompt_end
}

 

build_prompt的定义像个结构体(实际是什么我不太懂),但agnoster.zsh-theme中对build_prompt里的每个成员都有定义,从prompt_context的定义

# Context: user@hostname (who am I and where am I)
prompt_context() {
  if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then
prompt_segment black default "%(!.%{%F{yellow}%}.)$USER@%m"
  fi
}

 

可以看出这个就是定义用户名和域名的地方,只要把build_prompt的定义修改为如下:

## Main prompt
build_prompt() {
  RETVAL=$?
  prompt_status
  prompt_virtualenv
 #prompt_context
  prompt_dir
  prompt_git
  prompt_hg
  prompt_end
}

 

即把prompt_context用#注释掉即可,以后需要修改其他东西也可到这里修改。

posted @ 2017-02-17 23:22  LinKArftc  阅读(853)  评论(0)    收藏  举报