讲动人的故事,写懂人的代码
在"🦀掌握Rust编程神器,让LED灯闪烁(上)"中,我们探讨了嵌入式领域的"Hello, world!"程序、如何将LED灯的Rust代码修改为闪烁模式、使用Git和VS Code比对代码变更、让VS Code显示let语句的变量类型推断,以及安装免费AI编程助手Codeium的方法。
本篇将继续讨论如何编译、运行、提交并解读这段AI生成的代码,分析其不足之处及改进方案,同时介绍一些能简化Rust嵌入式开发终端操作的实用工具。
2.2 编译、运行与提交
✅在详细解读AI生成的代码前,让我们先在b1l目录下运行以下命令来编译并测试代码是否能正常工作:
% cargo run
Compiling semver-parser v0.7.0
(其他行略)
Compiling b1l v0.1.0 (/home/bens/temp/b1l)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 19.28s
Running `probe-rs run --chip nRF52833_xxAA target/thumbv7em-none-eabihf/debug/b1l`
WARN probe_rs::util::rtt: No RTT header info was present in the ELF file. Does your firmware run RTT?
Erasing ✔ [00:00:00] [############################] 20.00 KiB/20.00 KiB @ 35.44 KiB/s (eta 0s )
Programming ✔ [00:00:01] [############################] 20.00 KiB/20.00 KiB @ 19.39 KiB/s (eta 0s ) Finished in 1.626s
由于在上一章中已经安装了目标平台和probe-rs烧录工具,所以这次可以直接顺利运行cargo run命令(该命令包含了cargo build的功能)。开发板第4行第4列的LED在短暂熄灭后(这是因为probe-rs在烧录程序前需要先擦除开发板上的原有程序),便开始快速闪烁起来,如图2-7所示:
图2-7 AI给出的闪烁代码果然让开发板的第4行第4列的LED快速地闪烁起来
✅既然代码可以正常运行,我们就可以运行以下以%开头的几个命令来提交代码,这样将来修改时就能方便地进行对比:
# 按Ctrl+C中止程序,让终端回到命令行提示状态
% git status
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: src/main.rs # main.rs文件包含AI的闪烁代码
Untracked files:
(use "git add <file>..." to include in what will be committed)
Cargo.lock # 因为这是应用程序,所以自动生成的Cargo.lock需要提交,以便保持依赖的稳定性
no changes added to commit (use "git add" and/or "git commit -a")
% git add .
% git status
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: Cargo.lock
modified: src/main.rs
# 按照社区约定的Rust标准风格格式化源码,包括代码缩进、空格、换行等,
# 确保项目中的代码风格统一,避免不同开发者之间因格式差异引起的冲突,
% cargo fmt
% git commit -m "feat: blinked the LED using cortex_m::asm::delay"
[main 726e6e2] feat: blinked the LED using cortex_m::asm::delay
2 files changed, 438 insertions(+), 5 deletions(-)
create mode 100644 Cargo.lock
% git log --oneline
726e6e2 (HEAD -> main) feat: blinked the LED using cortex_m::asm::delay
b7d4d95 chore: initialized the project
2.3 解读AI给出的闪烁代码
让我们通过代码注释重点解读AI给出的闪烁代码中新增的部分,具体内容如代码清单2-1所示:
代码清单2-1 ch02/b1l/src/main.rs 使用让处理器空转的cortex_m::asm::delay()函数实现延时
#![deny(unsafe_code)]
#![no_main]
#![no_std]
use cortex_m_rt::entry;
use embedded_hal::digital::OutputPin;
use microbit::board::Board;
use panic_halt as _;
// 导入延时函数,用于实现程序中的时间延迟
use cortex_m::asm::delay;
#[entry]
fn main() -> ! {
let mut board = Board::take().unwrap();
loop {
board.display_pins.col4.set_low().unwrap();
board.display_pins.row4.set_high().unwrap();
// delay()是使用处理器内部循环来实现延时的函数,
// 参数值代表处理器要执行的循环次数,相当于约1/16秒
delay(1_000_000);
// 将第4行设置为低电平,以便熄灭这个LED
board.display_pins.row4.set_low().unwrap();
// 再次延时约1/16秒
delay(1_000_000);
}
}
🔎延时功能 delay(1_000_000) 是如何工作的?这个功能就像给程序设置一个短暂的休息时间。当程序执行到这里时,处理器会进入空转状态——就像在原地踏步,白白消耗电量。
我们的开发板使用的处理器运算速度很快,每秒可执行6400万次基本运算。当处理器空转100万次时,由于每次空转需要4次基本运算,总共就需要400万次基本运算。根据处理器的运算速度,这段休息时间约为0.0625秒(即1/16秒)。
在LED闪烁程序中,LED的亮和灭状态各需要一次休息,因此一个完整的闪烁周期约为1/8秒(难怪LED闪烁得很快)。如果想调整LED闪烁的速度,只需修改这个数值:暂停1秒用16,000,000,暂停0.5秒用8,000,000,要实现更快的0.1秒闪烁则使用1,600,000。
2.4 改进AI给出的闪烁代码
⚠️不过,代码清单2-1中使用 cortex_m::asm::delay() 的延时方式存在两个主要局限性:首先,让处理器执行空指令循环来"数数"会使处理器持续运行并消耗电能;其次,这种计时方式的精确度较低。要实现更精确的计时,我们应该使用开发板上的专用硬件定时器功能。那么,如何使用这些专用硬件定时器呢?
遇事不决,求助AI。让我们把这个疑问和代码清单2-1交给AI,请它给出改进后的代码,如代码清单2-2所示:
代码清单2-2 ch02/b1l/examples/b1lut0.rs 使用micro:bit v2开发板上的专用硬件定时器TIMER0外设实现延时
#![deny(unsafe_code)]
#![no_main]
#![no_std]
use cortex_m_rt::entry;
use embedded_hal::digital::OutputPin;
// 导入延时功能的DelayNs trait
use embedded_hal::delay::DelayNs;
use microbit::board::Board;
// 导入开发板专用硬件定时器功能
use microbit::hal::timer::Timer;
use panic_halt as _;
#[entry]
fn main() -> ! {
let mut board = Board::take().unwrap();
// 初始化硬件定时器TIMER0
let mut timer = Timer::new(board.TIMER0);
loop {
board.display_pins.col4.set_low().unwrap();
board.display_pins.row4.set_high().unwrap();
// 延时500毫秒
timer.delay_ms(500_u32);
board.display_pins.row4.set_low().unwrap();
// 再次延时500毫秒
timer.delay_ms(500_u32);
}
}
🔎如果你不想手动输入代码清单2-2的内容,可以直接运行本书代码库中已经写好的代码。只需在终端的ch01/b1l文件夹下运行下面的命令:
# b1lut0表示Blink the 1st Led Using Timer0
cargo run --example b1lut0
🔎硬件定时器的工作原理其实很简单:当需要计时时,我们先给定时器设定一个目标值,然后启动它开始计数。有趣的是,在定时器计数期间,处理器可以进入睡眠模式来节省电能,而不必保持工作状态。当定时器达到目标值时,它会自动发出中断信号,将处理器从睡眠中唤醒。
这种设计带来了三大优势:由于处理器可以在计时过程中进入低功耗模式,显著降低了能源消耗;使用专门的硬件计数器,让计时精确度远超软件计时;最关键的是,处理器不会被计时任务占用,可以专注于处理其他工作,特别适合需要同时处理多项任务的场景。
✅修改完代码后,运行以下命令来格式化、编译、运行并提交代码(后续类似步骤将不再重复说明)。
% cargo fmt
% cargo clean
% cargo run
# 按Ctrl+C退出循环程序
% git status
% git diff
# 按q键退出git diff界面
% git add .
% git status
% git commit -m "feat: blinked the LED using microbit::hal::timer::Timer"
% git log --oneline
# 按q键退出git log界面
⚠️在终端里逐个输入这些命令是不是很费时?即便使用键盘上的上下箭头键、在终端中输入history命令(适用于Ubuntu/macOS及Windows 11的PowerShell 7+),或按Ctrl+R来搜索历史命令,操作起来还是不够便捷。有没有更好用的终端命令行神器,能让我们更轻松地输入命令呢?
2.5 在终端轻松输入命令的神器
🔎想让命令行操作更轻松吗?神器可以帮你简化git命令——输入gst代替git status查看状态,用ga .替代git add .添加文件到暂存区。它还能实时显示git仓库状态,并提供智能的命令补全功能。
神器还会基于你的使用历史提供命令建议。当你开始输入一行命令的头几个字符时,它会用淡灰色显示可能的完整命令(即你以前输入过的命令)。只需按下右方向键或Ctrl+E,就能快速采用建议,大幅提升输入效率。
更棒的是,它能用颜色标记命令状态:正确的命令显示为绿色,错误的显示为红色。文件路径也有独特的颜色标记,让你一眼就能判断命令是否正确。
除此之外,它还提供了强大的命令补全功能,支持更多命令和参数的智能补全,让你的命令行操作更加流畅自然。如图2-8和2-9所示:
图2-8 Ubuntu和macOS上的Oh My Zsh会用红叉标记错误命令gti,并在用户输入git c后自动以灰色字体显示历史命令建议
图2-9 Windows 11上的Oh My Posh会用红叉标记错误命令gti,并在用户输入git c后自动以灰色字体显示历史命令建议
看起来很心动对吧?这个神器就是Oh My Zsh(适用于Linux和macOS)和Oh My Posh(适用于Windows)及其插件。
2.5.1 提升终端使用体验的Oh My Zsh和Oh My Posh
🔎如果你是Linux或macOS用户,Oh My Zsh将是你的得力助手。这个开源的Zsh配置框架不仅能简化命令行操作,还能显著提升工作效率。通过丰富的插件系统和主题配置,你的终端将变得既实用又美观。
Oh My Zsh最吸引人的地方在于它的实用性。它提供了大量现成的插件,如git和docker插件,为你带来智能命令补全和便捷的别名功能。想要个性化?它有150多种主题供选择,让你的终端界面焕然一新。对新手来说,它的自动化配置和更新机制非常友好。更重要的是,它拥有活跃的社区,不断开发新的功能和插件。
使用Oh My Zsh后,你会发现日常操作变得轻松自如。它的插件生态系统覆盖了从开发到版本控制的各种场景,你可以根据需求灵活调整功能。当然,它也有局限性:安装过多插件可能会降低终端启动速度,而且需要一些时间来熟悉各项配置。
如果你是Windows用户,Oh My Posh是你的理想选择。这款专为Windows平台打造的终端美化工具支持PowerShell、Windows Terminal等多种终端模拟器,主要特色是美化终端外观并提供状态显示功能。
Oh My Posh提供丰富的主题选择,让你随心切换不同风格。它与Windows上的各种终端模拟器和shell完美兼容,还能实时显示Git仓库状态和分支信息。作为轻量级工具,它专注于核心功能,不会增加系统负担。
Oh My Posh的优势显而易见:它能让终端界面更加美观清晰,配置简单直观,且系统资源占用少。然而,它也有局限性:功能主要集中在外观优化上,对命令行操作的改进有限,插件数量也不如Oh My Zsh丰富。不过,对于想要美化终端界面并简化Git操作的Windows用户来说,Oh My Posh仍是理想之选。
🧠 Linux和macOS上的Oh My Zsh和Windows上的Oh My Posh配置框架分别为Git 操作提供了哪些快捷命令?
2.5.2 基础平台zsh或PowerShell 7+
这些神器虽然强大,但在使用前需要先安装它们的基础平台——Linux和macOS用户需要安装zsh,Windows用户则需要安装PowerShell 7+(表示版本7或更高版本)。可以按照表2-3的安装要点安装zsh或PowerShell 7+:
表2-3 zsh或PowerShell 7+安装要点
| 在Ubuntu 24上安装zsh | 在macOS上安装zsh | 在Windows 11上安装PowerShell 7+ |
|---|---|---|
# 查看zsh版本(检查是否已安装)zsh --versionapt list --installed | grep zsh# 推荐使用apt安装zsh apt install zsh# 参考网页 github.com/ohmyzsh/ohm… # 将zsh设置为默认shell后重新登录 chsh -s $(which zsh)# 验证安装是否成功 echo $SHELL# 检查最新可安装版本 apt show zsh | grep Version# 升级 sudo apt updatesudo apt upgrade zsh | # 查看zsh版本(检查是否已安装)zsh --versionbrew info zsh# 推荐使用brew安装zsh brew install zsh# 参考网页 github.com/ohmyzsh/ohm… # 验证安装是否成功 echo $SHELL# 升级 brew updatebrew upgrade zsh | # 安装PowerShell 7+以替代系统自带的5.1 # 查看PowerShell版本(检查是否已安装) winget list Microsoft.PowerShell# 推荐使用winget安装git winget install --id Microsoft.Powershell --source winget# 参考网页 learn.microsoft.com/en-us/power… # 升级 winget upgrade --id Microsoft.Powershell |
🔎Zsh(Z Shell)是一款功能强大的工具。作为Unix shell和命令行解释器,它不仅保留了Bash的所有优点,还增添了许多新特性。无论在macOS还是Linux系统上,它都能提供友好且高度可定制的命令行环境。
Zsh最突出的特点是其智能功能。它提供命令、文件名和路径的自动补全,让编程更加流畅。对于脚本编写者来说,它不仅完全兼容Bash语法,还提供了更多灵活选项。通过Oh My Zsh框架,你可以轻松安装主题和插件,打造既实用又美观的终端。
在日常使用中,Zsh的贴心设计随处可见。它的提示符能显示Git状态和系统状态等实用信息。它的历史记录搜索功能直观高效,让你轻松找到之前使用过的命令。更重要的是,它在macOS和Linux上提供一致的使用体验,并且具有强大的文件匹配能力,能轻松应对复杂的目录结构。
Zsh的优势明显:内置实用功能如共享历史和行内历史补全;通过Oh My Zsh或Prezto支持丰富的插件生态;智能补全和快捷键提升工作效率;活跃的社区支持;高度可定制性;原生Git支持让版本控制更简单。
当然,Zsh也存在一些局限性。新手可能需要时间适应其丰富的功能。安装过多插件会影响启动速度。某些脚本可能需要调整才能与Bash完全兼容。部分功能依赖插件可能带来额外问题。某些Linux发行版需要手动安装和配置。
谁最适合使用Zsh?软件开发者和运维人员可以通过它提升工作效率;喜欢个性化的用户会享受其丰富的主题和插件;跨系统工作的用户会感激其一致性体验;复杂Shell脚本的编写者能从中受益;Git用户会欣赏其原生支持。
Zsh就像一位得力助手。虽然初期需要一定学习时间,但掌握后必定让你的命令行工作事半功倍。无论是效率提升还是使用体验,它都不会让你失望。
🔎让我们来了解PowerShell的两个重要版本:PowerShell 5.1和PowerShell 7+。PowerShell 5.1是Windows 11自带的版本,它就像一个专为Windows量身定制的管家,基于.NET Framework开发。PowerShell 7+则是一位现代化的多面手,它基于.NET Core(现在是.NET 5+)构建,可在Windows、Linux和macOS上运行。
PowerShell 5.1就像一位经验丰富的Windows专家,对系统了如指掌。它拥有丰富的模块库,擅长管理Windows的系统API、服务、注册表和文件系统。不过,它只在Windows平台工作,就像一位"专一"的管家。
PowerShell 7+则像一位见多识广的现代管家。它不仅跨平台工作,还带来了管道链运算符和并行处理等新功能。它的错误处理更智能,性能更出色。虽然它能运行大多数PowerShell 5.1的模块,但在某些场景可能遇到兼容性问题。
这两位管家各有优势:PowerShell 5.1作为Windows家族的老管家,拥有丰富的社区资源且开箱即用。PowerShell 7+则像位精通多国语言的现代管家,适应性强,性能更好,功能持续更新。
当然,每位管家都有局限。PowerShell 5.1局限于Windows平台,功能更新已停滞。PowerShell 7+虽然现代化,但需要额外安装,可能有兼容性问题,新用户需要时间适应新特性。
如何选择?如果你主要在Windows环境工作,特别是需要使用大量传统Windows工具和脚本,选择PowerShell 5.1更合适。如果你需要跨平台工作,或想要更现代化的开发体验(尤其是在DevOps和云计算领域),PowerShell 7+是更好的选择。对于新项目,我们推荐使用PowerShell 7+,因为它代表着PowerShell的未来。
2.5.3 具备分屏功能和美观界面的现代化终端
✅完成zsh或PowerShell 7+的安装后(Windows用户请注意:后续所有终端命令都需要在PowerShell 7+中运行),如果想要更优质的使用体验,尤其是在分屏功能和界面美观度方面,那么可以安装一款现代化的终端。
具体推荐如下(旧终端 → 新终端):
- Ubuntu:GNOME Terminal → Terminator
- macOS:Terminal → iTerm2
- Windows 11:CMD → Windows Termina
这三个旧终端都不支持分屏功能,而新终端都支持。后续所有终端命令都将在这些现代化终端(安装要点见后文)中执行。
以Ubuntu的Terminator为例,在用gdb调试micro:bit v2开发板时,按下Ctrl+Shift+E可将屏幕分为左右两部分:左侧运行cargo embed连接开发板进行调试,右侧用于设置断点、单步执行程序和查看变量值。每个分割出的屏幕还可以继续分屏,灵活满足不同需求。这比打开多个Terminal窗口再手动调整位置要方便得多,如图2-10所示:
图2-10 在Ubuntu的Terminator中使用分屏来用gdb调试micro:bit v2开发板
🔎Ubuntu提供两款重要的终端:默认的GNOME Terminal和功能强大的Terminator。GNOME Terminal作为Ubuntu的原生终端模拟器,就像一位可靠的老朋友,轻巧易用,能满足日常命令行操作需求。Terminator则是一位全能选手,专为处理复杂任务的高级用户和开发者设计。
GNOME Terminal以简洁实用著称。它就像一把精简版的瑞士军刀,提供所有必需功能而不显臃肿。它启动迅速、资源占用少,支持基本的外观定制,如字体和颜色的更改。对Linux新手而言,它学习曲线平缓,容易上手。
Terminator则堪比瑞士军刀的豪华版。它最显著的特点是窗口分割功能,让你能在同一界面中管理多个终端。它还提供丰富的快捷键配置和插件扩展,甚至能同时向多个终端发送相同命令。这些强大功能让复杂的开发和运维工作变得轻松自如。
这两款工具各有所长。GNOME Terminal优势在于简单直观、系统集成度高、资源占用少。Terminator虽然功能强大,但需要更多系统资源,也需要时间来熟悉。
如何选择?如果你是Linux新手,或只需执行基本的命令行操作,GNOME Terminal完全够用。但对于需要同时处理多任务的开发者或运维人员,尤其是在大屏幕上工作时,Terminator能显著提升工作效率。在进行代码调试、服务器管理或团队协作时,它的多窗口分割和广播输入功能会让你感叹:这才是理想的终端!
🔎macOS提供两款主要的终端:系统自带的Terminal和功能丰富的iTerm2。Terminal像一位技艺高超的单项选手,提供可靠的基础命令行功能;而iTerm2则是一位多才多艺的全能选手,为开发者和高级用户带来众多强大特性。
Terminal作为macOS的原生终端,以轻量化设计见长,与系统完美融合。它支持基本的字体和配色调整,并提供简单的快捷操作。凭借简单直观和开箱即用的特点,它成为许多用户的首选工具。
iTerm2则提供更丰富的功能体验。它让你能在同一窗口中查看多个终端会话,轻松切换任务。除了支持高级标签管理和丰富的主题定制,它还提供实用的录屏回放功能,便于代码演示。其广播输入功能也大大提升了批量操作效率。
说到优势,Terminal以轻量和稳定著称,像位值得信赖的老友,无需复杂配置就能胜任日常工作。iTerm2则通过强大的分屏功能、丰富的自定义选项和完善的开发工具支持,显著提升工作效率。对开发者而言,其状态提示和命令日志功能更是调试过程中的得力助手。
每个工具都有其局限。Terminal在处理复杂任务时略显不足,外观定制也较为受限。iTerm2虽然功能强大,但新用户需要时间熟悉,且会占用更多系统资源。
如何选择?如果你是命令行新手,或只需执行基本操作,Terminal完全够用。若你是开发者,需要处理复杂任务或偏好高度自定义的工作环境,iTerm2是更好的选择。它不仅能提高工作效率,还能更好地支持团队协作。
iTerm2通常是日常开发工作的理想选择,但这并不意味着Terminal就无用武之地。在简单场景下,Terminal的轻量特性仍有其独特优势。具体选择哪款工具,最终要根据个人需求和使用习惯来决定。
🔎Windows提供两款重要的终端:传统的CMD和现代化的Windows Terminal。
CMD是Windows的老将。作为系统的原装配件,它提供基础的命令行功能,尤其擅长处理DOS风格的命令。它的优势是轻巧简单、开箱即用,且与旧系统兼容性极佳。但与现代工具相比,它的界面较为朴素,功能也相对单一。
Windows Terminal则是一位全能战士。它不仅包含了CMD的全部功能,还带来了焕然一新的现代体验。你可以在同一窗口中打开多个标签页,每个标签页都能运行不同的命令行工具——CMD、PowerShell或WSL。它的界面精美,支持GPU加速渲染,还能设置透明度和背景图片。
Windows Terminal的实力不止于表面。它提供丰富的自定义选项,包括快捷键配置、启动设置,甚至可通过JSON文件进行深度定制。对开发者而言,它的分屏功能和多会话支持堪称神器。
这两款工具各有所长。CMD凭借轻量级特性,在处理简单任务或在配置较低的设备上仍然适用,特别是在运行旧版批处理脚本或需要与遗留系统兼容时。
Windows Terminal则更适合现代开发环境。无论是编写代码、调试程序还是管理服务器,它都能胜任自如。其强大的多任务处理能力和个性化配置选项,使它成为开发者和高级用户的理想之选。在跨平台开发或使用WSL时,Windows Terminal的优势尤为明显。
Windows Terminal代表着命令行工具的未来方向,而CMD在特定场景中仍具有不可替代的价值。具体选择哪个工具,最终要根据个人需求和使用场景来决定。
🔎如果对于分屏感兴趣,可以参考表2-4了解三个现代化终端有关分屏的快捷键:
表2-4 三个现代化终端有关分屏的快捷键
| 分屏快捷键 | 在Ubuntu上使用Terminator | 在macOS上使用iTerm2 | 在Windows上使用Windows Terminal |
|---|---|---|---|
| 向右分屏 | Ctrl+Shift+E | Cmd+D | Alt+Shift++ |
| 向下分屏 | Ctrl+Shift+O | Shift+Cmd+D | Alt+Shift+- |
| 切换分屏 | Ctrl+Shift+N 或 Ctrl+Tab | Cmd+Opt+上下左右 | Alt+上下左右 |
| 关闭当前分屏 | Ctrl+Shift+W | Cmd+W | Ctrl+Shift+W |
三个现代化的终端安装要点请参考表2-5:
表2-5 更现代化的终端安装要点
| 在Ubuntu 24上安装Terminator | 在macOS上安装iTerm2 | 在Windows 11上安装Windows Terminal |
|---|---|---|
| # 按窗口键并搜索terminator,查看是否已经安装 # 安装Terminator sudo apt updatesudo apt install terminator | # 按窗口键并搜索iterm2,查看是否已经安装 # 安装iTerm2 brew install --cask iterm2 | # 查看Windows Terminal的版本:屏幕底部“搜索”→搜“终端”或”terminal”→点击“终端”或”terminal”→终端顶部+号右边下箭头→“关于” # 推荐在网页版微软商店里下载后安装Windows Terminal # 参考网页 learn.microsoft.com/en-us/windo… # 验证安装是否成功:屏幕底部“搜索”→搜“终端”或”terminal”→点击“终端”或”terminal” |
2.5.4 安装Oh My Zsh或Oh My Posh
上面这些都准备好后,就可以按照下面的安装要点安装Oh My Zsh或Oh My Posh神器:
在Ubuntu 24上安装Oh My Zsh
# 查看oh my zsh版本(检查是否已安装
omz version
# 安装oh my zsh参考网页
<https://github.com/ohmyzsh/ohmyzsh/wiki>
# 在~/.zshrc文件里添加3个插件:历史命令建议、实时语法高亮、额外命令补全
plugins=( ... zsh-autosuggestions zsh-syntax-highlighting zsh-completions)
# 安装历史命令建议插件
git clone <https://github.com/zsh-users/zsh-autosuggestions> ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
# 安装实时语法高亮插件
git clone <https://github.com/zsh-users/zsh-syntax-highlighting.git> ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
# 安装额外命令补全插件
git clone <https://github.com/zsh-users/zsh-completions> ${ZSH_CUSTOM:=~/.oh-my-zsh/custom}/plugins/zsh-completions
# 验证安装是否成功:关闭并重新打开terminal,git clone一个代码库,并进入,是否能看到main分支
# 升级
omz update
# 安装字体,以便让命令行提示正确显示特殊符号:
# 安装 DejaVu Sans Mono for Powerline字体
sudo apt-get install fonts-powerline
或安装 Nerd Fonts字体
wget <https://github.com/ryanoasis/nerd-fonts/releases/download/v3.1.1/JetBrainsMono.zip\\nunzip> JetBrainsMono.zip -d ~/.local/share/fonts/\nfc-cache -fv
# 选择字体和theme以便正确显示命令行提示
鼠标右击Terminator内部任意处 → Preferences → Profiles → default → General → Font → JetBrainsMonoNL Nerd Font Propo Italic 12 → Colors → Built-in schemes → Solarized light
在macOS上安装Oh My Zsh
同上,最后的字体与配色无需配置。
在Windows 11上安装Oh My Posh
# 查看oh my posh版本(检查是否已安装)
oh-my-posh --version
# 推荐使用winget安装oh my posh
winget install JanDeDobbeleer.OhMyPosh -s winget
# 参考网页
<https://github.com/ohmyzsh/ohmyzsh/wiki>
# 升级
winget upgrade JanDeDobbeleer.OhMyPosh
# 用notepad $PROFILE命令编辑PowerShell配置文件,在文件后添加如下配置:
Import-Module posh-git
Import-Module PSReadLine
Set-PSReadLineOption -PredictionSource History
Set-PSReadLineOption -PredictionViewStyle ListView
oh-my-posh init pwsh \| Invoke-Expression
# 安装FiraCode Nerd Font字体,以便让命令行提示正确显示特殊符号:
# 创建临时目录
New-Item -ItemType Directory -Path "$env:TEMP\NerdFonts" -Force
# 下载 FiraCode Nerd Font
curl -LO <https://github.com/ryanoasis/nerd-fonts/releases/download/v3.1.1/FiraCode.zip>
# 把已下载的 zip 文件移动到临时目录
Move-Item .\FiraCode.zip "$env:TEMP\NerdFonts\FiraCode.zip”
# 解压字体文件
Expand-Archive -Path "$env:TEMP\NerdFonts\FiraCode.zip" -DestinationPath "$env:TEMP\NerdFonts\FiraCode" -Force
# 安装字体
$fonts = (New-Object -ComObject Shell.Application).Namespace(0x14)
Get-ChildItem "$env:TEMP\NerdFonts\FiraCode\*.ttf" \| ForEach-Object { $fonts.CopyHere($_.FullName) }
# 清理临时文件
Remove-Item "$env:TEMP\NerdFonts" -Recurse -Force
# 选择字体和配色方案以便正确显示命令行提示
Windows Terminal → 设置 → 配置文件 → PowerShell → 其他设置 → 外观 → 字体 → FiraCode Nerd Font → 配色方案 → Solarized Light
在安装和配置这些编程神器的过程中,你可能会遇到一些问题。遇到问题时,建议将操作步骤和环境信息详细告诉AI助手,这样能更准确地获得解决方案。
掌握并熟练运用本章介绍的这些有着超好用户体验的编程神器后,你的编程之旅一定会充满乐趣。
- End -
如果喜欢这篇文章,别忘了给文章点个“赞” ,好鼓励小吾继续写哦~😃