[Share Experiences] 手把手教你装zsh,所有github链接都换成了gitee,包你安装顺利!
Tofloor
poster avatar
windf17
deepin
2022-05-27 18:15
Author

安装zsh

sudo apt install zsh

安装oh-my-zsh

git clone https://gitee.com/mirrors/oh-my-zsh.git
cd oh-my-zsh/tools
./install.sh

安装powerlevel10k主题及字体

sudo git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/themes/powerlevel10k

powerlevel10主题必须要搭配使用合适的字体才好用,推荐一个字体网站:nerdfonts,这里面很多非常漂亮的编程字体可供选择,我用的是SauceCodePro Nerd Font Mono。我不光在终端中用它,在VSCode中也是使用这款字体。

下载你喜欢的字体后用字体管理器加载,然后在终端中使用该字体。然后执行 p10k configure

补充一下:

如果运行中遇到p10k报错,可能是因为gitee上的版本有点旧,可以去github上下最新版的,执行前要将旧的删除。

rm ~/.oh-my-zsh/custom}/themes/powerlevel10k -rf
sudo git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/themes/powerlevel10k

修改zsh配置文件

vim ~/.zshrc

找到ZSH_THEME=,将内容该为

ZSH_THEME="powerlevel10k/powerlevel10k"

安装自动补全、语法高亮、自动跳转

  1. 依次执行下列指令
$ZSH_CUSTOM/plugins
git clone https://gitee.com/victor_htq/zsh-autosuggestions.git
git clone https://gitee.com/lightnear/zsh-syntax-highlighting.git
sudo apt install autojump
git clone https://github.com/zsh-users/zsh-completions ${ZSH_CUSTOM:-${ZSH:-~/.oh-my-zsh}/custom}/plugins/zsh-completions
  1. 使用vim编辑oh-my-zsh的配置文件:vim ~/.zshrc

在配置文件.zshrc中找到以下配置,在git后面(换行)添加下载的插件名称,如下

plugins=(
  git
  sudo
  autojump
  zsh-completions 
  zsh-autosuggestions 
  zsh-syntax-highlighting
)
  1. 执行 source ~/.zshrc

插件使用说明

git

可以方便的使用git命令的缩写,常见缩写:
gp='git push'
gm='git merge'
gl='git pull'
查看所有git命令缩写

cat ~/.oh-my-zsh/plugins/git/git.plugin.zsh

sudo

当遇到执行命令报没有sudo权限时,直接按2下Esc再回车,就能快速执行sudo 上一条命令。

autojump

j指令,快速切换路径

j -s

显示autojump所有已访问路径

j 关键字

关键字是已访问过的路径中的字符片段,可以按tab补全,自动补全的部分会显示_,补全几个字符显示几个_

jo 关键字

用文件管理器打开指定路径

d指令,切换最近访问过的路径

输入d回车,回显示最近的所有路径列表,再输入数字回车,就可以切换到相应的路径。

autosuggestions

只需输入部分命令即可根据之前输入过的命令提示,按右键→即可补全5

highlighting

语法高亮,命令正确显示是绿色,命令错误显示是红色。

zsh-completions

bash命令按tab自动补全,另外docker用得多的也可以加docker命令补全功能!

Reply Favorite View the author
All Replies
whoam1
deepin
2022-05-27 19:35
#1

你的zsh 可以对apt的命令进行tab补全吗?

我是的 apt list --upgrade 中的upgrade 无法提示

Reply View the author
Comments
要讲武德
2022-05-27 19:38
fish搞起来
要讲武德
deepin
2022-05-27 19:37
#2

fish不好吗,开箱即用,

Reply View the author
134******03
deepin
2022-05-27 19:48
#3
要讲武德

fish不好吗,开箱即用,

我试试

Reply View the author
134******03
deepin
2022-05-27 19:51
#4
134******03

我试试

fish可以啊,不错,但是开箱没有zsh git 插件这样的功能

Reply View the author
windf17
deepin
2022-05-27 19:56
#5

fish也不错,但是最近老遇到执行脚本报错,切换到bash,再切回fish。烦了……

所以折腾了一下zsh。网上有很多地方有安装zsh的文章。但一大堆废话,有好多用的github链接下载不了,折腾人。还有的漏了步骤,例如设置终端字体。

所以我整了一个没有废话、干净、方便的教程。让大家复制粘贴就可以搞定zsh。

Reply View the author
windf17
deepin
2022-05-27 19:57
#6
whoam1

你的zsh 可以对apt的命令进行tab补全吗?

我是的 apt list --upgrade 中的upgrade 无法提示

自动补全功能是oh-my-zsh插件提供的。你没装的话,zsh是没有自动补全的。

Reply View the author
enforcee
deepin
2022-05-27 21:01
#7
windf17

fish也不错,但是最近老遇到执行脚本报错,切换到bash,再切回fish。烦了……

所以折腾了一下zsh。网上有很多地方有安装zsh的文章。但一大堆废话,有好多用的github链接下载不了,折腾人。还有的漏了步骤,例如设置终端字体。

所以我整了一个没有废话、干净、方便的教程。让大家复制粘贴就可以搞定zsh。

不同shell还是有区别的,我之前就发现了一个比如

a=$(ps aux)

echo $a

bash出来的换行就没有了,zsh的就有换行。如果是echo "$a",那bash也有换行了。这是因为bash并不是把变量当作一个参数,而是直接做了文本的替换,每个空白字符分隔的地方都变成了一个参数,而zsh的处理方法变量就是作为单个的参数(和加引号是一样的)。另一个更直观的例子:

a="-l /"

ls $a

Reply View the author
deepinuser17
deepin
2022-05-27 21:09
#8

bash 和 zsh 有许多不同的地方。 同样脚本或命令在bash和zsh下,运行的结果不一样。

发现这个问题,是因为同样的命令在Linux上运行正常, 但是到了macOS上却出了问题。 原因是新版macOS的用户初始shell改成了zsh. 在macOS系统上,切换到bash以后这个命令就运行正常了。

Reply View the author
windf17
deepin
2022-05-27 21:37
#9
deepinuser17

bash 和 zsh 有许多不同的地方。 同样脚本或命令在bash和zsh下,运行的结果不一样。

发现这个问题,是因为同样的命令在Linux上运行正常, 但是到了macOS上却出了问题。 原因是新版macOS的用户初始shell改成了zsh. 在macOS系统上,切换到bash以后这个命令就运行正常了。

对啊,zsh比fish的兼容性好很多。bash是兼容性最好的!

但是bash太难用了,命令行用得多的话,zsh还是得装!

Reply View the author
waiting
deepin
2022-05-27 21:54
#10
windf17

对啊,zsh比fish的兼容性好很多。bash是兼容性最好的!

但是bash太难用了,命令行用得多的话,zsh还是得装!

我的方法是

  1. 简单命令行操作用 bash
  2. 复杂命令行脚本操作上 zx , 用 js/nodejs 语法来执行命令行操作。效率比 bash/zsh 高不少。
  3. 运维脚本舍弃 py 采用 TypesScript + zx ,通过 ts 的类型约束来提高效率和代码质量

zx 是谷歌开发的基于 nodejs 封装的命令行软件: https://github.com/google/zx/

Reply View the author
jiutian123
deepin
2022-05-27 22:00
#11

支持楼主的行为like

Reply View the author
神末shenmo
Moderator
Spark-App
2022-05-27 22:06
#12

也可以注册一个coding做github mirror

支持自动镜像,定时同步,这样就是稳定的国内镜像了

Reply View the author
xuqi
deepin testing team
2022-08-27 23:10
#13
  • 支持一下~kissing_heart
Reply View the author