使用zsh+omz打造你的超级终端
自从走上了Linux这条路,就离不开终端了。。。
如果不好好折腾一下,真是对不起自己的老花眼了!
所以老高针对Mac(没有的赶紧买买买)下的iterm2进行了简单的定制,记录如下:
ps.此文会不定期更新
准备
什么!? 你还没有装iterm2、zsh和oh_my_zsh?
iterm2(目前最新版2.1.4) ---> 下载地址
zsh ---> 安装教程
安装powerline-shell
可以参考README安装:
可能遇到的问题
安装powerline字体,参考README安装:
报错/usr/bin/env: python2: No such file or directory
:
解决:
ln -s /usr/bin/python /usr/bin/python2
换主题
下载solarized主题
目测就solarized的dark版能看。。。
老高从github抓的,放心用吧
git clone https://github.com/altercation/solarized
# 老高从github抓的,放心用
git clone https://git.coding.net/phpgao/solarized.git
设置iterm主题
load新主题
在iterm2在设置-->Profiles-->Colors-->Load Presets 里导入刚才clone下来的iterm2-colors-solarized/Solarized Dark.itermcolors
,然后选择即可!
solarized主题的选择文字不好分辨,可以刚好在此设置一下!
设置字体
在设置-->Profiles-->Text中把字体都设置为带Powerline后缀的,目测ubuntu和Meslo系列的字体比较耐看!
设置zsh
ps.这里最重要!
创建新主题文件
在文件夹~/.oh-my-zsh/themes
中新建主题文件,名称自定:如laogao.zsh-theme
,后面会用到。
下面的内容参考Mac OS X & Oh My ZSH Theme on iTerm2,将下面的内容保存到刚才的文件中!
if [ "$POWERLINE_DATE_FORMAT" = "" ]; then
POWERLINE_DATE_FORMAT=%D{%Y-%m-%d}
fi
if [ "$POWERLINE_RIGHT_B" = "" ]; then
POWERLINE_RIGHT_B=%D{%H:%M:%S}
elif [ "$POWERLINE_RIGHT_B" = "none" ]; then
POWERLINE_RIGHT_B=""
fi
if [ "$POWERLINE_RIGHT_A" = "mixed" ]; then
POWERLINE_RIGHT_A=%(?."$POWERLINE_DATE_FORMAT".%F{red}✘ %?)
elif [ "$POWERLINE_RIGHT_A" = "exit-status" ]; then
POWERLINE_RIGHT_A=%(?.%F{green}✔ %?.%F{red}✘ %?)
elif [ "$POWERLINE_RIGHT_A" = "date" ]; then
POWERLINE_RIGHT_A="$POWERLINE_DATE_FORMAT"
fi
if [ "$POWERLINE_HIDE_USER_NAME" = "" ] && [ "$POWERLINE_HIDE_HOST_NAME" = "" ]; then
POWERLINE_USER_NAME="%n@"'%M'
elif [ "$POWERLINE_HIDE_USER_NAME" != "" ] && [ "$POWERLINE_HIDE_HOST_NAME" = "" ]; then
POWERLINE_USER_NAME="@%M"
elif [ "$POWERLINE_HIDE_USER_NAME" = "" ] && [ "$POWERLINE_HIDE_HOST_NAME" != "" ]; then
POWERLINE_USER_NAME="%n"
else
POWERLINE_USER_NAME="λ"
fi
POWERLINE_CURRENT_PATH="%d"
if [ "$POWERLINE_FULL_CURRENT_PATH" = "" ]; then
POWERLINE_CURRENT_PATH="%1~"
fi
if [ "$POWERLINE_GIT_CLEAN" = "" ]; then
POWERLINE_GIT_CLEAN="✔"
fi
if [ "$POWERLINE_GIT_DIRTY" = "" ]; then
POWERLINE_GIT_DIRTY="✘"
fi
if [ "$POWERLINE_GIT_ADDED" = "" ]; then
POWERLINE_GIT_ADDED="%F{green}✚%F{black}"
fi
if [ "$POWERLINE_GIT_MODIFIED" = "" ]; then
POWERLINE_GIT_MODIFIED="%F{blue}✹%F{black}"
fi
if [ "$POWERLINE_GIT_DELETED" = "" ]; then
POWERLINE_GIT_DELETED="%F{red}✖%F{black}"
fi
if [ "$POWERLINE_GIT_UNTRACKED" = "" ]; then
POWERLINE_GIT_UNTRACKED="%F{yellow}✭%F{black}"
fi
if [ "$POWERLINE_GIT_RENAMED" = "" ]; then
POWERLINE_GIT_RENAMED="➜"
fi
if [ "$POWERLINE_GIT_UNMERGED" = "" ]; then
POWERLINE_GIT_UNMERGED="═"
fi
ZSH_THEME_GIT_PROMPT_PREFIX=" \ue0a0 "
ZSH_THEME_GIT_PROMPT_SUFFIX=""
ZSH_THEME_GIT_PROMPT_DIRTY=" $POWERLINE_GIT_DIRTY"
ZSH_THEME_GIT_PROMPT_CLEAN=" $POWERLINE_GIT_CLEAN"
ZSH_THEME_GIT_PROMPT_ADDED=" $POWERLINE_GIT_ADDED"
ZSH_THEME_GIT_PROMPT_MODIFIED=" $POWERLINE_GIT_MODIFIED"
ZSH_THEME_GIT_PROMPT_DELETED=" $POWERLINE_GIT_DELETED"
ZSH_THEME_GIT_PROMPT_UNTRACKED=" $POWERLINE_GIT_UNTRACKED"
ZSH_THEME_GIT_PROMPT_RENAMED=" $POWERLINE_GIT_RENAMED"
ZSH_THEME_GIT_PROMPT_UNMERGED=" $POWERLINE_GIT_UNMERGED"
ZSH_THEME_GIT_PROMPT_AHEAD=" ⬆"
ZSH_THEME_GIT_PROMPT_BEHIND=" ⬇"
ZSH_THEME_GIT_PROMPT_DIVERGED=" ⬍"
if [ "$POWERLINE_SHOW_GIT_ON_RIGHT" = "" ]; then
if [ "$POWERLINE_HIDE_GIT_PROMPT_STATUS" = "" ]; then
POWERLINE_GIT_INFO_LEFT=" %F{blue}%K{white}"$'\ue0b0'"%F{white}%F{black}%K{white}"$'$(git_prompt_info)$(git_prompt_status)%F{white}'
else
POWERLINE_GIT_INFO_LEFT=" %F{blue}%K{white}"$'\ue0b0'"%F{white}%F{black}%K{white}"$'$(git_prompt_info)%F{white}'
fi
POWERLINE_GIT_INFO_RIGHT=""
else
POWERLINE_GIT_INFO_LEFT=""
POWERLINE_GIT_INFO_RIGHT="%F{white}"$'\ue0b2'"%F{black}%K{white}"$'$(git_prompt_info)'" %K{white}"
fi
if [ $(id -u) -eq 0 ]; then
POWERLINE_SEC1_BG=%K{red}
POWERLINE_SEC1_FG=%F{red}
else
POWERLINE_SEC1_BG=%K{green}
POWERLINE_SEC1_FG=%F{green}
fi
POWERLINE_SEC1_TXT=%F{black}
if [ "$POWERLINE_DETECT_SSH" != "" ]; then
if [ -n "$SSH_CLIENT" ]; then
POWERLINE_SEC1_BG=%K{red}
POWERLINE_SEC1_FG=%F{red}
POWERLINE_SEC1_TXT=%F{white}
fi
fi
PROMPT="$POWERLINE_SEC1_BG$POWERLINE_SEC1_TXT $POWERLINE_USER_NAME %k%f$POWERLINE_SEC1_FG%K{blue}"$'\ue0b0'"%k%f%F{white}%K{blue} "$POWERLINE_CURRENT_PATH"%F{blue}"$POWERLINE_GIT_INFO_LEFT" %k"$'\ue0b0'"%f "
if [ "$POWERLINE_NO_BLANK_LINE" = "" ]; then
PROMPT="
"$PROMPT
fi
if [ "$POWERLINE_DISABLE_RPROMPT" = "" ]; then
if [ "$POWERLINE_RIGHT_A" = "" ]; then
RPROMPT="$POWERLINE_GIT_INFO_RIGHT%F{white}"$'\ue0b2'"%k%F{black}%K{white} $POWERLINE_RIGHT_B %f%k"
elif [ "$POWERLINE_RIGHT_B" = "" ]; then
RPROMPT="$POWERLINE_GIT_INFO_RIGHT%F{white}"$'\ue0b2'"%k%F{240}%K{white} $POWERLINE_RIGHT_A %f%k"
else
RPROMPT="$POWERLINE_GIT_INFO_RIGHT%F{white}"$'\ue0b2'"%k%F{black}%K{white} $POWERLINE_RIGHT_B %f%F{240}"$'\ue0b2'"%f%k%K{240}%F{255} $POWERLINE_RIGHT_A %f%k"
fi
fi
编辑.zshrc
讲下面的内容追加到你的~/.zshrc
文件中!
ZSH_THEME="laogao"
POWERLINE_HIDE_USER_NAME="true"
POWERLINE_HIDE_HOST_NAME="true"
POWERLINE_DETECT_SSH="true"
POWERLINE_GIT_CLEAN="✔"
POWERLINE_GIT_DIRTY="✘"
POWERLINE_GIT_ADDED="%F{green}✚%F{black}"
POWERLINE_GIT_MODIFIED="%F{blue}✹%F{black}"
POWERLINE_GIT_DELETED="%F{red}✖%F{black}"
POWERLINE_GIT_UNTRACKED="%F{yellow}✭%F{black}"
POWERLINE_GIT_RENAMED="➜"
POWERLINE_GIT_UNMERGED="═"
# 开启等待红点
COMPLETION_WAITING_DOTS="true"
# 加入一些插件
plugins=(git autojump mvn gradle brew rails3 git-flow capistrano zeus textmate ruby osx)
source $ZSH/oh-my-zsh.sh
删除OMZ
如果用腻了想删除,很简单!
rm ~/.oh-my-zsh
老高,我的oh my ssh 配置好以后进去是这样的 λ ? ~ ? ? 不知道哪里来的问号,我是英文系统,完全按照你的教程来的
修改主题文件,把λ 改成你想要的名字就好了
fisherman 是一款零配置,并发的 fish shell 插件管理器。
https://github.com/fisherman/fisherman/tree/master/docs/zh-CN
不错,以后试试
https://github.com/fisherman/fisherman/wiki/%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87
老高,谢谢你,花了一下午在研究,不停的试错,这次终于弄好了,时间花了很多,但是过程很享受^_^,就是还有一个问题想请教下,怎么把这些”YeMing YeMingdeMacBook-Pro“换成简短的字符代替,基本被这些占的没地方
在oh my zsh的rc文件里改
老高,我好像出问题了,按道理复制了你的代码应该和你显示的一样,为什么我的user和hostname又出来了,我再琢磨看看
if [ "$POWERLINE_HIDE_USER_NAME" = "" ] && [ "$POWERLINE_HIDE_HOST_NAME" = "" ]; then
POWERLINE_USER_NAME="%n@"'%M'
elif [ "$POWERLINE_HIDE_USER_NAME" != "" ] && [ "$POWERLINE_HIDE_HOST_NAME" = "" ]; then
POWERLINE_USER_NAME="@%M"
elif [ "$POWERLINE_HIDE_USER_NAME" = "" ] && [ "$POWERLINE_HIDE_HOST_NAME" != "" ]; then
POWERLINE_USER_NAME="%n"
else
POWERLINE_USER_NAME="λ"
fi
这一段换成 POWERLINE_USER_NAME="λ"
改完要source或者注销一下才能看到变化
还是不行,看来想完全弄好,应该从根本把这些代码看懂弄懂,老高这些都是shell编程语言吗还是什么,我想学会自己去定制按照自己的想法
我用了fish和oh-my-fish……其实大同小异
oh-my-fish是基于fish做的插件管理器噢,两者不是对立的。
如何删除 我要重装,上次没有设置好
rm -rf ~/.oh-my-zsh
➜ ~ ln -s ~/powerline-shell.py zsh: no such file or directory: path/to/powerline-shell.py 老高这个如何解决?
sudo brew install zsh 也试过了
bash-3.2# brew install zsh Error: Cowardly refusing to `sudo brew install` You can use brew with sudo, but only if the brew executable is owned by root. However, this is both not recommended and completely unsupported so do so at your own risk. bash-3.2# 现在用root权限,变成这样
Add the following to your .zshrc 修改后’➜ ~ ‘这个都没有了 ,是添加到最后一行吧 ZSH: Add the following to your .zshrc: function powerline_precmd() { PS1="$(~/powerline-shell.py $? --shell zsh 2> /dev/null)" } function install_powerline_precmd() { for s in "${precmd_functions[@]}"; do if [ "$s" = "powerline_precmd" ]; then return fi done precmd_functions+=(powerline_precmd) } if [ "$TERM" != "linux" ]; then install_powerline_precmd fi
没有用root 登录
先不要急,继续配置
➜ powerline-shell git:(master) ./install.py env: python2: No such file or directory ➜ powerline-shell git:(master) ln -s /usr/bin/python /usr/bin/python2 ln: /usr/bin/python2: Operation not permitted
你没有root权限吗?
这个以修改
ymqy是我,我重来过一遍,其实漏了个问题,把install.py里面第一行#!/usr/bin/env python2改成#!/usr/bin/env python,这样可以吗,因为出现下面的问题,你的解决方法不能用
这一步是可选的
修改zsh的配置文件.zshrc,还有这个在哪修改