macOS Zsh 使用 oh-my-zsh 打造高效便捷的 shell 环境

作者主页:www.sysin.org,转载请保留出处。

OMZLogo

在 Unix/Linux 的世界里,人机交互的工具就是 shell 了,由于各个发行版的系统默认 shell 都是 bash,所以 bash 的知名度是最高的。其实还有一款效率远超 bash 的 shell,叫做 zsh。zsh 同样历史悠久,发布于 1990 年,只比 bash 晚一年,而且 zsh 相比 bash 有很多功能上、性能上的改进。想要了解两者具体有那些差别,可以查看 这篇文章

zsh 虽然很优秀,但在初期配置上太过繁琐,流行率一直不高,直到 github 上 oh-my-zsh 项目的出现,使大家使用 zsh 的便捷性大大提高,从 macOS Catalina 版开始默认使用 zsh,使得 zsh 得到了更加广泛的关注。

很重要的一点,zsh 完全兼容 bash,如果你的 bash 脚本开头是以 !#/bin/bash 的话,在 zsh 下还是完全兼容 bash 的。

Mac 系统内置了几种 shell:

cat /etc/shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/dash
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

1. 使用 zsh 作为默认 shell

从 macOS Catalina 版开始,您的 Mac 将使用 zsh 作为默认登录 Shell 和交互式 Shell。您还可以在较低版本的 macOS 中将 zsh 设置为默认 Shell。

chsh -s /bin/zsh

参看:在 Mac 上将 zsh 用作默认 Shell

2. 安装 oh-my-zsh

自动安装

sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

也可以手动安装:

手动安装

下载 oh-my-zsh

git clone --depth=1 https://github.com/ohmyzsh/ohmyzsh.git ~/.oh-my-zsh

备份原有 ~/.zshrc(如果有)

cp ~/.zshrc ~/.zshrc.bak

从模板创建 zsh 配置文件

cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

3. 更改 zsh 主题

主题样式 这里 查看。

vi ~/.zshrc
# 找到
ZSH_THEME="robbyrussell"
# 例如修改为
ZSH_THEME="ys"

快速修改:

sed -i '/^ZSH_THEME=.*/c ZSH_THEME="ys"' ~/.zshrc

注:主题文件在 ~/.oh-my-zsh/themes 目录

修改配置后,通过 source ~/.zshrc 或者退出重新登录使配置生效。

4. 别名 alias

我们看下 git 的别名:

cat ~/.oh-my-zsh/plugins/git/git.plugin.zsh
......

alias g='git'

alias ga='git add'
alias gaa='git add --all'
alias gapa='git add --patch'
alias gau='git add --update'
alias gav='git add --verbose'
alias gap='git apply'
alias gapt='git apply --3way'

......

自定义别名,在 ~/.zshrc 中,最下面直接写即可。

# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"
alias ll='ls -lahFT'
# 直接命令加入
echo 'alias ll="ls -lahFT"' >> ~/.zshrc

更强大的 alias 命令,比如下面命令,当你在 zsh 环境下输入 hello.py 即可直接用 vim 打开文件编辑,一个 tgz 的文件即可自动解压缩。

alias -s py=vim
alias -s conf=vim
alias -s tgz='tar zxvf'

5. 命令自动补全

内置自动补全功能

默认 oh-my-zsh 命令自动补全功能如下:

  • 自动列出目录

    输入 cd 按 tab 键,目录将自动列出,在按 tab 可以切换

  • 自动目录名简写补全

    要访问 /usr/local/bin 这个长路径,只需要 cd /u/l/b 按 tab 键自动补全

  • 自动大小写更正

    要访问 Desktop 文件夹,只需要 cd de 按 tab 键自动补全,或者查看 README.md,只需要 cat rea 自动更正补全

  • 自动命令补全

    输入 kubectl 按 tab 键即可看到可用命令

  • 自动补全命令参数

    输入 kill 按 tab 键会自动显示出进程的 process id

小技巧:

可以忽略 cd 命令,输入 .. 或者 ... 和当前目录名都可以跳转。

上述功能不需要额外的插件。

另外还有一些插件来增强命令补全,可根据需要启用:

zsh-completions

额外的自动补全功能,用于补充 zsh 中尚不支持的命令补全,该项目将在完善时合并到 zsh。

比如 Homebrew 的补全功能:可以解决 brew 及 brew 安装的(部分)指令仍然没有补全功能的问题。

  • Clone the repository inside your oh-my-zsh repo:

    git clone --depth=1 https://github.com/zsh-users/zsh-completions ${ZSH_CUSTOM:-${ZSH:-~/.oh-my-zsh}/custom}/plugins/zsh-completions
    
  • Add it to FPATH in your .zshrc by adding the following line before source "$ZSH/oh-my-zsh.sh":

    fpath+=${ZSH_CUSTOM:-${ZSH:-~/.oh-my-zsh}/custom}/plugins/zsh-completions/src
    

Note: adding it as a regular Oh My ZSH! plugin will not work properly (see #603).

手动下载安装的应用程序如果提供了补全文件,复制到上述 src 目录下即可生效。

或者也可以通过 brew 安装:

$ brew install zsh-completions
==> Downloading https://ghcr.io/v2/homebrew/core/zsh-completions/manifests/0.33.
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/zsh-completions/blobs/sha256:ea
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sh
######################################################################## 100.0%
==> Pouring zsh-completions--0.33.0_1.all.bottle.tar.gz
==> Caveats
To activate these completions, add the following to your .zshrc:

  if type brew &>/dev/null; then
    FPATH=$(brew --prefix)/share/zsh-completions:$FPATH

    autoload -Uz compinit
    compinit
  fi

You may also need to force rebuild `zcompdump`:

  rm -f ~/.zcompdump; compinit

Additionally, if you receive "zsh compinit: insecure directories" warnings when attempting
to load these completions, you may need to run this:

  chmod -R go-w '/usr/local/share/zsh'

zsh-autosuggestions

作用是根据历史输入命令的记录即时的提示(建议补全),然后按 → 键即可补全。

git clone --depth=1 https://github.com/zsh-users/zsh-autosuggestions.git ${ZSH_CUSTOM:-${ZSH:-~/.oh-my-zsh}/custom}/plugins/zsh-autosuggestions

编辑 ~/.zshrc,找到 plugins=(git) 这一行,修改为:

plugins=(
git
# other plugins…
zsh-autosuggestions
)

Incremental completion on zsh

增强的实时自动命令补全插件:Incremental completion on zsh

该插件对性能似乎有一点点影响,请根据需要启用。

作用如图:

incr

mkdir $ZSH_CUSTOM/plugins/incr
curl -fsSL https://mimosa-pudica.net/src/incr-0.2.zsh -o $ZSH_CUSTOM/plugins/incr/incr.zsh
echo 'source $ZSH_CUSTOM/plugins/incr/incr.zsh' >> ~/.zshrc
source ~/.zshrc

6. 语法高亮插件

插件名称:zsh-syntax-highlighting

作用:命令错误会显示红色,直到你输入正确才会变绿色,另外路径正确会显示下划线。

安装:

git clone --depth=1 https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

配置启用插件:

编辑 ~/.zshrc,以下部分添加插件的名字

plugins=([plugins...] zsh-syntax-highlighting)

7. 相关网站

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值