ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Deepin安装oh-my-zsh完整指南:避坑与配置详解

Deepin安装oh-my-zsh完整指南:避坑与配置详解

说实话,在Deepin上安装oh-my-zsh这件事,我前前后后折腾过三次,这次是第四次,才算是把整个流程彻底捋顺了。Deepin本身是个很省心的Linux发行版,开箱即用,但对经常在终端里干活的人来说,默认的bash实在有点朴素——没有语法高亮,没有自动补全,历史命令翻来翻去全靠肉眼和回忆。oh-my-zsh就是来解决这个问题的,它是zsh的一套配置管理框架,装上之后终端立刻能变得好用很多,从主题美化到插件扩展一套全包。这篇文章不是照搬官网文档的安装教程,而是把我这四次安装过程中踩过的坑、排查过的报错、以及最后稳定下来的完整方案一起写出来,适合正在用Deepin、或者准备折腾Linux终端环境的人参考。不管你是刚接触Linux的新手,还是已经用了很久的老鸟,照着这套流程走一遍,基本不会出大问题。

1. 项目背景:为什么在Deepin上折腾oh-my-zsh

Deepin的图形桌面做得确实不错,尤其新版本的DDE,日常办公、看视频、写代码都很舒服。但一个很现实的问题是,只要你想在Linux上做点稍微深入的事,就躲不开终端。我自己平时要跑脚本、看日志、处理Git仓库,一天下来在终端里敲的命令没有一百条也有几十条。这时候bash给我的感觉就是“能用,但不够顺手”。于是很自然地就想到了zsh,以及它最流行的配置框架oh-my-zsh。

1.1 Deepin自带终端够用,但差口气

先说说Deepin默认的终端体验。系统装好之后,打开终端,默认shell就是bash,能完成所有基本操作:cd、ls、cat、grep、vim,这些都正常。但如果你每天要频繁敲命令,就能感觉到一些不太顺手的地方。

最让我难受的是历史命令搜索。bash里按上箭头可以翻历史,但如果历史记录有好几百条,你想找一个两天前敲过的命令,就得一直往上翻,翻到手酸。虽然bash也支持Ctrl+R反向搜索,但它的匹配逻辑比较基础,遇到记不清完整关键词的时候就麻烦了。

其次是没有语法高亮。在bash里敲一行命令,如果你不小心把git拼成了gti,bash不会在回车之前给你任何提示,等你按下回车,它才冷冷地回一句“command not found”。而zsh配合插件之后,命令敲到一半就能看出来哪个单词不对,颜色都不一样了,这种即时反馈对减少低级错误特别有帮助。

还有就是路径补全。bash的tab补全也能用,但它只补文件名和目录名,zsh的补全要聪明得多,它可以补全命令参数、Git分支、甚至是远程主机名。用习惯了之后再回bash,就会觉得bash的补全像是“半成品”。

1.2 zsh和oh-my-zsh到底解决了什么

这里要先分清楚两个概念:zsh是一种shell程序,oh-my-zsh是给zsh用的配置管理框架。

zsh本身是开源的,功能和bash大体兼容,但交互体验丰富得多。它有更智能的补全系统,有更灵活的提示符定制能力,还有一大堆可配置的选项。问题是,zsh的配置文件写起来并不简单,从零开始写一个顺手的.zshrc,需要查很多文档,比如怎么设置补全、怎么配置提示符、怎么启用历史记录选项,这些知识点很零散,新手很容易被劝退。

oh-my-zsh干的事情,就是把这些零散的配置打包成一个开箱即用的框架。它预置了几百个插件和上百种主题,你只需要在.zshrc里指定一个主题名,列一串插件名,然后source一下配置,就能获得一套完整且好用的终端环境。它相当于把zsh从“毛坯房”精装成了“可以直接入住”的状态。

很多人问,直接用zsh不装oh-my-zsh行不行?答案是行,但没必要。除非你特别享受折腾配置的过程,或者对每一个配置项的语义都了如指掌,否则用oh-my-zsh是性价比最高的选择。

1.3 标题里的“(4)”是啥意思

熟悉我的人知道,我做事有个毛病,喜欢把同一件事反复做,直到做顺手了才甘心。标题里的“(4)”指的是这是我第四次在Deepin上安装和配置oh-my-zsh。前面三次都踩了不同的大坑。

第一次是刚换了Deepin系统,兴冲冲去官网照着脚本装,装到一半网络不给力,脚本在克隆仓库那一步挂了,重试几次都失败,最后装出来的zsh没有任何主题和插件,等于白装。第二次是装成功了,但切换默认shell之后重新登录,发现还是bash,折腾半天才搞明白是chsh认证的问题。第三次更惨,我一股脑加了一堆插件,终端启动慢到打一个命令要等一两秒,实在忍不了,全部清掉重新来过。

这次我把整个链路完整地走了一遍,从环境准备、安装zsh、切换shell、装oh-my-zsh、配置插件和主题,到最后排查各种常见的报错,每一步都有清晰的记录。这篇博文就是这次完整过程的沉淀。

2. 安装前置准备:确认环境、更新系统、装好基础依赖

在开始装任何东西之前,先把环境确认清楚,这一步很多人会跳过,结果出了问题又从头排查。Deepin的版本不一样,软件源的配置不一样,可能遇到的包版本也不一样,先花两分钟确认一下能省下后面很多麻烦。

2.1 确认Deepin版本和系统环境

打开终端,输入下面这条命令,看一下系统信息。

cat /etc/os-release

以某台机器为例,输出大概是这样的:

PRETTY_NAME="Deepin 20.9" NAME="Deepin" VERSION_ID="20.9" VERSION="20.9" ID=deepin HOME_URL="https://www.deepin.org/"

注意VERSION_ID这个字段。不同版本的Deepin底层依赖的Debian版本不一样,软件仓库里各软件包的版本也会有差异。比如Deepin 20系列基于Debian 10,而Deepin 23则基于更新的Debian滚动版本。对安装oh-my-zsh来说,版本差异影响不大,但如果你遇到包依赖问题,知道系统版本就能快速定位是不是源的问题。

接下来检查几个基础命令是否可用。

which git curl wget vim

如果输出里缺了什么,就先装上,比如:

sudo apt install -y git curl wget vim

git和curl是必须的,安装oh-my-zsh的核心就是克隆Git仓库,curl则用来拉取安装脚本。vim不是必需的,但后面修改.zshrc和配置文件的时候会用到,装一个好办事。

2.2 更新软件源与系统软件包

这一步看似可有可无,但其实很重要。Deepin默认的软件源服务器有时候会有延迟,或者某些源镜像不稳定,直接安装软件可能遇到404或者版本过旧的问题。先更新一下软件包索引和系统软件,确保环境是干净且最新的。

sudo apt update sudo apt upgrade -y

执行upgrade的时候要注意几件事。第一,这个命令会把系统里所有能升级的软件包都升一遍,耗时取决于网络速度和包数量,快的话几分钟,慢的话可能十几分钟,最好在不太着急用电脑的时候做。第二,如果升级过程中提示有内核更新,后面需要重启一次系统才能让新内核生效,这个不急,可以等所有配置都搞完再重启。

另外提一句,软件源用的什么镜像,不同人的情况不一样。如果你用的是Deepin默认源,速度慢或者失败,可以自己手动更换成国内常用镜像源。这里不展开具体地址,因为源配置会随系统版本变化,建议以Deepin官方社区提供的最新镜像列表为准。源文件在/etc/apt/sources.list这个路径下,改之前最好备份一份。

2.3 安装zsh并设为默认shell

环境准备好之后,直接安装zsh。

sudo apt install -y zsh

安装完成之后确认一下版本:

zsh --version

正常情况下会输出类似这个:

zsh 5.8 (x86_64-debian-linux-musl)

如果版本太老,比如低于5.0,可能会有一些插件兼容性问题,可以考虑从源码编译新版,但Deepin仓库里的zsh版本通常足够用了。

然后查看一下系统里有哪些可用的shell:

cat /etc/shells

输出里应该有/bin/bash、/bin/sh、/bin/zsh这几项,如果/bin/zsh在里面,说明可以切换。

切换默认shell用chsh命令:

chsh -s /bin/zsh

执行后会提示输入当前用户的密码,注意这里输的是登录密码,不是root密码。输入密码并回车之后,如果没有任何报错,说明切换成功。然后重新登录一次,或者直接重启,再打开终端,执行:

echo $SHELL

如果输出是/bin/zsh,说明默认shell已经切换成功。如果输出还是/bin/bash,那大概率是遇到了chsh认证的问题,后面的常见问题排查章节里我会详细说怎么处理。

注意:chsh切换默认shell之后,不会立即生效,需要你退出登录或者重启终端窗口。另外,修改/etc/shells和/etc/passwd这些系统文件时,建议先备份再改,别手一抖把系统搞挂了。

3. 安装oh-my-zsh核心框架

zsh装好并且设为默认shell之后,接下来就是重头戏:安装oh-my-zsh。这里有两种方式,一种是官方提供的一键安装脚本,另一种是手动克隆仓库并拷贝模板配置。两条路我都走过,各有利弊,下面分别说明。

3.1 官方脚本安装与手工克隆两条路线

官方推荐的方式是一条命令直接跑安装脚本:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

这条命令做的事情说穿了也不复杂。首先curl会下载tools/install.sh这个脚本,然后用sh执行它。脚本的逻辑大致是:检查系统里有没有git和curl,检查zsh是否已安装,然后克隆oh-my-zsh仓库到用户目录下的.oh-my-zsh文件夹,接着检查用户目录下是否已有.zshrc文件,如果有,就自动备份成.zshrc.pre-oh-my-zsh,最后把oh-my-zsh自带的zshrc模板复制为用户的.zshrc。

整个流程自动化程度很高,适合大部分人。但有一个现实痛点:raw.githubusercontent.com这个域名在某些网络环境下连接不稳定。前面说过了,我之前一次安装就是卡在这一步,脚本跑了一半,克隆仓库的时候网络断开,curl直接报错退出,给我留下一个不完整的.oh-my-zsh目录。之后不管怎么重试都很别扭。

如果你也遇到这种情况,别硬刚,可以直接走手动克隆的路线,其实就是把脚本里的关键步骤自己手动执行一遍。

先手动克隆仓库:

git clone https://github.com/ohmyzsh/ohmyzsh.git ~/.oh-my-zsh

国内网络环境下GitHub的访问质量不稳定,如果克隆的速度很慢或者直接卡住,可以试试在Gitee上搜索oh-my-zsh的镜像仓库。不少开发者在Gitee上同步了完整的oh-my-zsh仓库,找一个star数高的,把地址换成镜像地址即可,比如:

git clone https://gitee.com/mirrors/oh-my-zsh.git ~/.oh-my-zsh

克隆成功之后,需要手动复制模板配置:

cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

这样.zshrc就有了oh-my-zsh的基础配置。再打开一个新终端,或者手动执行:

source ~/.zshrc

如果看到终端提示符变成了带颜色的zsh风格,说明安装成功了。

心得:我后来几次安装都优先用手动克隆方式,尤其是当官方脚本因为网络问题反复失败的时候。手动克隆虽然多敲两行命令,但每一步都看得清楚,出了问题也容易排查,心里踏实。另外建议把.git目录保留在.oh-my-zsh里面,不要删掉,因为后面升级oh-my-zsh靠的就是这个git仓库。

3.2 配置.zshrc:主题、插件、个性化参数

安装完oh-my-zsh之后,核心的配置工作都集中在~/.zshrc这个文件里。修改之前建议先备份一份:

cp ~/.zshrc ~/.zshrc.bak

然后打开文件:

vim ~/.zshrc

最关键的是最前面的几个变量。

主题设置:

ZSH_THEME="robbyrussell"

robbyrussell是oh-my-zsh默认主题,简洁好看,带git分支显示,适合新手。如果你喜欢更花哨一点的,可以把主题改成agnoster,它有个特点是以分段色块展示信息,非常显眼,但需要终端安装支持Powerline的字体,具体在后面的常见问题里会讲。

插件列表:

plugins=(git z sudo history-substring-search)

这里按你的需要来。git插件提供了很多git命令的简写别名,比如gst代表git status、ga代表git add、gc代表git commit,能省很多事。z插件可以记录你进过的目录,然后通过z加目录名的模糊匹配直接跳转,非常实用。sudo插件可以让你在输入命令后按两下Esc,自动在命令前面加上sudo,有了它再也不用整条命令重敲了。

禁用自动更新检查。oh-my-zsh默认每过一段时间就会检查更新,如果网络不好,每次打开终端都要卡一下。在.zshrc里加上这一行可以关掉:

DISABLE_AUTO_UPDATE="true"

历史记录时间戳,默认的历史记录是不带时间的,如果你想看某条命令是什么时候执行的,可以设置:

HIST_STAMPS="yyyy-mm-dd"

修改完保存并退出vim,然后执行:

source ~/.zshrc

让配置立即生效。

注意:每次修改完.zshrc之后,建议先执行source ~/.zshrc看有没有报错,如果报错信息看不懂,别硬扛,直接把备份的.zshrc恢复回去再说。配置文件这东西,一次只改一点,改完验证一下,是最稳的节奏。

3.3 常用插件搭配:自动建议、语法高亮、目录快捷跳转

如果说oh-my-zsh自带的那批插件已经让你觉得不错了,那你装上下面这几个社区插件之后,会更惊讶原来终端可以这么好用。

第一个是zsh-autosuggestions,它会根据你输入的历史记录推测你想敲的命令,以灰色文字显示在光标后面,按键盘右键或者Ctrl+E就能把建议内容补全。用顺手之后,敲命令的速度会明显上升。

安装方式:

git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

国内网络同样可能慢,可以找Gitee上的镜像仓库替代。克隆完成之后,在zshrc的plugins数组里加上zsh-autosuggestions这个名字。

第二个是zsh-syntax-highlighting,这个插件的核心价值是命令语法高亮。命令存在时显示绿色,命令不存在时显示红色,路径存在时显示下划线,选项参数也有不同颜色。这种即时反馈能让你在按下回车之前就发现错误。

安装方式:

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

然后同样在plugins数组里加上它。这里有个关键细节:zsh-syntax-highlighting官方文档特别强调,它必须被加载在zshrc文件里面plugins数组的最后一个位置,也就是在source $ZSH/oh-my-zsh.sh之后才被加载。简单说,不要把它的名字排在git、z前面,要排在最后。

第三个是z,实际上它是oh-my-zsh自带的插件,不需要额外克隆。它记录你访问过的目录并计算权重,比如你经常进~/work/project/frontend这个目录,之后在任意位置输入z frontend就会直接跳进去。

如果已经用了这些插件,启动速度一般不会太慢。但如果你发现自己装了插件之后终端明显变卡,启动要等很久,那多半是你把某个插件重复装载了,或者装了太多又大又重的插件。这方面的问题我在下一节详细说。

4. Deepin环境下的常见问题与排查记录

安装过程看着简单,但实际操作中坑不少。有些坑是Deepin特有的,有些是Linux通用的。这一节我把这几次安装过程中遇到最多的五个问题整理出来,每个问题都附上排查思路和解决办法,建议收藏备用。

4.1 chsh切换默认shell失败

现象是你执行了chsh -s /bin/zsh,也输了密码,但提示类似“PAM认证失败”或者“密码错误”,但你的登录密码明明是对的。这个现象在Deepin上不算少见。

原因是chsh命令的认证机制。chsh会请求PAM验证密码,如果你的用户账户使用某种方式登录,而终端环境下的PAM配置和图形登录界面不一致,就可能出现密码明明正确但认证失败的情况。

解决办法有几种,从简单到复杂:

第一种,用sudo直接改当前用户的shell:

sudo chsh -s /bin/zsh $USER

第二种,直接修改用户的账套信息:

sudo usermod -s /bin/zsh $USER

第三种,如果上面两个都不行,可以手动编辑/etc/passwd文件。用sudo vim /etc/passwd打开文件,找到你用户名开头的那一行,格式大概是:

yourname:x:1000:1000:Your Name,,,:/home/yourname:/bin/bash

把最后的/bin/bash改成/bin/zsh,保存退出,重新登录即可。

提醒:修改/etc/passwd之前一定要备份,这个文件是系统用户信息的核心配置,改错了可能导致登录异常。改完之后可以在终端里执行echo $SHELL验证当前shell是否已经是zsh。

4.2 主题乱码与字体方块

安装了agnoster这类主题之后,打开终端,发现提示符里出现了很多方块、问号,或者一些看起来像是被截断的奇怪符号。这是主题用到的特殊字体符号在系统里找不到对应字形导致的。

Powerline主题利用Unicode私有区域的一些符号来绘制分段箭头和分支图标,普通终端字体不包含这些字形,显示的时候就会变成方块。解决办法是安装支持这些符号的字体,常见的推荐字体是Nerd Fonts系列,其中MesloLGS NF是社区里公认的zsh兼容性很好的选择。

下载字体文件之后,手动安装到用户字体目录:

mkdir -p ~/.local/share/fonts cp MesloLGS\ NF\ Regular.ttf ~/.local/share/fonts/ fc-cache -f ~/.local/share/fonts

然后在Deepin终端里打开“设置”菜单,调整字体设置。有时候还需要取消勾选“使用系统固定宽度字体”,在字体列表里手动选择MesloLGS NF,然后重启终端窗口。这个操作看起来简单,但很多人卡在这里的原因是字体安装后没有执行fc-cache刷新字体缓存,导致终端字体列表里看不到新字体。

如果你不想装额外字体,也可以直接把主题换回robbyrussell,它用的全是常规字符,不会有乱码问题。

4.3 插件安装了却不生效

这个是最容易踩的坑。你按教程克隆了插件仓库,也在.zshrc的plugins数组里加了插件名,source之后却发现没有任何效果。

排查顺序是这样的:

先检查插件目录是否存在,名字是否精确匹配:

ls ~/.oh-my-zsh/custom/plugins/

比如zsh-autosuggestions插件,它的目录名必须和plugins数组里写的字符串完全一致,大小写都要对。有些人下载的时候仓库改名了,目录变成了zsh-autosuggestions-master,那plugins数组里写zsh-autosuggestions就加载不到。

再检查你的.zshrc里,plugins数组是否写对了语法,比如这个例子:

plugins=(git z zsh-autosuggestions zsh-syntax-highlighting)

插件名和括号之间用空格分隔,不要有逗号。

最后,也是最容易忽略的,就是source ~/.zshrc之后,有些插件并不会在当前终端会话立即生效,需要你开一个全新的终端窗口测试。比如zsh-autosuggestions,它在新终端里才会自动加载。如果你已经开了新终端还是不行,那就用zsh -x来调试,它会输出zsh加载配置的详细过程,看看到哪一步出了问题。

4.4 终端启动速度明显变慢

很多人安装完zsh之后,第一反应是“爽”,第二反应可能是打开新终端的时候要等一秒多钟才出提示符。这种情况一般不是zsh本身慢,而是某些插件或者配置拖了后腿。

最常规的原因有两个:一是加了太多插件,每个插件在启动时都要执行初始化逻辑,插件的数量越多,启动时间越长;二是oh-my-zsh自动更新检查,它在启动时可能需要访问网络,如果网络不畅,连接超时就会拖慢启动。

排查办法是逐项试验。先删掉非必须的插件,只保留git和sudo,然后执行这个命令测试启动时间:

time zsh -i -c exit

看看耗时要多少,正常应该在0.1秒以内。如果这个数字很大,说明.zshrc里有非常耗时的操作。如果你发现只要开着自动更新检查就慢,就在.zshrc里设置DISABLE_AUTO_UPDATE="true"关掉更新。

另外有些插件,比如nvm、pyenv的初始化脚本,本身就比较慢,它们不是oh-my-zsh的插件,而是你自己添加到.zshrc里的初始化命令。遇到这种情况,可以考虑改用延迟加载方案,也就是等真正用到某个工具时才初始化,而不是在打开终端的瞬间全部加载。

4.5 安装脚本网络卡住或失败

这个在上面已经提过,这里单独展开说。官方安装脚本用的是raw.githubusercontent.com,这个域名在国内网络环境下经常不稳定。表现是一行命令敲下去,卡在那里半天没动静,然后突然报错退出。

解决思路是把网络请求尽量转移到相对稳定的渠道。最简单的方法是手动克隆GitHub仓库,如果GitHub也不稳定,就改用Gitee镜像仓库。具体命令前面已经给过了,这里不重复。

如果你本地的开发环境里配置了HTTP代理,只针对这次安装临时使用,可以在终端里临时设置环境变量:

export http_proxy="http://127.0.0.1:端口" export https_proxy="http://127.0.0.1:端口"

装完oh-my-zsh之后,马上取消这些环境变量:

unset http_proxy unset https_proxy

这样可以避免代理影响后续其他网络操作。

不管用哪种方式,装完之后都要确认关键文件是否存在:

ls -d ~/.oh-my-zsh cat ~/.zshrc | head -n 5

两个检查点都通过,基本就算装好了。

5. 进阶定制:把终端变成称手的日常工具

框架装好、插件配好,这只是第一步。真正让oh-my-zsh发挥作用的关键,在于根据自己的使用习惯定制别名、历史管理、快捷键这些细节。这一节分享几个我在日常使用中觉得非常有效的定制方式,让终端不再是默认状态,而是完全贴合你的工作流。

5.1 别名与Git快捷操作,让高频命令不再重复敲

zsh本身就很擅长用别名来简化操作。你可以把那些每天重复输入的长命令设置成短别名,这是提升效率最立竿见影的方式。

打开.zshrc,在文件靠后的位置添加一行一行别名,这些别名就可以在zsh里直接用了:

alias ll='ls -alF' alias la='ls -A' alias l='ls -CF' alias ga='git add' alias gc='git commit -m' alias gp='git push' alias gs='git status' alias gd='git diff' alias gl='git log --oneline --graph --all'

有一说一,oh-my-zsh的git插件已经内置了很多git别名,比如gs代表git status,ga代表git add,还有gco、gcb、gcm这些。但这些别名不好背。我建议根据自己的使用频率来定义别名,比如我每天都在git status和git add之间来回切,就把gs和ga放进了.shell的常用记忆区。

不过要特别注意,不要为了炫技给所有命令都起别名,别名一旦多到记不住,反而增加认知负担。我建议只给那些每周至少用上几次的命令起别名,其余全部保持原样。另外,有的系统命令本身就有别名,比如很多发行版的ll已经在.bashrc里定义了,但Deepin的zsh里没有,所以需要自己加。

5.2 历史记录管理与模糊搜索,找回那些你以为已经丢了的命令

zsh的历史记录默认保存在~/.zsh_history,但这个文件默认只保存一定条数。通过配置可以扩大历史记录容量,这样根本不用怕忘记以前敲过什么。

在.zshrc里追加:

HISTFILE=~/.zsh_history HISTSIZE=10000 SAVEHIST=10000 setopt HIST_IGNORE_DUP setopt HIST_IGNORE_SPACE setopt SHARE_HISTORY

解释一下几个关键项。HISTSIZE是当前会话里内存中保存的历史条数,SAVEHIST是写入历史文件的条数,两个都设成10000基本够用。HIST_IGNORE_DUP会忽略重复命令,比如你连着敲了五次git status,历史里只保留一条,搜索的时候更干净。HIST_IGNORE_SPACE会忽略以空格开头的命令,这给了一个“秘密”功能:如果某条命令不想被记录,在命令开头敲一个空格再输入就不会被保存。SHARE_HISTORY让多个终端窗口共享历史记录,这样在一个窗口里敲过的命令,另一个窗口按上下键也能翻到,适合习惯开多个终端的场景。

历史记录配合Ctrl+R搜索,效率直接起飞。按下Ctrl+R,输入关键词,会把历史命令中匹配的部分显示出来,多按几次可以往前翻不同的匹配结果。这个功能我之前在bash里也用过,但zsh的匹配体验更流畅。

5.3 终端快捷键与多标签,顺手才是硬道理

平时操作终端,我特别推荐熟练掌握Deepin终端的快捷键,这些虽然不是zsh的功能,但配合zsh体验更丝滑。

  • Ctrl+Shift+T:新建终端标签页,可以在一个窗口里同时开多个会话。
  • Ctrl+PageUp/PageDown:在不同标签页之间切换。
  • Ctrl+Shift+W:关闭当前标签页。
  • Ctrl+Shift+C/V:复制粘贴,终端里复制粘贴和普通应用不一样,鼠标选中文本之后必须用这个快捷键复制才有用。
  • Ctrl+L:清屏,效果等同于输入clear。

再补充一个终端提示符的技巧。默认的提示符显示用户名和主机名,如果你有多台机器或者好几个服务器要同时操作,很容易弄混当前在哪台机器上。可以在.zshrc里设置一个precmd函数,让提示符显示当前目录的完整路径,这样永远不会看错。

precmd() { print -Pn "\e]0;%n@%m: %~\a" }

这个会把终端窗口的标题改成“用户@主机: 当前目录”的格式,尤其多开几个终端标签的时候,一眼就能看出哪个窗口在哪个目录。

5.4 后续还可以折腾的方向,但先别贪心

装完oh-my-zsh、配好主题和插件之后,你可能会看到社区里有人用powerlevel10k主题,截图效果确实好看。那个主题的安装过程稍复杂一些,需要额外下载字体、克隆主题仓库,但如果你已经把这篇文章里所有基础步骤走通,那再按powerlevel10k的官方文档操作其实不难。

还有zsh-vi-mode插件,它把vim的操作习惯引入zsh,可以在命令行里用vi的命令模式编辑命令,对vim党来说是刚需,但是学习成本也挺高,如果你平时不用vim,不建议碰它。

再比如fzf,一个模糊查找工具,配合历史记录和文件路径使用体验极佳。但它的用法需要一定时间熟悉,不是装上就能发挥全部作用。

我给的建议是,保持克制。每次只添加一样东西,用一段时间,确定它能提升你的效率,再继续加。不要一开始就装十个插件,那样你连排查问题的能力都没有。我前三次安装失败,很大一个原因就是太贪心,插件和主题一起上,出了问题根本不知道是哪个环节导致。

最后再说几句实际的

把Deepin上装oh-my-zsh的整个过程写下来,心里还是有点感慨。这类工具本身不难装,难的是装完之后如何把它真正融入自己的工作流。我在前几次安装中犯过的一些错误,比如乱改.zshrc导致启动变慢、不装字体导致主题乱码,后来都变成了经验。如果你跟我一样用Deepin,照着这篇文章的步骤走一遍,基本能避开大部分坑。装完之后先别急着加各种花里胡哨的插件,保持一个干净的基础配置用两周,感受一下zsh默认补全结合历史记录带来的变化,然后再根据自己的实际需求逐步加东西。这样得来的配置,每一个功能你都知道它是干什么的,每一个问题你都能快速定位。真正顺手的终端环境不是复制别人的配置堆出来的,是自己在使用中一点点打磨出来的。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进