介绍

Oh My Zsh 是什么

  • Oh My Zsh 是一款社区驱动的命令行工具,正如它的主页上说的,Oh My Zsh 是一种生活方式。它基于 zsh 命令行,提供了主题配置,插件机制,已经内置的便捷操作。给我们一种全新的方式使用命令行。
  • Oh My Zsh 是基于 zsh 命令行的一个扩展工具集,提供了丰富的扩展功能。

官网

Oh My Zsh 官网

如果你有更多的兴趣,可以去官网了解详细情况。

准备

  • 安装zsh替换默认shell。macOS系统目前默认的shell就是zsh,其他Linux系统可能需要先安装zsh。

    检查是否安装zsh

    1
    
    which zsh
    

    如果显示为一个路径,例如/bin/zsh说明本地安装有zsh,且路径如上。可以跳过本节与下一节,进行oh-my-zsh的安装。如果显示zsh not found则需要安装zsh

    root 用户直接安装

    Ubuntu:

    1
    2
    
    apt install zsh #安装zsh
    chsh -s /bin/zsh #将zsh设置成默认shell(不设置的话直接输入zsh命令启动即可)
    

    Centos:

    1
    2
    
    yum install zsh
    chsh -s /bin/zsh
    

    其他操作系统同理。

    非 root 用户编译安装

    1
    2
    3
    4
    5
    
    wget -O zsh.tar.xz https://sourceforge.net/projects/zsh/files/latest/download --no-check-certificate
    mkdir zsh && unxz zsh.tar.xz && tar -xvf zsh.tar -C zsh --strip-components 1
    cd zsh
    ./configure --prefix=$HOME/zsh
    make && make install
    

    此处$HOME/zsh可以换成其他位置,例如$HOME/software/zsh

    如果在./configure出现问题,提示缺少ncurses

    1
    2
    3
    4
    5
    
    configure: error: "No terminal handling library was found on your system.
    This is probably a library called 'curses' or 'ncurses'.  You may
    need to install a package called 'curses-devel' or 'ncurses-devel' on your
    system."
    See `config.log' for more details
    

    则需要再编译安装ncurses

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    
    export CXXFLAGS="-fPIC"
    export CFLAGS="-fPIC"
    export NCURSES_HOME=$HOME/ncurses # 这里表示家目录的ncurses目录,可以自己设置
    export PATH=$NCURSES_HOME/bin:$PATH
    export LD_LIBRARY_PATH=$NCURSES_HOME/lib:$LD_LIBRARY_PATH
    export CPPFLAGS="-I$NCURSES_HOME/include" LDFLAGS="-L$NCURSES_HOME/lib"
    
    mkdir ncurses && cd ncurses
    # 按时间倒序,下载最新版本ncurses
    wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-XXX.tar.gz
    tar -xzvf ncurses-XXX.tar.gz
    cd ncurses-XXX
    
    # --prefix目录同上NCURSES_HOME
    ./configure --prefix=$HOME/ncurses --with-shared --without-debug --enable-widec
    make && make install
    

    安装完成后回到zsh目录,再次运行./configure --prefix=$HOME/zshmake && make install即可。

    安装完成后,在当前shell的配置文件(对bash.bashrcsh则是.profile)中加入环境变量,注意环境变量中zsh/bin位置应该和安装位置匹配:

    1
    
    export PATH=$HOME/zsh/bin:$PATH
    

    并且使当前环境变量生效(以.bashrc为例):

    1
    
    source ~/.bashrc
    

    此时可以通过zsh命令启动并切换到zsh,且which zsh也应该返回zsh的安装路径。

    将 zsh 设定为默认 shell

    通常,如果zsh为内置安装,可以通过chsh -s zsh在输入密码后修改默认 shell。

    但如果zsh是编译安装,chsh无法成功执行,则可以通过添加以下语句到默认 shell 配置文件例如 .bashrc 中(先确保zsh配置正确,which zsh能找到),从而实现登陆后自动启动切换:

    1
    2
    3
    4
    5
    
    if [[ ($- == *i*) && ($SSH_TTY) ]];
    then
    export SHELL=`which zsh`
    [ -z "$ZSH_VERSION" ] && exec "$SHELL" -l
    fi
    

    以上语句只对 ssh 访问生效,因此不会影响 SFTP 和远程调试等功能。

  • 安装git,同理使用apt或者yum包管理器安装即可。

  • 最后需要curl或者wget,安装方法同上。

安装

curl安装

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

wget安装

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

两种安装方式并没有什么不同。

主题

我通常是使用自带的 steeef 主题,还算简洁好用。

如果想要更换主题,只需要编辑~/.zshrc文件,把ZSH_THEME后面换成你喜欢的主题即可。

更换主题

使主题生效的方法也很简单,重新打开一个终端窗口或者输入以下命令:

1
source ~/.zshrc

.zshrc文件:

.zshrc文件与.bashrc文件作用是一样的。以前多数的unix系统默认shell都是bash,.bashrc文件就是bash的配置文件。

使用man bash命令查看到的联机帮助文件中的相关解释如下: .bashrc - The individual per-interactive-shell startup file.

这个文件主要保存个人的一些个性化设置,如命令别名、路径等。

每次修改.bashrc后,使用source ~/.bashrc(或者 . ~/.bashrc)就可以立刻加载修改后的设置,使之生效。一般会在.bash_profile文件中显式调用.bashrc。

登陆linux启动bash时首先会去读取~/.bash_profile文件,这样~/.bashrc也就得到执行了,你的个性化设置也就生效了。

插件

omz插件的管理是很简单的,有两个插件目录,其中 user 为你的用户名:

  • /Users/user/.oh-my-zsh/plugins

    官方插件目录。该目录已经预装了很多实用的插件,只需要手动激活;

  • /Users/user/.oh-my-zsh/custom/plugins

    第三方插件目录,快捷命令:$ZSH_CUSTOM/plugins

安装插件时只需要把插件下载到第三方插件目录即可,然后在 ~/.zshrc 配置文件中的 plugins 变量中添加对应插件的名称即可。

下载插件

zsh-syntax-highlighting

1
2
# 命令语法高亮
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

高亮效果

zsh-autosuggestions

1
2
# 命令自动补全
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

补全效果

如果感觉 Tab键 补全不方便,还可以自定义补全的快捷键。 比如设置逗号补全,只需要在 ~/.zshrc 文件添加下面这句即可:

1
bindkey ',' autosuggest-accept

z.lua

z.lua 是一个快速路径切换工具,它会跟踪你在 shell 下访问过的路径,通过一套称为 Frecent 的机制(源自 FireFox),经过一段简短的学习之后,z.lua 会帮你跳转到所有匹配正则关键字的路径里 Frecent 值最高的那条路径去。

项目地址:GitHub z.lua

1
git clone https://github.com/skywind3000/z.lua ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/z.lua

z.lua

启用插件

.zshrc 文件中设置:

1
plugins=(git zsh-syntax-highlighting zsh-autosuggestions z.lua)

启用其他插件同理。

配置生效

一种方法就是退出终端再重新打开,另一种更常用的方法就是使用我在前面所说的source命令:

1
source ~/.zshrc

感谢

Oh My Zsh

安装oh my zsh插件

Linux 以非root用户安装zsh&配置on my zsh