Vim 命令从头学习记录
学习链接:eleon-vim基础教程
Vim - 基础翻屏操作
光标移动:hjkl 20j 向下移动20行,w 向后移动一个字符,b 向前移动一个字符。
Ctrl + u
向上翻半页 UP
Ctrl + d
向下翻半页 Down
Ctrl + f
向下翻整页 Forward
Ctrl + b
向上翻整页 Backward
大写M
跳转到屏幕中间 Middle
大写L
跳转到屏幕最后一行 Last Line
大写H
跳转到屏幕第一行 Home
Count + 大写H
光标移动到顶部下面的count行。
Count + 大写L
光标移动到底部上面的count行。
Ctrl + e
向下翻一行,光标不动
Ctrl + y
向上翻一行,光标不动
Vim - 编辑操作
复制:yy=Y
复制光标所在行,3yy 复制光标所在行以在内的三行, y$ 复制光标所在字符至行尾的内容。
粘贴:p P
一个是粘贴到光标或行之前,一个是之后。
删除:dd
删除本行,3dd
删除光标所在行以在内的三行,D = d$
删除光标所在字符至行尾的内容。
剪切:x
剪切当前字符,3x
剪切当前字符在内的三个字符
交换字符顺序:xp
,其实就是先剪切后粘贴
合并行:大写J
无论光标在哪里,都能把下一行的内容补到当前行尾,间隔一个空格。(在代码整理的时候用吗???)
替换光标处字符(单词打错了后很常用):rb
就可以把光标所在位置字符替换成b,Rccc
就可以把光标所在位置和其后面的俩字符都替换成b。
s
会删除掉单个字符然后进入插入模式。 S
会删除掉光标所在行让后进入插入模式。
变更: cc
与S
的作用一样。
撤销:u
或者 U
都行,撤销上一步。
重做: Ctrl + r
是u
作用的反向
大小写转换:gu + Motion
, gU + Motion
其中Motion可以是w表示转换单词,如果是2w就是转换当前单词在内的俩单词。
重复上次修改:点“.
” 可以重复上次的命令操作。
Vim - 文本对象(常用)
Operation + type + Object 的组合
Operation: 可能是d,y, c, v
Type:只有两种 a
和 i
,分别表示all和in
Object:可以是一堆括号{ [ ( " '
等,也可也是w
(word)s
(句子)t
(tab,html用到)
Vim - 缩进
1 手动缩进:
>>
:增加缩进
<<
:减小缩进
3>>
:当前行以下3行增加缩进,减小缩进类似。
> %
:当光标放在大括号上时有效,对当前块进行增加缩进操作,减小缩进类似。
> i {
:为{}内的内容(不含{})增加缩进
> a {
:为包含{}在内的块儿内内容增加缩进
2 自动缩进:
==
:对当前行自动缩进
4==
:对当前行及下面三行执行自动缩进
=i{
:对{中的内容自动缩进
=a{
:对{中的内容包括{自动缩进(常用)
=%
:当贯标在括号上时自动缩进整个块
3 缩进格式设置:
set shiftwidth=8
设置缩进操作长度为8个空格的长度(如果tab为4个空格,则缩进就是两个制表符,如果tab为8个空格,则缩进就是1个制表符)
set tabstop=4
设置tab的长度为4,当在命令模式下进行缩进时起作用。
set expandtab
在插入模式和命令模式都起作用,使用手动缩进插入的是空格。此时如果在插入模式下敲入tab,则插入的是空格
set noexpandtab
expandtab 的反面,使用手动缩进插入的是制表符。此时如果在插入模式下敲入tab,则插入的是制表符
上面的命令与手动自动缩进命令的配合来编写符合原代码规范的代码。
set softtabstop=8
只在插入模式起作用。 注意与tabstop的不同。如果你想手动写tab则要修改这个命令。
在检查更改时如果要检查自己的设置是否正确使用俩命令:
set list
显示特殊符号,如$表示行尾,Ctrl+I表示tab制表符
set nolist
隐藏特殊符号
4 插入模式下编辑下一行时如何自动缩进:
set <自动缩进类型>
: 类型有四种,autoindent
,smartindent
, cindent
, indentexpr
;
我现在先使用cindent, 是用于c语言时的缩进格式。 我找了很长时间,网上的教程都是东拼西凑,原来学习还得需要系统,这块东西如果光靠一个博客就搞明白的确很费精力。
Vim - 折叠-Floding
如果有不需要的代码可以折叠起来。也可以参考手册命令模式输入:help folding
当前我,几乎不咋用,只有使用vim -d 进行文件对比的时候使用。仅列在这,详情参考vim 基础教程
z + f + Motion
: 创建当前行至Motion为一个折叠。
count + z + F
: 创建当前行之后count行的折叠。
z + f + %
:查找光标所在的块进行块儿折叠。
z + o
打开折叠,z + O
递归打开折叠。
z + c
折叠起来,z + C
递归折叠起来。
z + d
删除光标所在行折叠,z + D
递归删除光标所在块折叠。
z + E
删除所有折叠。
Vim - Buffers 多文件(很重要)
命令模式下有如下命令,我曾苦苦找寻,如今发现vim本身就特么强大的一批了,我还装个毛线的nvim. lvim,骑驴觅驴而已。
:e + 文件名
打开并激活指定文件(e为edit)
:ls, :buffers, :files
列出缓冲区文件,这仨命令一样的作用
:b add b.txt
向缓冲区列表添加新文件但不激活。
:b d 3
删除缓冲区编号为3的文件,d也可写作delete, 如果删除当前文件不需要加数字即可。
:b+空格+Tab
先在命令模式输入ls进入buffer列表,然后输入该命令tab就可实现文件跳转,哈哈好方便啊,我之前都打开一堆vim窗口,简直是浪费声明卧槽了。
:bn, bp
可以切换到buffer中下一个nexp文件,上一个privious文件
:b3
,:buffer3
都可以切换到buffer中符号为3的文件。
:b#
访问刚刚访问的文件,这个应该最常用了。
:bf, :bl
可以跳转到buffer中第一个文件,最后一个文件
:b1.txt, buffer1.txt
都可以切换到指定文件名的文件,支持tab补全。
:set hidden
当写入内容后不保存也能切换不同文件 :set nohidden
作用相反。
Vim - Windows 多窗口
可以将一个窗口分隔成多个窗口,不常用,如果对比文件直接vim -d 不更方便?但是还是记录下基本用法,以免以后用到查找。
sp + 文件名
,split的缩写,横向分隔窗口打开指定文件
vs + 文件名
,vertical split缩写,纵向分隔窗口打开指定文件
Ctrl + W + Motion
Motion 可以是hjkl实现窗口切换
Ctrl + W + w
轮换窗口
Ctrl + W + +
增加窗口高度。Ctrl + W + -
减小窗口高度。
Ctrl + W + >
增加窗口宽度。Ctrl + W + <
减小窗口宽度。
Ctrl + W + Count + action
其中action可以是上面的窗口操作,比如窗口宽度增大4个格:ctrl + W + 4 + >
Ctrl + W + _
最大化窗口高度; Ctrl + W + |
最大化窗口宽度;
Ctrl + W + =
调整窗口为一致性大小。
Ctrl + W + H/J/K/L
注意motion为大写,用于调整光标所在窗口在屏幕的位置。
Ctrl + W + q
退出当前窗口
Ctrl + W + =
除当前窗口之外全部退出,等价于on。
Vim - tabs 多标签
vim -p 文件1 文件2
以TAB形式打开指定文件
vim -p *
以TAB形式打开当前目录所有文件
:tabe + 文件名
以TAB形式打开新文件,常用(tab edit)
gt
或:tabn
跳到下一个tab. (tags跳转比buffers跳转方便,普通模式,不用输入冒号)
gT
或:tabp
跳到上一个tab.
数字 + gt
或 :tabn + 数字
跳到指定序号的的tab
:tabl
跳到最后一个tab
:tabm + 数字
(tab move)将当前tab插入到指定数字的位置
:tabc
(tab close)
:tabo
只保留当前窗口 (tab only)
《思考 buffers Windows tabs 的关系》
之前都是先搜索怎么配置,网上找到博客一通复制粘贴,跟着人家的命令就开始用,也不知到为啥,但是最终还是被这些概念搞烦了,最后使用最简单的vim 打开一个文件的最原始状态。现在机缘成熟,我学到这里了,也该搞明白他们的关系了,看这个大佬博客:如何理解并正确使用 Vim 中的 Buffer、Window 和 Tab
总结:
buffers
: 为文件在内存中的缓存数据,每个文件对应内存中唯一的buffer。
Windows
: 在一个电脑屏幕大小的空间,划分不同的小窗口,每个小窗口可以显示一个打开的文件。可以说Windows可以规定一个窗口的布局。
tabs
:每个tab可以理解为一个电脑屏幕,每个tab里面都可以有一种窗口布局。不同tab之间的窗口没关系。
我应该如何使用 tabs 和 buffer ?
Windows使用的很少,当我使用vim filename.c 打开一个文件,找到一个目标函数,转到定义时此时跳到另外一个文件,此时通过:ls
可以到这个文件的buffer也被激活了,这就已经打开了多buffer.
当我要 porting 两个不同工程的代码时,我可以为每个工程打开一个tag。这样可以方便的实现复制。
之前我都是使用多tag, 每个tag显示一个文件,但是当你使用ctags工具跳转时,tag的名称也会跟着你跳转的文件变化,而且tag太多也会造成选择困难,所以如果文件很多需要tag和buffers配合:总策略如下:
把vim打开的文件分为两类,一类为正在编辑的文件,比如a b两个文件,一类是需要一直查看来回跳转的文件比如a c。我们要创建4个tag. 前两个tag为a,b编辑使用(因为tag跳转命令比buffers跳转要方便一点),后两个tag为a,c两个文件查看跳转,前两个tag修改的内容也会自动同步到全局。
Vim 寄存器
无名寄存器(Unnamed):“
(没错就是个双引号)
用于保存d, c, x, s, y
操作的内容。可以通过命令行输入:reg "
来查看无名寄存器的内容。
数字寄存器(Number): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. 一共10个数字寄存器。
0号寄存器 保存y
操作的内容。
1-9 号寄存器 保存d, c
操作的内容,且保存的内容会随着操作的进行逐渐向后搬移,1号寄存器始终保存着最新删除的内容。
搜索寄存器:/
,当执行搜索字符后,这个寄存器保存刚刚的搜索记录。
系统剪切板寄存器:+ 和 * 。在ubuntu中看到两个寄存器的内容一致,都来自鼠标或键盘复制得到的内容。
只读寄存器:有三个,分别为:
- 文件名寄存器:
%
- 命令寄存器:
:
- 插入文本寄存器:
.
Named - 寄存器:a-z 共26个寄存器
。比较常用。
" + 寄存器 + 操作
:操作指定寄存器。其中复制操作时可以指定大小写(小写覆盖,大写追加),粘贴时只能小写。例子:
"ayaw
:将单词 复制 到 a 寄存器。
"byiw
:将单词 复制 到 b 寄存器。
"Cyaw
:将单词 追加 到 c 寄存器。
"ap
:将 a 寄存器中的内容粘贴到光标之后的位置。
"cP
:将 c 寄存器中的内容粘贴到光标之前的位置。
思考:这一堆寄存器什么时候用?
用于存储录制的宏:比如想要实现快速实现单行内容添加注释或者增加注释。(在调试代码)
用于porting代码:将一个文件中的不连续的几行内容复制到另一个文件的某位置,可以用寄存器追加,不用来回切换文件。
用于存储书签:我发现书签的有名寄存器虽然也叫abcd这些字母,但是使用marks得到的书签仅用于存储书签,根这里介绍的寄存器不是一个寄存器。
寄存器内容查看:reg + 寄存器名
寄存器内容操作:Count + " + 寄存器名 + 操作
举例:3"+p
或 "+3p
都是将+寄存器中的内容粘贴到光标处重复3次。
Vim - Macro 宏(需要用寄存器存储)
宏就是一个录制好的一串命令,如果这个命令需要多次重复操作,你就可以录制一个宏到指定的Named 寄存器,这样下次就不用一个一个敲了(但是觉的还是很少用到)。
记录宏的步骤:
开始记录宏:q + 寄存器名
输入宏命令
按下q
结束宏录制
使用宏的步骤:
使用录制的宏命令:@ + 寄存器名
使用最近一次录制的宏命令:@@
追加宏内容:q + 大写寄存器名
多次重复宏命令:count + @ + 寄存器名
举例子:
比如我想要实现按下@c
来快速将本行行首添加//
注释掉本行(想法牛逼,很实用)。
比如我想要实现按下@d
来快速将本行行尾添加;
。
Vim - Marks书签(需要用寄存器存储)
用到小写和大写两种寄存器,每个文件内有一套小写Named寄存器提供文件内书签跳转(局部跳转),而文件之间有大写Named寄存器可以实现文件之间书签跳转(全局跳转)。
添加书签:m + Named寄存器
清理书签:delmarks a
可清理a书签
查看书签:marks + 要查看的寄存器
(此时区分小写还是大写)
跳转到书签所在行: ' + Named寄存器
(单引号)
跳转到书签所在行与列: ` + Named寄存器(反引号)
范式:Operation + ' + Named寄存器
(单引号)
比如:
d'a
:删除当前光标所在行至a寄存器书签所在行之间的内容。
y'a
:复制光标所在行至a寄存器书签所在行之间的内容。
c'a
:删除当前光标所在行至a寄存器书签所在行之间的内容并进入插入模式。
思考:书签什么时候用?
通过marks查看寄存器存储的标签,可见他会随着你删除代码动态更新,这比较有用。
1,多文件穿梭,可能你说用buffers的命令bn就够了,但是书签可以更快的跳转到目标位置,还能跟随删除粘贴等命令移动。
2,调试过程中,可以标记报错位置,快速往返于代码和日志。
Vim - 插入模式下的快捷键
- 进入插入模式常用的有:i, l, a, A, o, O, ea
- Ctrl + y : 插入光标之前行的内容,一直操作就可以一直复制。
- Ctrl + e : 插入光标之后行的内容,一直操作就可以一直复制。
- Ctrl + r + =:将表达式求值并插入。(会议一下:在命令模式使用“ap插入寄存器内容)
Ctrl + r + 寄存器
,将寄存器内容插入Ctrl + t
:当前行增加缩进Ctrl + d
:当前行减小缩进Ctrl + w
:删除光标前面的单词- Ctrl + h:删除光标前面的字符
- Ctrl + o:切换到普通模式,完成一个命令后,重新进入插入模式。
插入模式下比较常用的操作
缩进应该比较少用,我只需要知道如何在命令模式自动管理缩进就够了。删除操作吧,都是退回到命令模式切换光标位置或者按上下左右切换位置,感觉都不咋用。
Vim - 视图模式
之前我只知道Ctrl+V, 用来对那几行前面插入注释,但不知道为何他只能选择一个方块儿,后面的内容就无法选中。。。
小写v
: 基于字符模式选择,从光标所在字符开始选中。
大写V
:基于行选择,从光标所在行开始选中整行。
Ctrl + v
:基于块,可以选中方块儿形状的内容。(可配合小写o,大写O
来快速跳转光标位置)
gv
:选中之前选择的内容。
小写u大写U
来切换文本大小写,~
也可切换大小写。
>
增加缩进,<
减小缩进。
相关文章:
Vim 命令从头学习记录
学习链接:eleon-vim基础教程 Vim - 基础翻屏操作 光标移动:hjkl 20j 向下移动20行,w 向后移动一个字符,b 向前移动一个字符。 Ctrl u 向上翻半页 UP Ctrl d 向下翻半页 Down Ctrl f 向下翻整页 Forward Ctrl b 向上翻整页 …...
初等数论--欧拉函数及其性质
1. 定义 ϕ ( n ) \phi(n) ϕ(n)在数论中代表欧拉函数, 它的值为小于等于 n n n且与 n n n互质的正整数的个数。 2. 性质 若 p p p为质数,则 ϕ ( p ) p − 1 \phi(p) p-1 ϕ(p)p−1; 除了自身以外全都互质。 若 p p p为质数,则 ϕ ( p…...
Java、javax 和 Jakarta有什么区别?
在 Java 开发中,我们经常会看到 java、javax 和 jakarta 这些包名前缀。本文将详细介绍这三个命名空间的含义、发展历程以及它们之间的关系,帮助你更好地理解 Java 生态系统。 一、Java:核心 API 的基础 ✅ 含义: java 是 Java 标准库的核心包名。所有以 java. 开头的类构…...
Java中的控制流语句:if、switch、for、foreach、while、do-while
Java中的控制流语句 Java中的控制流语句用于控制程序执行的流程。这些语句包括条件判断语句和循环语句。本文将详细介绍Java中的 if、switch、for、foreach、while、do-while控制流语句。 一、条件判断语句 1. if语句 if语句根据表达式的真假来决定是否执行代码块。 int x…...

GStreamer开发笔记(三):测试gstreamer/v4l2+sdl2/v4l2+QtOpengl打摄像头延迟和内存
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/147714800 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、O…...

科技成果鉴定测试有哪些内容?又有什么作用?
科技成果鉴定测试是评价科技成果质量和水平的方法之一,通过测试,可以对科技成果的技术优劣进行评估,从而为科技创新提供参考和指导。 一、科技成果鉴定测试的内容 1.技术评审:通过技术专家对项目进行详细的技术分析ÿ…...

基于Spring Boot + Vue 项目中引入deepseek方法
准备工作 在开始调用 DeepSeek API 之前,你需要完成以下准备工作: 1.访问 DeepSeek 官网,注册一个账号。 2.获取 API 密钥:登录 DeepSeek 平台,进入 API 管理 页面。创建一个新的 API 密钥(API Key&#x…...

A2A与MCP定义下,User,Agent,api(tool)间的交互流程图
官方图: 流程图: #mermaid-svg-2smjE8VYydjtLH0p {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-2smjE8VYydjtLH0p .error-icon{fill:#552222;}#mermaid-svg-2smjE8VYydjtLH0p .error-tex…...

蓝桥杯2025年第十六届省赛真题-水质检测
C语言代码: #include <stdio.h> #include <string.h>#define MAX_LEN 1000000int main() {char a[MAX_LEN 1], b[MAX_LEN 1];// 使用 scanf 读取字符数组scanf("%s", a);scanf("%s", b);int ans 0;int pre -1;int state -1;i…...
机器学习第二讲:对比传统编程:解决复杂规则场景
机器学习第二讲:对比传统编程:解决复杂规则场景 资料取自《零基础学机器学习》。 查看总目录:学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章:DeepSeek R1本地与线上满血版部署:超详细手把手指南 一、场景…...

[Windows] 东芝存储诊断工具1.30.8920(20170601)
[Windows] 东芝存储诊断工具 链接:https://pan.xunlei.com/s/VOPpMjGdWZOLceIjxLNiIsIEA1?pwduute# 适用型号 东芝消费类存储产品: 外置硬盘:Canvio 系列 内置硬盘:HDW****(E300 / N300 / P300 / S300 / V300 / X30…...
[蓝桥杯 2025 省 B] 水质检测(暴力 )
暴力暴力 菜鸟第一次写题解,多多包涵!!! 这个题目的数据量很小,所以没必要去使用bfs,直接分情况讨论即可 一共两排数据,我们使用贪心的思想,只需要实现从左往右的过程中每个检测器相互连接即…...

Linux网络编程day7 线程池and UDP
线程池 typedef struct{void*(*function)(void*); //函数指针,回调函数void*arg; //上面函数的参数 }threadpool_task_t; //各子线程任务的结构体/*描述线程池相关信息*/struct threadpool_t{pthread_mutex_t lock; …...
wsl - install RabbiqMQ
下载erlang $ sudo apt -y install erlang 安装软件包 $ sudo apt -y install rabbitmq-server 修改配置文件 $ sudo vi /etc/rabbitmq/rabbitmq-env.conf # Defaults to rabbit. This can be useful if you want to run more than one node # per machine - RABBITMQ_NODENAME…...

ABB电机保护单元通过Profibus DP主站转Modbus TCP网关实现上位机通讯
ABB电机保护单元通过Profibus DP主站转Modbus TCP网关实现上位机通讯 在工业自动化领域,设备之间的通信至关重要。Profibus DP是一种广泛应用的现场总线标准,而Modbus TCP则是一种基于以太网的常见通信协议。将Profibus DP主站转换为Modbus TCP网关&…...
深入解析二维矩阵搜索:LeetCode 74与240题的两种高效解法对比
文章目录 **引言** **一、问题背景与排序规则对比****1. LeetCode 74. 搜索二维矩阵****2. LeetCode 240. 搜索二维矩阵 II** **二、核心解法对比****方法1:二分查找法(适用于LeetCode 74)****方法2:线性缩小搜索范围法࿰…...

迪士尼机器人BD-X 概况
这些机器人代表着迪士尼故事叙述与非凡创新的完美结合。它们不仅栩栩如生,还配备了先进的技术。 -迪士尼幻想工程研发部高级副总裁凯尔劳克林 幕景 BDX 机器人是由华特迪士尼公司的研究和幻想工程部门利用NVIDIA人工智能技术 (AI)开发的现实世界机器人,…...

UE5骨骼插槽蓝图
首先在人物骨骼处添加插槽并命名,然后再选择添加预览资产把你要的模型(静态网格体)放上去。 选择绑定的骨骼再去右边相对位置、旋转等调整物体。 再去人物蓝图里面写就ok了...
移动应用开发:自定义 View 处理大量数据的性能与交互优化方案
实现 1 万条数据下流畅滑动与灵敏交互的完美平衡。 一、数据渲染优化:从 1 万条到丝滑体验 (一)视图复用机制 视图复用是提升大量数据渲染性能的关键策略。以一个简单的自定义列表视图为例,我们可以构建如下的复用池管理机制&a…...

绘制拖拽html
<!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"UTF-8" /> <meta name"viewport" content"widthdevice-width, initial-scale1" /> <title>拖拽绘制矩形框 - 可移动可调整大小</ti…...
C++结构体介绍
结构体的定义 在C中,结构体(struct)是一种用户定义的数据类型,允许将不同类型的数据组合在一起。结构体的定义使用struct关键字,后跟结构体名称和一对花括号{},花括号内包含成员变量的声明。 struct Pers…...

ggplot2 | GO barplot with gene list
1. 效果图 2. 代码 数据是GO的输出结果,本文使用的是 metascape 输出的excel挑选的若干行。 # 1. 读取数据 datread.csv("E:\\research\\scPolyA-seq2\\GO-APA-Timepoint\\test.csv", sep"\t") head(dat)# 2. 选择所需要的列 dat.usedat[, c(…...
PostgreSQL 的 pg_advisory_lock 函数
PostgreSQL 的 pg_advisory_lock 函数 pg_advisory_lock 是 PostgreSQL 提供的一种应用级锁机制,它不锁定具体的数据库对象(如表或行),而是通过数字键值来协调应用间的并发控制。 锁的基本概念 PostgreSQL 提供两种咨询锁(advi…...
docker 镜像的导出和导入(导出完整镜像和导出容器快照)
一、导出原始镜像 1. 使用 docker save 导出完整镜像 适用场景:保留镜像的所有层、元数据、标签和历史记录,适合迁移或备份完整镜像环境。 操作命令 docker save -o <导出文件名.tar> <镜像名:标签>示例:docker save -o milvu…...

系统思考:短期困境与长期收益
最近在项目中,一直有学员会提到一个议题,如何平衡当前困境和长期收益? 我的思考是在商业和人生的路上,我们常常听到“鱼和熊掌不可兼得”的说法,似乎短期利益和长期目标注定是对立的。但事实上,鱼与熊掌是…...
4.2【LLaMA-Factory实战】金融财报分析系统:从数据到部署的全流程实践
【LLaMA-Factory实战】金融财报分析系统:从数据到部署的全流程实践 一、引言 在金融领域,财报分析是投资决策的核心环节。传统分析方法面临信息提取效率低、风险识别不全面等挑战。本文基于LLaMA-Factory框架,详细介绍如何构建一个专业的金…...

Cjson格式解析与接入AI大模型
JSON格式的解析与构造 基本概念 JSON是JavaScript Object Notation的简称,中文含义为“JavaScript 对象表示法”,它是一种数据交换的文本格式,而不是一种编程语言。 JSON 是一种轻量级的数据交换格式,采用完全独立于编程语言的…...

基于英特尔 RealSense D455 结构光相机实现裂缝尺寸以及深度测量
目录 一,相机参数规格 二,结合YOLO实例分割实现裂缝尺寸以及深度测量 2.1 应用场景 2.2 实现流程 2.3 效果展示 2.4 精度验证 2.5 实物裂缝尺寸以及深度测量效果展示 一,相机参数规格 英特尔 RealSense D455 是英特尔 RealSense D400 系…...

Nacos源码—7.Nacos升级gRPC分析四
大纲 5.服务变动时如何通知订阅的客户端 6.微服务实例信息如何同步集群节点 6.微服务实例信息如何同步集群节点 (1)服务端处理服务注册时会发布一个ClientChangedEvent事件 (2)ClientChangedEvent事件的处理源码 (3)集群节点处理数据同步请求的源码 (1)服务端处理服务注册…...

TIME - MoE 模型代码 3.2——Time-MoE-main/time_moe/datasets/time_moe_dataset.py
源码:GitHub - Time-MoE/Time-MoE: [ICLR 2025 Spotlight] Official implementation of "Time-MoE: Billion-Scale Time Series Foundation Models with Mixture of Experts" 这段代码定义了一个用于时间序列数据处理的 TimeMoEDataset 类,支…...