Vim编辑器完全指南:从模式解析到高效开发环境配置
1. 项目概述为什么Vim值得你投入时间如果你在Linux世界里待过哪怕一天大概率都听说过Vim。它可能是你第一次用vi命令打开一个配置文件时面对那个一片空白、不知道怎么输入、更不知道怎么退出的界面时留下的“心理阴影”。但今天我想和你聊聊为什么这个诞生于1991年的文本编辑器至今仍是无数开发者、系统管理员和极客们的主力武器甚至成为一种文化符号。简单来说Vim是一个模式化的、高度可定制的、完全通过键盘操作的文本编辑器。它的核心魅力在于“编辑效率”。一旦你熟悉了它的逻辑双手无需离开键盘主区就能完成光标移动、文本增删改查、复制粘贴、搜索替换等所有操作行云流水。这对于需要长时间编码或编辑配置文件的人来说是一种生产力的巨大解放。网络上流传的热词如“vim配置c语言开发环境”、“vim光标移动快捷键”、“vim保存退出命令”恰恰说明了大家关心的不是“能不能用”而是“如何用好”。很多人从图形化的VS Code或Sublime Text过来会觉得Vim陡峭的学习曲线令人望而却步。这我完全理解。但请相信你不需要一开始就成为Vim大师。哪怕只学会如何移动、如何插入、如何保存退出也能让你在远程服务器上从容不迫地修改一个关键配置。而每多学一个命令你的效率就会提升一分。这篇文章就是为你准备的从“生存”到“进阶”的指南。无论你是刚接触Linux的新手还是想提升终端效率的老兵都能找到对你有用的东西。2. Vim的核心哲学与三种模式解析要驾驭Vim首先必须理解它最独特也最核心的设计模式Mode。这是Vim与几乎所有现代编辑器最大的不同也是其高效之源同时也是新手最大的困惑点。2.1 三种基本模式及其切换Vim主要有三种基本模式它们各自承担不同的职责普通模式Normal Mode这是Vim的默认启动模式也是命令的“待命”状态。在这个模式下你按下的每一个字母键都不是为了输入字符而是执行一个命令。例如h、j、k、l分别代表向左、下、上、右移动光标x表示删除光标下的字符dd表示删除整行。普通模式是你思考和规划“如何编辑”的地方。插入模式Insert Mode这个模式和你熟悉的记事本、Word一样按键直接输入文本。从普通模式进入插入模式的命令有很多最常用的是按i在光标前插入。在这个模式下你可以自由地打字。命令行模式Command-line Mode用于执行一些更复杂的、需要输入文本的命令比如保存、退出、搜索、替换等。在普通模式下按:冒号即可进入光标会跳到屏幕底部等待你输入命令按回车执行。它们之间的切换关系可以用一个简单的循环来理解普通模式 - 插入模式按i插入、a在光标后附加、o在下方新开一行等。插入模式 - 普通模式按Esc键或Ctrl[。这是你必须形成肌肉记忆的第一个操作普通模式 - 命令行模式按:。命令行模式 - 普通模式执行命令按回车后自动返回或按Esc取消命令。注意很多新手卡住就是因为不小心进入了插入模式然后拼命按方向键却移动不了光标在默认设置下插入模式的方向键是有效的但效率极低或者不知道如何保存退出。请时刻留意屏幕左下角它会显示当前的模式如-- INSERT --表示插入模式什么都没有通常是普通模式。2.2 为什么是模式化效率从何而来你可能会问这么麻烦的模式切换效率何在关键在于减少手指移动和组合键。想象一下在普通编辑器里你想删除一个单词可能需要将右手从键盘主位移到方向键区移动光标到单词开头按住Shift再按方向键选中最后按Delete。或者用鼠标拖选再删除。这个过程涉及多次大幅度的肢体移动和多个键的组合。而在Vim的普通模式下你只需要右手在j, k, l, ;这片区域动几下dwdelete word即可删除从光标处到单词末尾的部分。你的双手始终保持在打字的“原位”思想也集中在“动作删除d 目标单词w”这个语义上而不是机械的光标移动。这种“动词名词”的语法结构是Vim命令设计的精髓。d是删除动词后面可以接w单词、$到行尾、)到下一句等作为名词。c修改即删除并进入插入模式、y复制等也是同样的逻辑。这种组合带来了近乎无限的编辑能力也是你后续提升的基石。3. 从生存到熟练必须掌握的Vim核心命令手册下面我将命令分为“生存必备”、“移动效率”、“编辑操作”和“文件管理”四个部分由浅入深。你可以像查字典一样使用这个章节。3.1 生存必备如何打开、编辑、保存和退出这是你第一次使用Vim时必须掌握的否则你可能真的会困在里面。打开文件在终端中输入vim 文件名。如果文件不存在Vim会创建一个新缓冲区保存时才创建文件。进入插入模式开始编辑i在光标前插入。a在光标后附加。o在当前行下方新开一行并进入插入模式。I大写移动到行首并进入插入模式。A移动到行尾并进入插入模式。保存与退出在普通模式下按:进入命令行模式:w保存Write文件。:q退出Quit。如果文件有修改未保存Vim会阻止并提示。:q!强制退出丢弃所有未保存的修改。这是当你改乱了想重来时用的“后悔药”。:wq或:x保存并退出。这是最常用的组合。ZZ普通模式下的大写Z两次这也是保存并退出的快捷方式无需进入命令行模式。实操心得:wq和ZZ是我最常用的退出方式。记住:q!这个“强力退出”命令它能救你于水火。另外你可以用:w 新文件名来另存为。3.2 光标移动抛弃鼠标与方向键在普通模式下移动光标是Vim效率的第一步。目标是让右手食指放在j键上向下中指在k向上无名指在l向右小指在;键附近左手则负责按其他修饰键。一开始会别扭但坚持一天就会习惯。基本移动h/j/k/l左 / 下 / 上 / 右。这是基石。w/b移动到下一个 / 上一个单词的词首。e/ge移动到当前 / 上一个单词的词尾。0数字零 /^/$移动到行首/ 行首第一个非空白字符 /行尾。大幅移动gg/G移动到文件第一行/文件最后一行。:数字例如:50回车跳转到第50行。Ctrlf/Ctrlb向下 / 向上翻一页Page Down/Up。H/M/L移动到当前屏幕的顶部High、中间Middle、底部Low。搜索移动极其高效/关键词向后搜索。输入后按回车用n跳转到下一个匹配项N跳转到上一个。?关键词向前搜索。*/#直接搜索光标当前所在的单词向后*或向前#。注意事项很多教程说一定要禁用箭头键来强迫自己使用hjkl。我的建议是初期不必强求先用起来。但要有意识地去使用w,b,$这些更高效的移动命令它们比按很多次l快得多。搜索移动/是定位的神器一定要熟练掌握。3.3 文本编辑删除、复制、粘贴与撤销这是编辑的核心结合移动命令威力无穷。删除Deletex删除光标下的字符。d 移动命令删除从光标处到移动目标的内容。例如dw删除一个单词从光标到词尾。d$或D删除到行尾。dd删除整行。d5j删除光标及向下的5行。复制Yank与粘贴Puty 移动命令复制Yank文本。用法同d。yw复制一个单词。yy或Y复制整行。p在光标后粘贴。如果复制的是整行则在当前行下方粘贴。P大写在光标前粘贴。如果复制的是整行则在当前行上方粘贴。修改Change这个命令太方便了它等于d 移动命令 进入插入模式。c 移动命令例如cw修改一个单词c$修改到行尾。输入后直接进入插入模式等待你输入新内容。撤销Undo与重做Redou撤销上一次操作。Ctrlr重做恢复被撤销的操作。实操心得d,y,c这三个命令是“动词”它们和移动“名词”的组合构成了Vim编辑的“句子”。比如dapdelete a paragraph删除一个段落。多思考这种组合而不是单个键的操作。粘贴命令p在处理多行文本时位置逻辑和普通编辑器不同需要适应一下。3.4 进阶编辑搜索替换与可视模式搜索与替换命令行模式这是处理批量文本的利器。:%s/旧文本/新文本/g将全文中的“旧文本”替换为“新文本”。%表示全文范围g表示一行内所有匹配项都替换。:10,20s/旧文本/新文本/g仅替换第10行到第20行。将g换成gc则会在每次替换前询问你确认。可视模式Visual Mode用于选中文本块类似于其他编辑器里的鼠标拖选。v进入字符可视模式以字符为单位选择。V大写进入行可视模式以整行为单位选择。Ctrlv进入块可视模式列模式可以选中一个矩形区域这对于编辑表格或同时注释多行代码非常有用。选中后可以进行d,y,c等操作。针对热词“ubuntu vim 整块代码注释”你可以用Ctrlv进入块可视模式用j/k选中多行然后按I大写i进入块插入模式输入注释符如//或#最后按Esc所有选中的行首都会同步添加注释。取消注释则是选中注释符号区域后按d删除。4. Vim的个性化配置与插件生态入门默认的Vim已经很强大了但它的真正威力在于其高度的可定制性。通过编辑~/.vimrc配置文件你可以打造一个完全适合自己的开发环境。4.1 基础配置示例~/.vimrc你的用户主目录下的.vimrc文件是Vim的配置文件。如果不存在创建一个即可。 显示行号 set number 显示相对行号便于执行如 d5j 这样的命令 set relativenumber 语法高亮 syntax on 高亮显示当前行 set cursorline 将Tab键和缩进设置为4个空格对Python等语言友好 set tabstop4 set shiftwidth4 set expandtab 在搜索时实时高亮匹配项 set incsearch 搜索忽略大小写 set ignorecase 如果搜索模式包含大写则不忽略大小写 set smartcase 自动缩进 set autoindent set smartindent 退格键可以删除缩进、行尾换行符 set backspaceindent,eol,start 设置编码 set encodingutf-8 启用鼠标支持在终端中也可以用鼠标点击、选择、滚轮 set mousea注意事项修改.vimrc后需要重启Vim或执行:source ~/.vimrc来重新加载配置。配置是层层递进的建议每次只添加几项测试没问题后再继续便于排查问题。4.2 插件管理简介以Vim-plug为例原生Vim功能虽强但现代开发需要代码补全、语法检查、文件树等功能这就需要插件。Vundle、Pathogen和vim-plug是流行的插件管理器。这里以安装简单的vim-plug为例。安装vim-plug在终端中执行以下命令下载插件管理器。curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim配置插件在~/.vimrc中添加以下内容。call plug#begin(~/.vim/plugged) 声明你要的插件例如 一个经典的文件树插件 Plug preservim/nerdtree 一个强大的状态栏美化插件 Plug vim-airline/vim-airline 一个模糊文件查找插件 Plug junegunn/fzf, { do: { - fzf#install() } } Plug junegunn/fzf.vim call plug#end()安装插件保存.vimrc后重新打开Vim执行:PlugInstall命令。这会自动下载并安装你声明的所有插件。4.3 打造简易开发环境以C语言为例针对热词“vim配置c语言开发环境”一个基础的配置可以包括语法增强安装vim-polyglot插件它集成了多种语言的语法高亮和缩进规则。Plug sheerun/vim-polyglot代码补全可以使用coc.nvim基于Node.js功能强大或YouCompleteMe重量级但精准。对于新手coc.nvim的配置相对友好它模拟了VSCode的体验。编译与运行可以在.vimrc中设置快捷键。例如按F5编译当前C文件按F6运行。 针对C文件的快捷键映射 autocmd FileType c nnoremap F5 :!gcc -Wall -o %:r % echo 编译成功CR autocmd FileType c nnoremap F6 :!./%:rCR%代表当前文件名%:r代表去掉扩展名后的部分。CR代表回车。实操心得插件不要贪多。每添加一个插件都可能带来性能开销或键位冲突。从最影响你效率的痛点开始比如文件浏览NERDTree、快速搜索fzf。配置是一个长期迭代的过程我的.vimrc文件已经积累了五年有几百行但它完全贴合我的工作流。5. 高效工作流与实用技巧合集掌握了基本命令和配置后如何将它们串联起来形成流畅的工作流5.1 多文件与分屏操作打开多个文件vim file1.c file2.h。在Vim内打开新文件:e 文件路径。分屏Split:sp [文件名]水平分屏。不加文件名则分割当前缓冲区。:vsp [文件名]垂直分屏。Ctrlw然后按方向键h/j/k/l在分屏间切换焦点。Ctrlw然后按让所有分屏等宽等高。Ctrlw然后按c关闭当前分屏。5.2 宏Macro录制自动化重复操作这是Vim的大杀器。当你需要对多行进行一系列相同的复杂操作时宏可以录制并重复它们。开始录制在普通模式下按q后跟一个寄存器字母如a屏幕左下角会显示recording a。执行操作正常进行你的编辑操作移动、删除、插入等。停止录制按q。播放宏将光标移动到目标位置按a播放录制在寄存器a中的宏。按可以重复上一次播放的宏。批量执行例如10a会在当前行及后续9行执行宏a。示例给一个列表的每一行末尾加上分号。光标移到第一行行尾按qa开始录制到寄存器a。按A行尾插入输入;按Esc回到普通模式按j移到下一行。按q停止录制。此时按a会对当前行执行操作并移到下一行。如果想对后续100行操作可以输入100a。5.3 寄存器Register的妙用Vim有多个剪贴板寄存器。是默认的无名寄存器0是最近一次复制yank的内容1到9是最近9次删除的内容。还有以a到z命名的用户寄存器。指定寄存器操作在命令前加寄存器名。例如ayy将当前行复制到寄存器aap粘贴寄存器a的内容。查看所有寄存器:reg。系统剪贴板寄存器通常关联系统剪贴板需要Vim支持clipboard特性可用vim --version | grep clipboard查看。y复制到系统剪贴板p从系统剪贴板粘贴。6. 常见问题与排查技巧实录即使老手也会遇到各种问题。这里记录一些典型场景和解决方案。6.1 基础问题速查表问题现象可能原因解决方案打开文件乱码文件编码与Vim编码设置不匹配尝试:set fileencodingutf-8或:e encgbk针对GBK编码文件重新加载。按方向键出现字母处于普通模式且未正确配置这是正常现象应使用hjkl移动。或检查终端模拟器设置。无法保存提示只读文件权限不足用:w !sudo tee %命令输入密码后以root权限保存。或退出后用sudo重新编辑。粘贴代码时格式错乱自动缩进在粘贴时干扰在粘贴前执行:set paste粘贴后再执行:set nopaste。或使用终端粘贴快捷键如ShiftInsert。搜索高亮关不掉上次搜索的高亮残留执行:nohlsearch或简写:noh临时关闭高亮直到下次搜索。热词“vim 保存报错e34”无写入权限或磁盘已满检查文件所在目录权限和磁盘空间。E34错误通常意味着无法创建交换文件也可能是父目录无写权限。6.2 进阶问题与技巧恢复交换文件.swpVim在编辑文件时会创建一个.swp交换文件用于崩溃恢复。如果异常退出再次用vim打开文件时会提示发现交换文件。你可以选择(O)pen Read-Only只读打开查看内容。(R)ecover从交换文件恢复。(D)elete it删除交换文件如果确认不需要恢复。(Q)uit/(A)bort退出。建议先按R恢复保存到一个新文件对比确认无误后再处理原文件。执行外部命令在Vim的命令行模式中!后面可以接任何shell命令。例如:!ls列出当前目录文件。:!gcc %编译当前文件。:r !date将date命令的输出结果插入到当前光标位置。自定义快捷键映射让你的操作更顺手。在.vimrc中添加 将 jk 映射为退出插入模式比按 Esc 键程短 inoremap jk Esc 将 F2 映射为切换行号显示 nnoremap F2 :set nonumber!CR:set relativenumber!CR 将 Leader 键默认为 \加上空格快速保存 let mapleader nnoremap leaderw :wCR这里的inoremap表示在插入模式下映射nnoremap表示在普通模式下映射且非递归避免循环。学习Vim就像学习一门乐器或一种运动初期需要刻意练习形成肌肉记忆。不要试图一次性记住所有命令。从i,Esc,:wq,hjkl,dd,p,u这些最基础的开始每天用Vim做一点实际工作遇到重复操作时就去查一下有没有更高效的命令。几周之后你会发现自己已经离不开这种流畅的键盘操控感了。最终你的.vimrc会成为你最趁手的工具配置而Vim本身则成为你思维在文本世界中的自然延伸。

相关新闻

Linux----cron定时服务

Linux----cron定时服务

一、cron 到底是干嘛的核心作用:Linux 自带的自动循环执行命令 / 脚本工具,替代人工重复干活(不用半夜爬起来手动备份数据库、删日志)。守护进程:后台常驻程序叫 crond,我们操作的命令是 crontab。四大优点…

2026/10/8 15:33:35 阅读更多 →
mitmproxy抓包工具

mitmproxy抓包工具

1、下载&安装 访问:https://mitmproxy.org/双击安装,记住安装路径,在移动端安装时,需要证书,默认安装路径为:C:\Program Files\mitmproxy证书:C:\Program Files\mitmproxy\bin_internal\ce…

2026/10/15 3:09:04 阅读更多 →
猫抓cat-catch网页视频嗅探下载实战指南:零基础也能把在线视频抓成MP4

猫抓cat-catch网页视频嗅探下载实战指南:零基础也能把在线视频抓成MP4

猫抓cat-catch网页视频嗅探下载实战指南:零基础也能把在线视频抓成MP4 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓&#xff08…

2026/10/16 1:30:07 阅读更多 →

最新新闻

模板元编程性能优化:编译时间、内存与运行期膨胀的全面解析

模板元编程性能优化:编译时间、内存与运行期膨胀的全面解析

模版元编程在C圈的定位一直很微妙:有人把它当面试题里的“奇技淫巧”,有人靠它在库里面做类型体操,也有人在项目里因为模板递归太深,编译时间从五分钟干到五十分钟,最后怒删代码改回手写循环。我属于第三种人&#xff…

2026/10/16 8:20:24 阅读更多 →
嵌入式实时C++编程指南:避开动态内存陷阱,构建确定性系统

嵌入式实时C++编程指南:避开动态内存陷阱,构建确定性系统

如果你在嵌入式领域写过几年C代码,大概率听过这样一种说法:C太复杂、实时性难以保证、团队成员水平参差不齐容易写出坑。我在接手某个工业控制项目时也带着类似的顾虑,但真正把这套语言用起来之后,发现很多“坑”其实来自对C特性的…

2026/10/16 8:20:24 阅读更多 →
免费替代Claude Code:开源模型+低价API自建终端编程助手

免费替代Claude Code:开源模型+低价API自建终端编程助手

上周我把自己的常用编程环境彻底换了一遍,起因很朴素:常年在终端里工作,早就受够了在 IDE 和浏览器之间来回切换。最近大家讨论热度很高的 Claude Code,我也想用,体验确实惊艳,但钱包不太友好。于是我把目光…

2026/10/16 8:20:24 阅读更多 →
context-mode实战:大模型上下文管理策略与工程实现

context-mode实战:大模型上下文管理策略与工程实现

大概是半年前,我接到一个需求:给某内部工具加一个 AI 助手。第一版实现很简单——把用户最近几轮对话拼起来,连同问题一起发给模型,回答完直接返回。demo 演示的时候一切正常,产品经理连连点头。结果上线第三天&#x…

2026/10/16 8:20:24 阅读更多 →
Python脚本添加GUI指南:Tkinter、PySide6等四大方案实战对比

Python脚本添加GUI指南:Tkinter、PySide6等四大方案实战对比

1. 为什么要给脚本“穿衣服”:GUI到底解决了什么问题我自己写脚本的习惯一直很随意,命令行能跑通就算完事。但直到某次把脚本交给同事用,我才意识到一个残酷的事实:不是所有人都愿意打开终端敲一行python xxx.py --input data.csv…

2026/10/16 8:20:24 阅读更多 →
打卡系统设计:心理机制、实操框架与习惯养成

打卡系统设计:心理机制、实操框架与习惯养成

1. 打卡为什么有效:3/23这个勾背后的事3月23日,我在打卡表上画下了新一个勾。连续早起打卡的第187天,连续阅读打卡的第152天。说实话,这一天的打卡本身毫无特别之处,特别的是我回头看那串几乎没有断过的记录时&#xf…

2026/10/16 8:19:24 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →