linux配置一个简洁高效的终端Zsh(自动完成|自动建议)一键脚本

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。主要介绍这两个发行版的配置方法,红帽系的发行版请自行尝试。

Untitled.png

我个人喜欢尽量从发行版的源里安装。从源安装具有方便,稳定,容易维护等优点。

在 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。

Untitled.png

在这里输入 1 就可以进入配置界面了。

Untitled.png

配置界面中各个菜单代表的意思分别是:

  • 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 主题在首次进入时,会触发一个配置界面。

Untitled.png

然后根据提示和你的喜好一步步完成配置即可。

Untitled.png

这里可以选择你喜欢的提示符。

配置完成后就可以愉快的使用啦!

Untitled.png

配置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)

欢迎指出任何有错误或不够清晰的表达,可以在下面评论区评论。

×

喜欢就点赞,疼爱就打赏

//