Shell 是类 Unix 系统中超级好用的工具,而 Zsh 是 shell 中的佼佼者,但是现在网上一搜索 Zsh 的配置方案,遍地都是的互相复制粘贴的 oh-my-zsh 配置方案。事实上 oh-my-zsh 并不好用,严重拖慢了 Zsh 的速度,反而让你的工作并不高效。现在将我自己的使用方案分享给大家,教大家配置一个高效好用的 Zsh。
debian/ubuntu懒人一键安装zsh命令
curl https://git.blog.jiangqing.xyz/shell/linux/zsh/install_zsh.sh |sudo bash && zsh
安装Zsh与插件
我笔记本电脑使用的是 ArchLinux,服务器使用的是 Ubuntu。主要介绍这两个发行版的配置方法,红帽系的发行版请自行尝试。
我个人喜欢尽量从发行版的源里安装。从源安装具有方便,稳定,容易维护等优点。
在 ArchLinux 安装 Zsh
终端里面输入:
sudo pacman -Sy zsh
在 Ubuntu 安装 Zsh
终端里面输入:
apt-get update
apt-get install zsh
安装插件
我只需要两个插件:
zsh-autosuggestions
:这个是自动建议插件,能够自动提示你需要的命令。zsh-syntax-highlighting
:这个是代码高亮插件,能够使你的命令行各个命令清晰明了。
还有一个主题:
zsh-theme-powerlevel10k
这个主题提供漂亮的提示符,可以显示当前路径、时间、命令执行成功与否,还能够支持 git 分支显示等等。
同样是尽可能从源里面安装。
Ubuntu 20.10 的源里面是 powerlevel9k,配置好后实际使用体验和 powerlevel10k 差别不大。
在 ArchLinux 安装插件和主题
终端里面输入命令:
sudo pacman -S zsh-autosuggestions zsh-syntax-highlighting zsh-theme-powerlevel10k zsh-completions
在 Ubuntu 安装插件和主题
终端里面输入命令:
sudo apt-get install zsh-autosuggestions zsh-syntax-highlighting zsh-theme-powerlevel9k
#如果源仓库没有可手工安装Powerlevel10k
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
#国内用户可以使用 http://gitee.com 上的官方镜像加速下载.
git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
#注意这里的路径为${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
下面的~/.zshrc也要注意路径
这样插件和主题就安装好了。
更改默认 shell,并配置插件和主题
安装好了之后就是启用 Zsh,并且配置插件和主题了。
更改默认 shell
终端输入命令:
chsh -s /usr/bin/zsh
ArchLinux 和 Ubuntu 都是同样的操作,然后注销并重新登录,就启用了 Zsh。第一次进入 Zsh 会自动出现一个配置界面,这个界面可以根据需要自定义 Zsh。
在这里输入 1
就可以进入配置界面了。
配置界面中各个菜单代表的意思分别是:
1
:设置命令历史记录相关的选项2
:设置命令补全系统3
:设置热建4
:选择各种常见的选项,只需要选择“On”或者“Off”0
:退出,并使用空白(默认)配置a
:终止设置并退出q
:退出
这里根据提示,然后按照你自己的喜好配置就可以了。配置好后,会在你的用户目录下生成 .zshrc
文件。然后我们要去这个文件中启用插件和主题。
配置插件和主题
Zsh 的配置文件是 ~/.zshrc
文件,这个文件在你的用户目录下 ~/
。删掉了这个文件,再次进入 Zsh,又会触发 Zsh 的配置界面。
在 ArchLinux 启用插件和主题
打开 ~/.zshrc
文件,将以下行代码添加到其中:
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
#如果上面是手工安装
#source ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k/zsh-autosuggestions.zsh
source /usr/share/zsh-theme-powerlevel10k/powerlevel10k.zsh-theme
在 Ubuntu 启用插件和主题
打开 ~/.zshrc
文件,将以下行代码添加到其中:
source /usr/share/powerlevel9k/powerlevel9k.zsh-theme
source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh
#如果上面是手工安装
#source ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k/zsh-autosuggestions.zsh
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
这样就成功的启用了插件和主题,插件不需要额外的配置就很好用,有额外配置需求的可以自行研究。
而 powerlevel10k
主题在首次进入时,会触发一个配置界面。
然后根据提示和你的喜好一步步完成配置即可。
这里可以选择你喜欢的提示符。
配置完成后就可以愉快的使用啦!
配置zsh后,无法通过 DBus 连接到 Fcitx,无法输入中文
1、通过在/etc/environment 文件下加入:
export XIM_PROGRAM=fcitx
export XIM=fcitx
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=“@im=fcitx”
export LANG=“zh_CN.UTF-8”
2、然后在使用系统设置配置自启动:
![Untitled.png](https://prod-files-secure.s3.us-west-2.amazonaws.com/e0ef7df6-04ca-4d74-a8b1-a36a3e913ed3/a9abc440-c778-4c27-ad8d-0399d40ce695/Untitled.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45HZZMZUHI%2F20241020%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20241020T015304Z&X-Amz-Expires=3600&X-Amz-Signature=d82d72cb8fc267ad030e64e5b7a446e9545b54fbab165cb3f4b687b079d5147f&X-Amz-SignedHeaders=host&x-id=GetObject)
注意:/etc/environment 一定要添加fcitx配置,不然fcitx输入法仍然不能输入中文。
为zsh配置Ctrl+左右方向键支持
添加 **`Bindkey`** 参数到 **`.zshrc`**, 如下:
```shell
# +-----------------------------------------------------------+# |https://zsh.sourceforge.io/Doc/Release/Zsh-Line-Editor.html|# +-----------------------------------------------------------+# Make sure arrow key works.case "${TERM}" in
cons25*|linux)# plain BSD/Linux consolebindkey '\e[H' beginning-of-line# homebindkey '\e[F' end-of-line# endbindkey '\e[5~' delete-char# deletebindkey '[D' emacs-backward-word# esc leftbindkey '[C' emacs-forward-word# esc right
;;
*rxvt*)# rxvt derivativesbindkey '\e[3~' delete-char# deletebindkey '\eOc' forward-word# ctrl rightbindkey '\eOd' backward-word# ctrl left# workaround for screen + urxvtbindkey '\e[7~' beginning-of-line# homebindkey '\e[8~' end-of-line# endbindkey '^[[1~' beginning-of-line# homebindkey '^[[4~' end-of-line# end
;;
*xterm*)# xterm derivativesbindkey '\e[H' beginning-of-line# homebindkey '\e[F' end-of-line# endbindkey '\e[3~' delete-char# deletebindkey '\e[1;5C' forward-word# ctrl rightbindkey '\e[1;5D' backward-word# ctrl left# workaround for screen + xtermbindkey '\e[1~' beginning-of-line# homebindkey '\e[4~' end-of-line# end
;;
screen)
bindkey '^[[1~' beginning-of-line# homebindkey '^[[4~' end-of-line# endbindkey '\e[3~' delete-char# deletebindkey '\eOc' forward-word# ctrl rightbindkey '\eOd' backward-word# ctrl leftbindkey '^[[1;5C' forward-word# ctrl rightbindkey '^[[1;5D' backward-word# ctrl left
;;
esac
BASH 折叠 复制 全屏
```
个人 zsh 配置, 参考 [https://github.com/bGZoCg/.nix/tree/main/.zsh](https://github.com/bGZoCg/.nix/tree/main/.zsh)
欢迎指出任何有错误或不够清晰的表达,可以在下面评论区评论。