Shawn摘要

zsh简介

zsh(Z Shell)是一款可用作交互式登录的shell及脚本编写的命令解释器。

zsh 包含了许多 bash 的特性,同时还加入了新的功能,例如拼写检查、更高级的自动补全和脚本兼容性。

从 macOS Catalina(10.15 版本)开始,zsh 成为了 Mac 默认的 shell,取代了之前的默认 shell bash

ubuntu和archlinux的默认shell都是bash,可玩性比较差,为了获取更好的自动补全和语法高亮,建议使用zsh

可以使用echo $SHELL查看当前系统使用的shell。

1
echo $SHELL

将zsh配置好了(字体,透明度,自动补全,语法高亮等)开发也会事半功倍,从此爱上linux,让linux不再是纯手敲的黑框框!

命令补全

使用fastfetch(仅限archlinux)查看系统相关信息

fastfetch

zsh配置

对于ubuntu用户

1
2
3
sudo apt install git zsh zsh-completions
sudo apt install zsh-autosuggestions zsh-syntax-highlighting
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/.zsh/powerlevel10k

zsh-completions:提供了额外的命令行自动补全规则。这些补全规则能够帮助用户更快地输入命令。

zsh-autosuggestions:zsh 的一个插件,可以根据历史命令自动建议可能的命令补全。

zsh-syntax-highlighting:为 zsh 提供了语法高亮功能。

powerlevel10k:是一款为 Zsh(一种 Unix shell)设计的主题,有着良好的用户体验和美观的外观。

powerlevel10k 提供一个内置的配置向导,通过运行 p10k configure 命令即可启动。这个向导通过一系列问题帮助用户选择符合个人偏好的提示符样式和功能。

如果上述zsh-autosuggestionszsh-syntax-highlighting无法下载可以使用git clone到本地

1
2
git clone --depth=1 https://github.com/zsh-users/zsh-autosuggestions ~/.zsh/zsh-autosuggestions
git clone --depth=1 https://github.com/zsh-users/zsh-syntax-highlighting ~/.zsh/zsh-syntax-highlighting

对于archlinux用户,直接使用pacman包管理器下载

1
2
3
4
sudo pacman -S zsh zsh-completions zsh-autosuggestions zsh-syntax-highlighting zsh-theme-powerlevel10k
chsh
# 输入密码
# /usr/bin/zsh

注意:不是oh-my-zsh让你可以选皮肤,而是p10k,oh-my-zsh并不是必须!

通过vim ~/.zshrc加入以下内容:

1
2
3
4
5
6
7
8
9
SHHISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=1000
autoload -Uz compinit && compinit
zstyle ':completion:*' menu select

source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
source ~/.zsh/powerlevel10k/powerlevel10k.zsh-theme

重启终端,一般现在就可以配置powerlevel10k的主题啦!

如果哪一步配置错了,想重新配置可以使用p10k configure命令再次配置一遍。

1
p10k configure

如果报错找不到插件的位置可以使用命令ls -R / | grep zsh查看

1
2
3
4
/usr/share/zsh-autosuggestions:
zsh-autosuggestions.zsh
/usr/share/zsh-syntax-highlighting:
zsh-syntax-highlighting.zsh

再将搜索到的位置填入到~/.zshrc中的

1
2
3
source /xxx/xxx #zsh-autosuggesions路径
source /xxx/xxx #zsh-syntax-highlighting路径
source /xxx/xxx #powerlevel10k主题路径

以下是我为ubuntu配置的zsh的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# ~/.zshrc
1 # Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
2 # Initialization code that may require console input (password prompts, [y/n]
3 # confirmations, etc.) must go above this block; everything else may go below.
4 if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
5 source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
6 fi
7
8 # Lines configured by zsh-newuser-install
9 HISTFILE=~/.histfile
10 HISTSIZE=10000
11 SAVEHIST=10000
12 bindkey -e
13
14 # alias
15 alias ls='ls --color=auto'
16 alias ll='ls -alh --color=auto'
17 alias grep='grep --color=auto'
18 alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
19
20 # End of lines configured by zsh-newuser-install
21 bindkey '^[[H' beginning-of-line
22 bindkey '^[[F' end-of-line
23 bindkey "^[[1;5C" forward-word
24 bindkey "^[[1;5D" backward-word
25 bindkey '^H' backward-kill-word
26
27 # The following lines were added by compinstall
28 autoload -Uz compinit
29 compinit
30 # End of lines added by compinstall
31 zstyle ':completion:*' menu select
32
33 source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh
34 source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
35 source ~/.zsh/powerlevel10k/powerlevel10k.zsh-theme
36
37 # To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
38 [[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh

输入chsh,在随后的屏幕中输入zsh,敲回车。

现在你就可以开始使用zsh了。

以下是我为archlinux配置的zsh的配置文件,除了source后的插件路径,其余配置基本相同。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi

# Lines configured by zsh-newuser-install
HISTFILE=~/.histfile
HISTSIZE=10000
SAVEHIST=10000
bindkey -e
# End of lines configured by zsh-newuser-install
# The following lines were added by compinstall
zstyle :compinstall filename '/home/shawn/.zshrc'

# alias
alias ls='ls --color=auto'
alias ll='ls -alh --color=auto'
alias grep='grep --color=auto'
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'

autoload -Uz compinit
compinit
# End of lines added by compinstall

source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
source /usr/share/zsh-theme-powerlevel10k/powerlevel10k.zsh-theme

# highlight tab menu
zstyle ':completion:*' menu select

bindkey '^[[H' beginning-of-line
bindkey '^[[F' end-of-line
bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word
bindkey '^H' backward-kill-word

# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh

使修改生效

1
source ~/.zshrc

为tab的移动提供高亮

1
2
3
4
# vim ~/.zshrc
zstyle ':completion:*' menu select

# exec zsh

vim相关配置

配置文件第52行:set mouse=a打开后就可以使用鼠标了,但也难以使用先选中,再鼠标中键粘贴的技巧了。

ubuntu的vim默认打开语法高亮 (配置文件第23行:” line enables syntax highlighting by default.)

首先进入vimrc配置文件:

ubuntu是下面这个路径

1
sudo vim /etc/vim/vimrc

archlinux是

1
sudo vim /etc/vimrc

当进入相关命令行后,敲击i键,进入insert模式

1
2
3
4
5
6
7
8
9
" 开启这个就有状态行了
set nu "在左侧行号
" set tabstop "tab 长度设置为 4
" 可能因为这个导致使用vim需要两次回车
" set nobackup "覆盖文件时不备份
" 开这个和nu就够了
set cursorline "突出显示当前行
" set ruler "在右下角显示光标位置的状态行
" set autoindent "自动缩进

之后按esc退出编辑模式,:wq保存文件修改即可生效