ubuntu 与 windows terminal zsh 美化教程

2023-11-17

在 Windows 上通过 WLS2 安装了 Linux 子系统之后,就可以同时在两种系统环境下工作了。使用 windows terminal 可以方便地对 Powershell、cmd 和 ubuntu 等多种终端进行管理,还可以使用 zsh 对其进行美化。

与直接对 windows terminal 进行美化的做法不同,本文选择对 Ubuntu 子系统的 bash 进行美化,这样在 windows terminal 中打开 ubuntu 子系统的终端时,也能得到相同的美化效果,最终的效果图如下。

windows terminal 中打开的 ubuntu 子系统终端:
在这里插入图片描述

ubuntu 子系统中打开的终端:
在这里插入图片描述

安装 zsh 和 oh-my-zsh

Oh My Zsh( 官网Github)是一个开源的“开箱即用”的 zsh 配置管理框架,安装之后可以很方便的为 zsh 安装主题、插件等。

# 安装 zsh
sudo apt install zsh

# 安装 oh-my-zsh
sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

# 确认 zsh 成功安装
zsh

# 设置为默认 Shell
chsh -s /bin/zsh

第一次运行 zsh 后(在终端输入zsh命令),会生成一个配置文件(~/.zshrc)和一个文件夹(~/.oh-my-zsh)。

手动安装 oh-my-zsh 的方法:
(1) 从 github(https://github.com/ohmyzsh/ohmyzsh)下载 oh-my-zsh 项目
(2) 解压后复制到 ~/.oh-my-zsh 目录下面
(3) 替换默认生成的.zshrc配置文件:cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

选择与安装主题

使用自带的主题

zsh 自带了很多的主题,相关的文件都放在了~/.oh-my-zsh/themes目录中。
默认的主题是 robbyrussell,如下图。

其中,比较炫酷的主题是 agnoste,如下图。
更换主题只需要编辑 ~/.zshrc ,将 ZSH_THEME="agnoster"改为对应的主题名称即可。

安装 Powerline 字体

许多主题中有很多图标需要显示,为此需要安装 Powerline 字体。

(1)Linux 上安装 Powerline 字体

在 ubuntu 系统上安装 powerline 字体非常简单,只需要一行命令,

sudo apt install fonts-powerline

(2)windows 上安装 Powerline 字体
Cascadia Code GitHub 发布页 下载 powerline 字体。
在这里插入图片描述
解压后,将下面的几个字体复制到 windows 系统的字体目录(c:/windows/fonts/)中。其中,绿色框中的字体在 windows terminal 中已经自带了。
在这里插入图片描述
重启 windows terminal 后,打开设置,选择 Cascadia Mono PLCascadia Code PL字体即可。

在这里插入图片描述
此时,在 windows terminal 中打开 ubuntu 子系统的终端,可以看到能正常显示主题的各种图标。

安装 powerlevel10k 主题

zsh 使用最多的主题是 powerlevel9k / powerlevel10k 。 powerlevel10k 在 powerlevel9k 的基础上做了一些改进,支持异步加载,速度要比 powerlevel9k 更快,而且 powerlevel9k 的配置命令在 powerlevel10k 中都可以使用。

(1)下载 p10k 主题

将该主题文件下载到对应的目录中,

git clone https://github.com/romkatv/powerlevel10k.git ~/.oh-my-zsh/custom/themes/powerlevel10k

然后编辑 ~/.zshrc ,设置 ZSH_THEME="powerlevel10k/powerlevel10k"

(2)下载 Meslo_LG_M_Regular_Nerd_Font_Complete_Mono 字体

p10k 主题使用了更加丰富的图标,为此需要进一步安装 Meslo_LG_M_Regular_Nerd_Font_Complete_Mono 字体。

下载该字体文件后,

  • windows 系统

将字体复制到c:/windows/fonts/中,然后在 windows terminal 的设置中选择该字体。
在这里插入图片描述

  • Linux 子系统

将该字体下载到任意一个文件夹内,如 ~/Downloads,然后执行以下命令,

sudo mkdir -p /usr/share/fonts/custom
cd ~/Downloads
sudo mv Meslo\ LG\ M\ Regular\ Nerd\ Font\ Complete\ Mono.ttf /usr/share/fonts/custom
sudo chmod 744 /usr/share/fonts/custom/Meslo\ LG\ M\ Regular\ Nerd\ Font\ Complete\ Mono.ttf 
cd /usr/share/fonts/custom/
sudo mkfontscale
sudo mkfontdir
sudo fc-cache -fv

至此,在 ubuntu 子系统内打开终端,或是在 windows terminal 中打开 ubuntu 子系统终端,都能正常显示该主题。

(3)配置 p10k 主题

使用下面的命令对该主题的具体样式进行配置,如图。

p10k configure

在这里插入图片描述
其它的一些配置命令:

# 列出主题中包含的所有图标的名称
get_icon_names

# 禁用 P9k / P10k
prompt_powerlevel9k_teardown

# 启用 P9k / P10k
prompt_powerlevel9k_setup

选择与安装插件

使用自带的插件

zsh 自带了很多的插件,相关的文件都放在了~/.oh-my-zsh/plugins目录中。
默认使用 Git 插件,能提供 Git 状态颜色编码和提示符。要想使用其他自带的插件,只需要编辑~/.zshrc文件,添加插件名称即可,

plugins=(
    git
    # 其它自带的插件
)

安装第三方插件

要想安装第三方的插件,首先需要将插件下载到~/.oh-my-zsh/plugins/目录下。推荐两个常用的插件:

(1)zsh-autosuggestions

根据 shell 中输入命令的历史记录,为当前输入的命令提供自动补全提示。

git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/plugins/zsh-autosuggestions

(2)zsh-syntax-highlighting

为 shell 命令进行语法高亮显示。

git clone https://github.com/zsh-users/zsh-syntax-highlighting ~/.oh-my-zsh/plugins/zsh-syntax-highlighting

然后,与启用 oh-my-zsh 自带的插件一样,在 plugins 列表中添加对应的名称。

plugins=(
    ...  # 之前已经声明的插件名称
    zsh-autosuggestions
    zsh-syntax-highlighting
)

最后,通过重启终端或输入下面的命令来使插件生效。

source ~/.zshrc

配置颜色

可以对终端的背景颜色进行配置。
windows terminal 中自带了几种配色,如图。
在这里插入图片描述

Gogh (官网Github)为 gnome terminal、xfce4 terminal 等多种终端提供丰富的配色方案。
在这里插入图片描述

在 ubuntu 子系统中打开终端,执行以下命令,

# clone the repo into "$HOME/src/gogh"
mkdir -p "$HOME/src"
cd "$HOME/src"
git clone https://github.com/Mayccoll/Gogh.git gogh
cd gogh/themes

# necessary on ubuntu
export TERMINAL=gnome-terminal

# themes 目录下有多种主题
# 想要哪种主题,执行对应主题的脚步即可
./atom.sh
./dracula.sh

安装完主题后,在终端上鼠标右键,在 Profiles 选项里面就可以看到已经安装的主题,可以选择使用。
在这里插入图片描述

参考链接

  1. 微软官方教程:在 Windows 终端中设置 Powerline
  2. ubuntu美化及解决使用zsh后无法运行ROS
  3. Windows Terminal安装PowerLine教程
  4. 利用zsh、oh-my-zsh、powerlevel10k打造一款好看好用的终端
  5. Powerlevel9k:zsh下最棒的Powerline主题
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ubuntu 与 windows terminal zsh 美化教程 的相关文章

  • Linux中的定时器类

    我需要一个计时器来以相对较低的分辨率执行回调 在 Linux 中实现此类 C 计时器类的最佳方法是什么 有我可以使用的库吗 如果您在框架 Glib Qt Wx 内编写 那么您已经拥有一个具有定时回调功能的事件循环 我认为情况并非如此 如果您
  • sendfile64 只复制约2GB

    我需要使用 sendfile64 复制大约 16GB 的文件 到目前为止我所取得的成就是 include
  • 域套接字“sendto”遇到“errno 111,连接被拒绝”

    我正在使用域套接字从另一个进程获取值 就像 A 从 B 获取值一样 它可以运行几个月 但最近 A 向 B 发送消息时偶尔会失败 出现 errno 111 连接被拒绝 我检查了B域套接字绑定文件 它是存在的 我也在另一台机器上做了一些测试 效
  • 如何在数组中存储包含双引号的命令参数?

    我有一个 Bash 脚本 它生成 存储和修改数组中的值 这些值稍后用作命令的参数 对于 MCVE 我想到了任意命令bash c echo 0 0 echo 1 1 这解释了我的问题 我将用两个参数调用我的命令 option1 without
  • 所有平台上的java

    如果您想用 java 为 Windows Mac 和 Linux 编写桌面应用程序 那么所有这些代码都相同吗 您只需更改 GUI 即可使 Windows 应用程序更像 Windows 等等 如果不深入细节 它是如何工作的 Java 的卖点之
  • 如何有效截断文件头?

    大家都知道truncate file size 函数 通过截断文件尾部将文件大小更改为给定大小 但是如何做同样的事情 只截断文件的尾部和头部呢 通常 您必须重写整个文件 最简单的方法是跳过前几个字节 将其他所有内容复制到临时文件中 并在完成
  • 如何在Linux内核源代码中打印IP地址或MAC地址

    我必须通过修改 Linux 内核源代码来稍微改变 TCP 拥塞控制算法 但为了检查结果是否正确 我需要记录 MAC 或 IP 地址信息 我使用 PRINTK 函数来打印内核消息 但我感觉很难打印出主机的MAC IP地址 printk pM
  • NPTL 和 POSIX 线程有什么区别?

    NPTL 和 POSIX 线程之间的基本区别是什么 这两者是如何演变的 POSIX 线程 pthread 不是一个实现 它是几个函数的 API 规范 纸上的标准 英文 其名称以pthread 以及定义在
  • 有谁知道在哪里定义硬件、版本和序列号。 /proc/cpuinfo 的字段?

    我想确保我的 proc cpuinfo 是准确的 目前它输出 Hardware am335xevm Revision 0000 Serial 0000000000000000 我可以在代码中的哪里更改它以给出实际值 这取决于 Linux 的
  • ubuntu:升级软件(cmake)-版本消歧(本地编译)[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我的机器上安装了 cmake 2 8 0 来自 ubuntu 软件包 二进制文件放置在 usr bin cmake 中 我需要将 cmake 版本至少
  • C语言中如何通过内存地址映射函数名和行号?

    如何用 GCC 中的内存地址映射回函数名称和行号 即假设一个 C 语言原型 void func Get the address of caller maybe this could be avoided MemoryAddress get
  • 为什么我可以直接从 bash 执行 JAR?

    我是一个长期从事 Java 工作的人 并且知道运行带有主类的 JAR 的方法MANIFEST MFJar 中的文件很简单 java jar theJar jar 我用它来启动 Fabric3 服务器 包含在bin server jar在其标
  • 在我的 index.php 中加载 CSS 和 JS 等资源时出现错误 403

    我使用的是 Linux Elementary OS 并在 opt 中安装了 lampp My CSS and JS won t load When I inspect my page through browser The console
  • 查找哪个程序运行另一个程序

    我有一个 NAS 运行在 Redhat Linux 的有限版本上 我按照指示破解了它 这样我就可以访问 shell 这很有帮助 我还做了一些修改 其他人也做过修改 除了一个问题之外 它们似乎都工作得很好 不知何故 每隔 22 天 系统就会关
  • 在脚本内使用不带密码的 sudo

    由于某种原因 我需要作为用户在没有 sudo 的情况下运行脚本 script sh 该脚本需要 root 权限才能工作 我认为将 sudo 放入 script sh 中是唯一的解决方案 让我们举个例子 script sh bin sh su
  • 内核模式下的线程(和进程)与用户模式下的线程(和进程)有什么区别?

    我的问题 1 书中现代操作系统 它说线程和进程可以处于内核模式或用户模式 但没有明确说明它们之间有什么区别 2 为什么内核态线程和进程的切换比用户态线程和进程的切换花费更多 3 现在 我正在学习Linux 我想知道如何在LINUX系统中分别
  • 我不明白 execlp() 在 Linux 中如何工作

    过去两天我一直在试图理解execlp 系统调用 但我还在这里 让我直奔主题 The man pageexeclp 将系统调用声明为int execlp const char file const char arg 与描述 execl exe
  • MySQL 中的创建/写入权限

    我的设备遇到一些权限问题SELECT INTO OUTFILE陈述 当我登录数据库并执行简单的导出命令时 例如 mysql gt select from XYZ into outfile home mropa Photos Desktop
  • 如何在基于 Linux 的系统上的 C 程序中使用 mqueue?

    如何在基于 Linux 的系统上的 C 程序中使用 mqueue 消息队列 我正在寻找一些好的代码示例 可以展示如何以正确且正确的方式完成此操作 也许是一个操作指南 下面是一个服务器的简单示例 该服务器接收来自客户端的消息 直到收到告诉其停
  • 确定我可以向文件句柄写入多少内容;将数据从一个 FH 复制到另一个 FH

    如何确定是否可以将给定数量的字节写入文件句柄 实际上是套接字 或者 如何 取消读取 我从其他文件句柄读取的数据 我想要类似的东西 n how much can I write w handle n read r handle buf n a

随机推荐

  • uni-app转小程序遇到的问题 (组件使用插槽的问题)(跨端兼容、条件编译)(小程序自定义胶囊按钮封装)(uni-app挂载原型链)

    1 uni app转小程序组件使用插槽的问题 uni app封装的组件使用问题 1 插槽样式 H5页面编译是有效果的 在小程序中编译的位置错误 它会跳出本来的插槽位置到最后 解决方法 使用父传子传递值 就可以继承组件的样式 封装的组件 使用
  • python使用from keras.utils import to_categorical出错

    python使用from keras utils import to categorical出错 我使用的python编辑环境Sublime Text keras的版本2 6 0 结果语句from keras utils import to
  • 【WiFi】国产WiFi芯片

    目录 1 概述 2 WiFi芯片的市场格局 3 中国的WiFi芯片公司 3 1 华为海思 3 2 乐鑫科技 3 3 博通集成 3 4 紫光展锐 3 5 康希通信 3 6 南方硅谷 4 国产WiFi芯片竞争格局 4 1 内卷WiFi 4 4
  • 芯片后端开发基础知识(二)

    目录 1 静态时序分析 Static Timing Analysis 2 波形的压摆 Slew 3 信号偏斜 Skew 4 时序路径 Clock Path 5 时序弧 Timing Arc 6 时钟域 Clock Domain 7 工作环境
  • 【IPC-UNIX网络编程】第4章管道和FIFO

    1 一个简单的客户 服务器例子 Client从标准输入 stdin 读进一个路径名 并把它写入IPC通道 Server从该IPC通道读出这个路径名 并尝试打开其文件 若server能打开该文件 它能读出其中的内容 并写入 不一定同一个 IP
  • 本科毕设——基于人脸识别的签到系统的研究

    本人普通四非本科 毕设选了这个比较大众且成熟的选题 四处借鉴后完成了论文 现在写写一些我完成毕设期间的历程 在完成论文开题报告后我开始寻求代码以期完成一个简易人脸识别签到系统的设计 开始我用了舍友选修课人工智能的大作业 他所采用的是传统的h
  • Adapter模式——设计模式学习笔记

    Adapter模式 一 意图 将一个类的接口转换成客户希望的另外一个接口 Adapter模式使得原本由于接口不兼容而不能在一起工作的那些类可以在一起工作 二 动机 为复用而设计的通用的类 总是存在一些特殊的情况 使其不能够使用或者完成相应的
  • pt工具常用命令

    pt工具介绍 Percona Toolkit简称pt工具 是Percona公司开发用于管理MySQL的工具 功能包括检查主从复制的数据一致性 检查重复索引 定位IO占用高的表文件 在线DDL等 DBA熟悉掌握后将极大提高工作效率 下载地址h
  • YOLO物体检测-系列教程2:YOLOV2整体解读

    YOLO 系列教程 总目录 YOLOV1整体解读 YOLOV2整体解读 YOLOV2提出论文 YOLO9000 Better Faster Stronger 1 YOLOV1 优点 快速 简单 问题1 每个Cell只预测一个类别 如果重叠无
  • 第二十七课、应用程序中的主窗口------------------狄泰软件学院

    一 主窗口的概念 1 应用程序中的主窗口 1 主窗口是与用户进行长时间交互的顶级窗口 2 程序的绝大多数功能直接由主窗口提供 3 主窗口通常是应用程序启动后显示的第一个窗口 4 整个程序由一个主窗口和多个对话框组成 2 Qt中的主窗口 1
  • leetcode排序算法总结—时间复杂度o(nlogn)-希尔/堆排/快排/归并小记

    排序算法总结 时间复杂度O nlogn 希尔 堆排序 快排 归并 希尔排序 有一段间隔的排序 可以逐个子表进行排序 然 例如王道 都给出便于计算机进行连续访问的程序算法 即依次按元素比较不同子表进行子表的调整 时间复杂度O n 1 3 最坏
  • 面向对象设计原则——开闭原则

    开闭原则是面向对象的可复用设计的第一块基石 它是最重要的面向对象设计原则 开闭原则由Bertrand Meyer于1988年提出 定义 开闭原则 Open Closed Principle OCP 一个软件实体应当对扩展开放 对修改关闭 即
  • 盘点2013:21款最优秀的开源数据库

    作为一名软件开发人员或DBA 其中一份必不可少的工作就是与数据库打交道 比如MS SQL服务器 MySQL Oracle PostgreSQL MongoDB等等 众所周知 其中MySQL是目前使用最广泛最好的免费开源数据库 此外 还有一些
  • C++11新特性——互斥锁、条件变量、原子类型

    1 互斥锁 C 11提供了四种互斥锁 mutex 互斥锁 timed mutex 带超时机制的互斥锁 recursive mutex 递归互斥锁 recursive timed mutex 带超时机制的递归互斥锁 包含头文件 include
  • http和Tcp的长连接和短连接

    转自 https www cnblogs com fubaizhaizhuren p 7523374 html http协议和tcp ip 协议的关系 1 http是应用层协议 tcp协议是传输层协议 ip协议是网络协议 2 IP协议主要解
  • Blender学习笔记(1)快捷键

    鼠标中键 转动视角 shift 中键 平移视角 ctrl 中键上下移动 缩放画面 shift 左键 多选 a是全选 b是多选 在编辑模式下是挤出 ctrl 右键 套索工具 ctrl shift 右键 diselect 中间滚轮滚动 缩放画面
  • Qt Creator 常见问题记录

    1 资源文件不显示 由于不小心删除了工程目录中的qrc文件 重新加回去后 发现项目树中Resources不见了 如下图 图中是显示的 解决办法 选择项目右键 清除 再重新缩放项目 即可看到 2 多个项目 如何选择某个项目作为启动项 VS中可
  • C++ SFINAE简介和std::enable_if_t的简单使用

    最近整理代码时发现了有人常会使用std enable if t 据说这个是C 14才支持的写法 因此再次勾起了我的整理欲 但要是熟悉std enable if的话其实也没啥太大难度 自认为这种使用方式主要提供了一种通过模板偏特化来实现的类型
  • 字符设备驱动相关函数

    Linux内核中 a 使用cdev结构体来描述字符设备 b 通过其成员dev t来定义设备号 分为主 次设备号 以确定字符设备的唯一性 c 通过其成员file operations来定义字符设备驱动提供给VFS的接口函数 如常见的open
  • ubuntu 与 windows terminal zsh 美化教程

    ubuntu 与 windows terminal zsh 美化教程 安装 zsh 和 oh my zsh 选择与安装主题 使用自带的主题 安装 powerlevel10k 主题 1 下载 p10k 主题 2 下载 Meslo LG M R