废话:
最近在工作中看到有同事在使用zsh,感觉非常奈斯,做个笔记记录一下,很多都是在网上查找来的,亲身实践过,并将自己遇到的坑总结到一起,方便以后查看使用
安装方法

dnf install zsh

问题1:

-bash: dnf: command not found

centos 当前在线 centos zsh_centos 当前在线


解决方法:

yum install dnf

先启动一个终端窗口MobaXterm
查看zsh位置

$ which zsh

查询shell文件

$ cat /etc/shells

设置zsh为默认shell

chsh -s /usr/bin/zsh

查看当前环境shell

echo $SHELL

你会发现当前shell仍然是bin/bash

centos 当前在线 centos zsh_linux_02


解决方法为,关闭当前的shell,再重新开一个就可以了

文章中介绍,首次启动会要求设置,但我并没有遇到,原因不详,待后续研究,这里先做记录

首次启动 Zsh 时,会要求你选择一些配置选项。这些都可以在以后更改,因此请按 1 继续。
This is the Z Shell configuration function for new users, zsh-newuser-install. (q) Quit and do nothing. (0) Exit, creating the file ~/.zshrc (1) Continue to the main menu.
偏好设置分为四类,因此请从顶部开始。

  • 第一个类使你可以选择在 shell 历史记录文件中保留多少个命令。默认情况下,它设置为 1,000 行。
  • Zsh 补全是其最令人兴奋的功能之一。为了简单起见,请考虑使用其默认选项激活它,直到你习惯了它的工作方式。按 1 使用默认选项,按 2 手动设置选项。
  • 选择 Emacs 式键绑定或 Vi 式键绑定。Bash 使用 Emacs 式绑定,因此你可能已经习惯了。
  • 最后,你可以了解(以及设置或取消设置)Zsh 的一些精妙的功能。例如,当你提供不带命令的非可执行路径时,可以通过让 Zsh 来改变目录而无需你使用 cd 命令。要激活这些额外选项之一,请输入选项号并输入 s 进行设置。请尝试打开所有选项以获得完整的 Zsh 体验。你可以稍后通过编辑 ~/.zshrc 取消设置它们。
    要完成配置,请按 0。

配置方法
使用oh-my-zsh使zsh的配置更简单
1、安装oh-my-zsh(网上有三种方法,都记录,我使用的是第二种)

  • 自动安装
wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh
  • 手动安装
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
  • 真-手动安装

在oh-my-zsh的github主页,手动将zip包下载下来。
将zip包解压,拷贝至~/.oh-my-zsh目录。此处省略拷贝的操作步骤。
执行cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

2、使配置生效(后面没修改一次配置都需要使配置生效)

source ~/.zshrc

3、修改zsh主题
查看zsh可用的Theme

ls ~/.oh-my-zsh/themes
vi ~/.zshrc

将ZSH_THEME=“candy”,即将主题修改为candy,并使配置生效

centos 当前在线 centos zsh_github_03


效果

centos 当前在线 centos zsh_centos 当前在线_04


zsh扩展插件

autojump

  • 下载autojump
git clone git://github.com/joelthelion/autojump.git
  • 先跳转到autojump的根目录下
cd autojump
  • 安装
./install.py

centos 当前在线 centos zsh_github_05


编辑 .zshrc文件

vi ~/.zshrc

将下面内容拷贝到.zshrc末尾

[[ -s /root/.autojump/etc/profile.d/autojump.sh ]] && source /root/.autojump/                                                                                                                          etc/profile.d/autojump.sh
source ~/.zshrc

验证

1、版本验证,输入j -v

centos 当前在线 centos zsh_github_06


2、功能验证,使用j+目录名快速进行目录跳转

centos 当前在线 centos zsh_github_07


3、j --stat:可以查看历史路径库

centos 当前在线 centos zsh_centos 当前在线_08


zsh-syntax-highlighting(语法高亮插件)

  • 作用
    当输入的命令错误时,会高亮提示,当正确时会显示绿色
  • 下载插件
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
  • ~/.zshrc文件中配置如下,并使配置生效:
plugins=(其他的插件 zsh-syntax-highlighting)
  • 效果

git插件
命令内容可以参考cat ~/.oh-my-zsh/plugins/git/git.plugin.zsh。

  • 常用命令
    gapa git add --patch
    gc! git commit -v --amend
    gcl git clone --recursive
    gclean git reset --hard && git clean -dfx
    gcm git checkout master
    gcmsg git commit -m
    gco git checkout
    gd git diff
    gdca git diff --cached
    gp git push
    grbc git rebase --continue
    gst git status
    gup git pull --rebase

使用方法
命令历史记录

  • 一旦在 shell 敲入正确命令并能执行后,shell 就会存储你所敲入命令的历史记录(存放在~/.zsh_history 文件中),方便再次运行之前的命令。可以按方向键↑和↓来查看之前执行过的命令
  • 可以用 r来执行上一条命令
  • 使用 ctrl-r 来搜索命令历史记录

命令别名
可以简化命令输入,在 .zshrc 中添加 alias shortcut=‘this is the origin command’ 一行就相当于添加了别名
在命令行中输入 alias 可以查看所有的命令别名

用法

  • 通配符搜索:ls -l **/*.sh,可以递归显示当前目录下的 shell 文件,文件少时可以代替 find。使用 **/ 来递归搜索
  • 命令选项补全。在zsh中只需要键入 tar - 就会列出所有的选项和帮助说明

参考以下文章:

http://www.sohu.com/a/342833926_100034897

http://www.pgygho.com/help/fwq/13943.html