强大的终端工具ohMyZsh

想第一时间获取我的最新文章,请关注公众号: 技术特工队

前言

今天给大家介绍一款强大的终端工具,一般系统默认的终端一般都很鸡肋,要么功能不够智能,要么就是不够美观,这怎么能够体现程序员高大上的逼格呢,所以今天就给大家介绍一款强大的终端工具 oh-my-zsh.

先来看张我的终端
image

那么有什么强大的功能呢?

  1. 智能提示
  2. 自动跳转
  3. 智能纠错
  4. 与git 等工具高度集成
  5. 历史记录功能
  6. 目录跳转等

上面只是我觉得很好用的一些功能,这只是冰山一角,还有其他很多的插件功能,反正一句话就是用了之后你就忘不掉的一个终端。

什么是 ohMyZsh 介绍

首先的介绍下 ZshZsh 是一款强大的虚拟终端,既是一个系统的虚拟终端,也可以作为一个脚本语言的交互解析器。且其兼容Bash,能够为其补充很多强大的功能。那么 Oh My Zsh 是一款社区驱动的命令行工具,正如它的主页上说的,Oh My Zsh 是一种生活方式。它基于zsh命令行,提供了主题配置,插件机制,已经内置的便捷操作。给我们一种全新的方式使用命令行。
ohMyZsh 拥有 200+ 的插件,及140+ 的主题样式,供你任意搭配定制。

安装ohMyZsh

  1. 通过 curl 方式安装

    1
    sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
  2. 通过wget 方式安装

    1
    sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

如果提示有文件没权限,可使用 sudo 命令进行安装。

安装完成后,验证是否安装成功。

如果输入 zsh --version 输出版本号则为安装成功。

使用 chsh -s $(which zsh) 讲默认的shell切换为zsh,然后通过 $SHELL 检查是否设置成功,如果输出为 /bin/zsh, 则切换默认为zsh 成功。

配置主题

ohMyZsh拥有很多的主题及插件,可以按照自己的需求来定制,那么怎么配置呢?
ohMyZsh 所有的配置都在用户根目录下面的 ~/.zshrc 文件中进行配置。

主题文件的种类及样式可以到网页上查看 https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
默认安装就会有很多的主题样式可供配置了,本地主题的文件路径为 ~/.oh-my-zsh/themes 可以进行查看。

喜欢某个主题只需要在 zshrc 文件中的 ZSH_THEME="XXX"(XXX 为主题名) 例如我的主题为 ZSH_THEME="agnoster" (安装这个主题需要安装字体库,因为其中用到了特殊字符),具体安装教程可参考官方 https://github.com/agnoster/agnoster-zsh-theme ,下面也有一些我遇到的问题汇总,如果还有问题可在公众号上留言与我交流。

样式如下:
agnoster

配置插件

插件的种类实在是太多了,以至于有些插件的功能都不清楚,只能说是有需求的时候再去插件库找找是否有满足自己需求的插件。
插件库地址如下: https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins
本地安装的插件库地址为 ~/.oh-my-zsh/plugins

添加插件的方法为在~/.zshrc 中,按照下面的格式将插件名称填入即可,如下:

1
2
3
4
5
6
7
8
plugins=(
zsh-autosuggestions
git
brew
adb
npm
gradle
)

之后则可以体检到这些插件给你带来的便捷。

异常问题汇总

1. 终端显示异常

使用 agnoster 主题时, 显示的当前路径及分支信息出现部分乱码,显示很乱。

解决办法:
首先按照https://github.com/agnoster/agnoster-zsh-theme进行安装,记得一定要安装字体。
推荐使用iterm2 然后在 iTerm -> Preferences -> Profiles -> Text
在下方将 use a different font for non-ASCll text 去掉勾选即可。

2. 默认终端显示名字过长

默认显示了 username@host.machine 显得很长, 不美观。

解决办法:

  • 方法1. 在 .zshrc 中添加 DEFAULT_USER="$USER"
  • 方法2. 在.zshrc 最末尾,添加下面脚本
1
2
3
4
5
prompt_context() {
if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then
prompt_segment black default "%(!.%{%F{yellow}%}.)$USER"
fi
}

3. 使用 ohmyzsh 后,~/.bash_profile 及 ~/.bashrc 不起作用

解决办法:
这是由于默认使用是zsh, 所以不会按照/etc/profile --> /etc/paths ---> ~/.bash_profile ---> ~/.bash_login ---> ~/.profile ---> ~/.bashrc
所以需要在~/.zshrc 的末尾加上加载文件的脚本,如下:

1
2
3
4
5
6
7
if [ -f ~/.bash_profile ]; then
source ~/.bash_profile
fi

if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi

退出终端,然后重新加载即可。

WangXin wechat
欢迎订阅我的微信公众号,第一时间获取最新文章!
坚持原创技术分享,您的支持将鼓励我继续创作!