MAC平台下的zsh还是最好用的,不过配置起来确实略微麻烦,尤其是涉及到FQ访问gitHub比较麻烦,没有网络还真不行。
1 下载安装iTerm2
官网地址: http://www.iterm2.com/
设置iTerm2无限滚屏:怕错过什么重要信息,那设置成无限滚屏吧!
Preferences - Profiles - Terminal - Scrollback Buffer - Unlimited scrollback
【常用快捷键】
⌘ + k
(command + k
): 清屏(有时需要查找特定信息,避免上一次输出的干扰,可以先清屏再执行)⌃ + a
(control + a
):光标放行首(麻麻再也不担心我把光标移动到最后要靠手速了。)⌃ + e
(control + e
):光标放行尾⌘ + f
(command + f
):(调出查找框)查找^ + c
(control + c
):取消当前行(当前行已经输入很多了,想删除,不需要按住delete键逐字符删滴- -)⌘ + enter
(command + enter
):切换全屏(沉浸于shell中,慢慢爱上敲回车的感觉……但是,忽地一下,shell铺满屏幕了!如果不知道这个快捷键的话,有点儿秀不起来呀。——个人感觉,手速快的时候,误触还是时有发生滴。)
2 安装HomeBrew
大部分Mac系统已经自带Homebrew,查看是否安装方法:
brew --version
若提示无brew命令,则执行如下命令安装,可以参照官网https://brew.sh/
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
3 更换终端默认Shell为zsh
Bash作为大多数系统默认安装的Shell,大家都多少有所接触,Zsh和Bash类似都是一个Shell,但是Zsh更注重用户体验和与人的交互,OS X默认也安装好了Zsh,然而你想自己从头开始配置一个顺手的Zsh是比较浪费时间的,有人已经帮我们配置好了,这个流行的Zsh配置叫---Oh My ZSH!,直观的效果如下图所示,代码开源在github。
Mac OS X默认已经安装好了Zsh,你可以打开终端,输入zsh --version
来确认,如果没有安装,请参考这个文档。
打开终端输入下面的命令,切换默认Shell为Zsh:
chsh -s /bin/zsh
关闭终端重新打开后,你将默认使用zsh作为终端Shell。然而你会发现,终端并没有变得多酷炫,接着往下走,安装Oh My ZSH!
4 安装oh-my-zsh
使用以下命令可以安装:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
我自己安装的时候是开了阿里郎代理,但是终端不知道为啥总是报错说 SSH:443 拒绝访问。但是可以直接用如下命令把仓库下载下来(或者直接下载zip文件也行):
git clone git@github.com:ohmyzsh/ohmyzsh.git
然后把上面那个install.sh 直接用浏览器打开复制到文件中,直接用sh执行。脚本中的逻辑是先把 ohmyzsh.git 克隆到~/.oh-my-zsh 目录,然后执行后面到初始化设置逻辑。既然仓库已经下载并拷贝过去了,那么就将install.sh 中下载和检查到逻辑注释掉,仅执行后半部分的初始化设置逻辑好了。
5 修改oh-my-zsh 主题
ls ~/.oh-my-zsh/themes vim ~/.zshrc // 修改 ZSH_THEME的值,经典配色是agnoster source ~/.zshrc // 生效 // 如果想获得更多的主题可以从https://github.com/robbyrussell/oh-my-zsh/wiki/Themes#agnoster下载
6 解决乱码问题
由于agnoster和一些其他主题显示需要Powerline字符集支持,需要下载新的字符集
git clone git@github.com:powerline/fonts.git cd fonts ./install.sh
打开iTerm2:偏好设置 -> Profiles -> Text -> change Font -> Roboto Mono for Powerline
7 隐藏zsh前面用户名/主机名
修改vim ~/.zshrc文件,在文件底部增加:
prompt_context() {}
只保留用户名,隐藏主机名
prompt_context() { if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then prompt_segment black default "%(!.%{%F{yellow}%}.)$USER" fi }
只保留主机名,隐藏用户名
prompt_context() { if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then prompt_segment black default "%(!.%{%F{yellow}%}.)$HOST" fi }
8 厉害的zsh插件
下面着重介绍一个好用的插件AutoJump,举个连个栗子介绍下AutoJump的强大。
正常情况下需要一层层敲入
cd /Users/fanyu/Workspace/youku/new_reform/AppWrapper/OnePlayer
如果用autojump 则只需敲 j OneP ,两下shift 会自动生成关联,选择对应数字就能进入。autojump 支持在任意目录进入任意目录。
【安装方法可参考】https://github.com/wting/autojump/wiki
(2) zsh-autosuggestions
计算题:我输入了
echo hello
指令,然后又输入了19条指令。接着又输入echo world
指令。这个时候,我想找到历史指令echo hello
,需要按几次上键?
答案是:输入echo
按*两下*上键就可以啦。
autosuggestions插件
会记录已经执行过的的指令。下次输入指令的时候,会智能提示。
额外地,只输入几个字符,然后按上键查找历史指令的时候,结果集合里所有的指令都是以已输入字符开头的。
(3) zsh-syntax-highlighting
问题:
mkdir
和mkdri
有什么不一样。有时候,敲错了指令,但是出错了才意识到。zsh-syntax-highlighting可以提前发现这个小问题
zsh-syntax-highlighting插件
做了一件极简的事情:认识的指令显示为绿色,不认识的指令显示为红色。(当然,不认识的指令继续按回车,得到的将是:command not found
错误提示。)
额外地,它还能检查括号是不是匹配。
8.1 安装autojump
brew install autojump
修改~/.zshrc
文件,找到plugins字段,添加autojump。
默认是这样的: plugins=( git ) 修改为: plugins=( git autojump )
8.2 安装auto suggestions
git clone git://github.com/zsh-users/zsh-autosuggestions ~/Documents/.zsh-suggestions ln -s ~/Documents/.zsh-suggestions ~/.oh-my-zsh/plugins/zsh-autosuggestions
修改~/.zshrc
文件,找到plugins字段,添加suggestions。修改后的样子大概是这样:
plugins=( git autojump zsh-autosuggestions )
8.3 安装syntax hightlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/Documents/.zsh-syntax-highlighting ln -s ~/Documents/.zsh-syntax-highlighting ~/.oh-my-zsh/plugins/zsh-syntax-highlighting
修改~/.zshrc
文件,找到plugins字段,添加highlighting。修改后的样子大概是这样:
plugins=( git autojump zsh-autosuggestions zsh-syntax-highlighting )