Vim命令大全(超详细,适合反复阅读学习)
Vim命令大全
- Vim简介
- Vim中的模式
- 光标移动命令
- 滚屏与跳转
- 文本插入操作
- 文本删除操作
- 文本复制、剪切与粘贴
- 文本的修改与替换
- 文本的查找与替换
- 撤销修改、重做与保存
- 编辑多个文件
- 标签页与折叠栏
- 多窗口操作
- 总结
Vim是一款文本编辑器,是Vi编辑器的增强版。Vim的特点是快速、高效、定制强、编辑功能强大、可扩展性好等。作为一款强大而又具有学习曲线的文本编辑器,Vim有很多命令需要掌握。在本篇博客中,将向您介绍Vim的基础概述,并提供Vim命令的详尽列表,以供您参考。
Vim简介
Vim最初是为Unix系统编写的,但如今Vim已被移植到许多不同的操作系统平台上。使用Vim可以以非常高效的速度编辑各种编程语言、标记语言、文本等文件。除了高效、可扩展和具有强大的编辑功能之外,Vim还具有许多值得一提的特点:
- 模式指导: 与其他文本编辑器不同的是,Vim具有多种模式。例如,插入模式、命令模式、可视化模式等等。每个模式都提供了不同的编辑功能,并允许您以不同的方式与文本进行交互。
- 快捷键: Vim的命令使用快捷键,旨在使您最大化地提高效率。有些命令可以使用单个键和单个单词快速执行,而其他的可以使用两个或更多的键。
- 扩展性: Vim具有灵活性和可扩展性。Vim的功能可以通过插件进行定制和扩展,这使得Vim成为编码和文本编辑的最佳选择之一。
Vim中的模式
Vim共有以下6种常见的模式:
- 普通模式(Normal mode): 这是使用Vim打开一个文件时,Vim的默认模式。在普通模式下,您可以使用各种命令来移动光标、删除、复制、粘贴和其他编辑操作。
- 插入模式(Insert mode): 在插入模式下,您可以像在其他文本编辑器中一样输入和编辑文本。按下键盘上的插入键(通常是
i、a、o或Insert键)即可进入插入模式。 - 可视模式(Visual mode): 可视模式允许您选择、高亮并操作文本块。您可以使用各种移动命令来选择文本。在普通模式下敲击键盘的
v键即可进入可视模式,然后移动光标就可以选中一块文本,常用来完成文本的复制、粘贴、删除等操作。 - 替换模式(Replace mode): 在替换模式下,您可以直接替换光标所在位置的字符。在普通模式下敲击键盘上的
R键即可进入替换模式。 - 命令行模式(Command-line mode): 命令行模式允许您执行各种命令。您可以在命令行中输入命令,例如保存文件、退出Vim、显示行号等。在普通模式下敲击
:键即可进入命令行模式。 - Ex 模式(Ex mode): Ex 模式是Vim的可选模式,它是命令行模式的扩展。Ex 模式提供了更多高级命令和编辑选项。可以一次执行多个命令。
Vim的各种工作模式可以通过不同的键进行切换,均需使用Esc键返回到普通模式
光标移动命令
在Vim中,可以使用光标移动命令来在普通模式下操作光标位置。下面是一些常用的光标移动命令:
单个字符的移动:
h:向左移动一个字符l:向右移动一个字符j:向下移动一行k:向上移动一行xh:向左移动x个字符距离
单词的移动:
w:向后移动一个单词,移动到下一个单词的开头b:向前移动一个单词,移动到前一个单词的开头e:将光标移动到下一个单词的词末,如果光标不在当前单词的词尾时会移动到当前单词的词尾E:移动到单词的结尾(忽略标点符号)ge:将光标移动到上一个单词的词末xw:指定移动的x次数
行的移动:
0:将光标移动到当前行的行首。$:将光标移动到当前行的行尾。^:将光标移动到当前行的第一个非空字符处(行首和当前行非空字符不是一个位置)。2|:将光标移动到当前行的第二个字符处。|表示列。fx:在当前行中向前查找字符x,将光标定位到下一个出现的字符位置。3fx:在当前行中向前查找字符x,将光标定位到第三个出现的字符位置。tx:在当前行中向前查找字符x,将光标定位到下一个出现的字符前一个位置(即停在字符x前一个位置)。%:在匹配的括号间进行跳转,比如在括号或引号的一对匹配中,移动到相匹配的括号或引号处。
【注意】f 和 t 命令与字符相关,而数字前缀(如 2 和 3)表示执行多次操作。
文本块的移动:
(:将光标移动到当前 \ 上一个句子的开头。句子以句号、问号或感叹号结尾。):将光标移动到下一个句子的开头。{:将光标移动到当前 \ 上一个段落的开头。段落由空行或一系列连续的非空行组成。}:将光标移动到下一个段落的开头。[[:将光标移动到当前 \ 上一个函数或块的开头。]]:将光标移动到下一个函数或块的开头。
在屏幕中的移动
gg:移动到文件的第一行G:移动到文件的最后一行xG:将光标移动到文件的第x行,其中x是行号H:移动到当前屏幕的顶部行M:移动到当前屏幕的中间行L:移动到当前屏幕的底部行Ctrl+f:向前翻页Ctrl+b:向后翻页
滚屏与跳转
Ctrl+u:向屏幕上方滚动半个屏幕的高度。Ctrl+d:向屏幕下方滚动半个屏幕的高度。Ctrl+b:向屏幕上方滚动一个屏幕的高度。Ctrl+f:向屏幕下方滚动一个屏幕的高度。zt:将当前行移动到屏幕顶部。zz:将当前行移动到屏幕中间。zb:将当前行移动到屏幕底部。:N:将光标移动到第 N 行。
文本插入操作
i:在光标所在位置插入文本。I:在当前行的第一个非空字符插入文本。a:在光标位置之后插入文本。A:在当前行的行末插入文本。o:在光标所在行的下一行插入新行,并进入插入模式。O:在光标所在行的上一行插入新行,并进入插入模式。s:删除当前光标下的字符,并进入插入模式,可以立即开始编辑替换的文本。S:删除当前行,并进入插入模式,可以立即开始编辑替换的文本。相当于先按dd删除当前行,再按i进入插入模式。u:撤销最近的修改操作。
在插入模式下,可以使用以下命令退出插入模式:
Esc:回到普通模式。Ctrl+C:同样是回到普通模式,但较Esc更不易误触。
在插入模式下,还可以用以下命令进行编辑:
Ctrl+H:删除前一个字符(等同于 Backspace 键)。Ctrl+W:删除前一个单词。Ctrl+U:清空当前行之前的所有输入。Ctrl+E:将编辑器中光标所在行的下一行显示在屏幕上。
文本删除操作
字符的删除:
x:删除光标所在位置的字符。X:删除光标前面的字符(相当于 Backspace 键)。
单词的删除:
dw:删除从光标所在位置到下一个单词开头的所有字符。d$:删除从光标所在位置到行末的所有字符。daw:删除包括光标所在的单词的所有字符(包括前后空格)。diw:删除光标所在单词内的所有字符(不包括前后空格)。d2w:删除当前单词和下一个单词。d0:删除从行首到光标位置的所有字符。d1:删除从行首到光标位置的第一个字符,等同于x。dh:删除光标前一个字符,等同于X。
行的删除:
dd:删除当前行,并将其保存到寄存器中以备粘贴。5dd:删除当前行及其下面的 4 行。D:删除从光标位置到行末的所有字符。:n1,n2d:删除从行号n1到n2的所有行。dgg:删除从当前行到文件开头的所有行。dG:删除从当前行到文件末尾的所有行。
行的合并:
J:将当前行和下一行合并为一行。
文本复制、剪切与粘贴
复制:
yy:复制当前行,并将其保存到寄存器中以备粘贴。yw:复制从光标所在位置到单词末尾的所有字符。y$:复制从光标所在位置到行末的所有字符。3yw:复制从光标所在位置开始的 3 个单词(包括空格)。:n1,n2y:复制从行号n1到n2的所有行。
剪切:
dd:删除当前行,并将其保存到寄存器中以备粘贴。dw:删除从光标所在位置到下一个单词开头的所有字符。d$:删除从光标所在位置到行末的所有字符。3dw:删除从光标所在位置开始的 3 个单词(包括空格)。:n1,n2d:删除从行号n1到n2的所有行。
粘贴:
p:在光标下方插入已复制或剪切的文本。P:在光标上方插入已复制或剪切的文本。
复制文本块
- 进入可视块模式:
- 按下
Ctrl + V进入可视块模式。 - 使用上下左右方向键或
hjkl键移动光标,选择要复制的文本块。
- 按下
- 复制文本块:
- 按下
y键复制选择的文本块。复制的内容将被保存在寄存器中,以供后续粘贴使用。
- 按下
- 粘贴文本块:
- 将光标移动到要粘贴的位置。
- 按下
p键将文本块粘贴到当前光标位置的下方。 - 按下
P键将文本块粘贴到当前光标位置的上方。
文本的修改与替换
cw:用于修改当前光标所在的单词。cb:将光标移动到当前单词的开始处。cc:用于删除整行并进入插入模式,可以输入替换的文本。~:用于更改当前所在位置的字符的大小写(大写转小写、小写转大写)。r:用于替换单个字符,将当前光标所在的字符替换为一个新的字符。R:用于进入替换模式,将会替换光标后的的所有字符。xp:用于交换当前光标所在位置的字符和其下一个字符的位置。
文本的查找与替换
查找
/pattern:在 Vim 中,可以使用/后跟要查找的模式进行搜索。例如,输入/keyword可以在文本中查找关键字 “keyword”。?pattern:与上述类似,不同之处在于在问号后查找模式,例如?keyword。n:在查找模式下,按下n键可以跳转到下一个匹配项。N:在查找模式下,按下大写的N键可以跳转到上一个匹配项。
替换
:s/pattern/replacement/:这是 Vim 中进行替换的基本格式。其中pattern是要查找的模式,replacement是要替换成的内容。例如,:s/old/new/会将当前行中的第一个 “old” 替换为 “new”。:s/pattern/replacement/g:在后面添加g标志,会替换所有匹配项,而不仅仅是每行的第一个匹配项。:%s/pattern/replacement/g:在%前加上:号,可以对整个文档执行全局替换,而不只是当前行。
撤销修改、重做与保存
在文本编辑过程中,撤销修改和重做操作是非常重要的。此外,保存文本是确保你的更改被永久保存的一种方式。下面是一些常见的命令和操作:
撤销修改
u:按下u键可以撤销最近的修改。每按一次u键,就会撤销上一次的修改。Ctrl + r:按下Ctrl + r键可以重做被撤销的修改。每按一次Ctrl + r键,就会重做上一次被撤销的修改。
保存文本
:w:这是 Vim 中保存文本的基本命令。在命令模式下,输入:w可以将当前文本保存到文件中。如果没有指定文件名,则会保存到原始文件中。:w filename:如果你想将文件保存为特定的文件名,可以在:w命令后面加上文件名。例如,:w newfile.txt将会将文件保存为名为 “newfile.txt” 的文件。:saveas filename:这个命令会将当前文本保存到指定的文件名,类似于另存为。输入命令:saveas newfile.txt将会在当前目录下创建一个名为 “newfile.txt” 的副本,并将文本保存到该文件中。U:按下大写的U键可以撤销对整行的所有修改,将行恢复到上一次保存时的状态。q:在命令模式下,输入q可以退出 Vim。如果有未保存的修改,Vim 会发出警告并阻止退出。你可以按下q!来强制退出 Vim,丢弃未保存的修改。wq:这是组合命令,可以将文本保存并退出 Vim。在命令模式下,输入:wq将会将文本保存到文件中,并退出 Vim 编辑器。wq!:类似于上述的wq命令,但加上了!表示强制保存。即使文件是只读模式或者没有写权限,也会强制保存并退出。e!:该命令用于放弃当前的修改并重新加载文件。在命令模式下,输入:e!将会放弃所有未保存的修改,并重新加载原始文件。
编辑多个文件
-
打开多个文件:
vim file1.txt file2.txt:在启动 Vim 时,可以通过在命令行上指定多个文件名来打开多个文件。例如,这个命令会同时将 “file1.txt” 和 “file2.txt” 文件加载到 Vim 中。
-
在已打开的文件之间切换:
:n:在普通模式下,输入:n可以跳到下一个打开的文件。:N:在普通模式下,输入:N可以跳到上一个打开的文件。
-
在已打开的文件之间切换并保存:
:n或者:wn:在普通模式下,输入:n或者:wn可以切换到下一个文件并保存当前文件。:N或者:wN:在普通模式下,输入:N或者:wN可以切换到上一个文件并保存当前文件。
-
查看已打开的文件列表:
:ls:在命令模式下,输入:ls可以列出当前已打开的文件列表。
-
在已打开的文件之间切换编辑区域:
Ctrl + ww:在正常模式下,按下Ctrl + ww可以在不同的分割窗口中切换编辑区域。
标签页与折叠栏
标签页(Tabs):
-
创建标签页:
:tabnew:在当前标签页中创建新的空白标签页。:tabnew filename:在当前标签页中创建一个以指定文件名命名的新标签页。
-
标签页切换:
gt:在普通模式下,按下gt可以切换到下一个标签页。gT:在普通模式下,按下gT可以切换到上一个标签页。
-
标签页操作:
:tabs:在命令模式下,输入:tabs可以列出当前打开的标签页。:tabclose:在命令模式下,输入:tabclose可以关闭当前标签页。:tabonly:在命令模式下,输入:tabonly可以关闭所有标签页,除了当前标签页。
折叠栏(Folds):
-
创建折叠:
zf:在普通模式下,先使用移动光标命令移动到要折叠的行,然后输入zf可以创建折叠。zF:在普通模式下,选中多行文本后,输入zF可以创建一个包含选中文本的折叠。
-
打开/关闭折叠:
zo:在普通模式下,将光标移动到已折叠的行上,然后按下zo可以展开折叠。zc:在普通模式下,将光标移动到已展开的折叠行上,然后按下zc可以关闭折叠。
-
操作折叠:
zc:折叠当前的折叠。zC:递归折叠当前折叠下的所有折叠。zd:删除当前折叠。zE:删除当前折叠下的所有折叠。
多窗口操作
-
水平分割窗口:
:split或者Ctrl + w + s:在当前窗口的下方创建一个新的水平分割窗口。:split filename:在当前窗口的下方创建一个新的水平分割窗口,并打开指定的文件。
-
垂直分割窗口:
:vsplit或者Ctrl + w + v:在当前窗口的右侧创建一个新的垂直分割窗口。:vsplit filename:在当前窗口的右侧创建一个新的垂直分割窗口,并打开指定的文件。
-
在窗口之间切换:
Ctrl + w + w:在正常模式下,按下Ctrl + w + w可以在不同的窗口之间切换焦点。Ctrl + w + h:在正常模式下,按下Ctrl + w + h可以将焦点切换到左边的窗口。Ctrl + w + j:在正常模式下,按下Ctrl + w + j可以将焦点切换到下方的窗口。Ctrl + w + k:在正常模式下,按下Ctrl + w + k可以将焦点切换到上方的窗口。Ctrl + w + l:在正常模式下,按下Ctrl + w + l可以将焦点切换到右边的窗口。
-
关闭窗口:
:close:在当前窗口中,输入:close命令会关闭当前窗口。:q:在当前窗口中,输入:q命令也可以关闭当前窗口(如果只剩下一个窗口,则关闭 Vim)。
-
调整窗口大小:
Ctrl + w + +/-:在正常模式下,按下Ctrl + w后接+或-可以增加或减小当前活动窗口的高度。Ctrl + w + >/<:在正常模式下,按下Ctrl + w后接>或<可以增加或减小当前活动窗口的宽度。

总结
感谢大家阅读这篇关于Vim命令操作的指南。通过本文,详细介绍了Vim中各种常用的命令操作,包括光标移动、文本编辑、多窗口操作等功能,希望这些内容能够帮助你更高效地使用Vim编辑器进行文本处理和编程工作。
Vim作为一个强大灵活的文本编辑工具,拥有丰富的功能和操作方式,使得它成为许多开发者和系统管理员钟爱的利器。通过不断地练习和使用,相信你也能够熟练掌握Vim的各种技巧,从而提高工作效率并享受到编程的乐趣。
如果你喜欢这篇博客或者有任何疑问、建议,欢迎在评论区与我分享。
相关文章:
Vim命令大全(超详细,适合反复阅读学习)
Vim命令大全 Vim简介Vim中的模式光标移动命令滚屏与跳转文本插入操作文本删除操作文本复制、剪切与粘贴文本的修改与替换文本的查找与替换撤销修改、重做与保存编辑多个文件标签页与折叠栏多窗口操作总结 Vim是一款文本编辑器,是Vi编辑器的增强版。Vim的特点是快速、…...
爬虫持久化保存
## open方法- 方法名称及参数markdown **open(file, moder, bufferingNone, encodingNone, errorsNone, newlineNone, closefdTrue)****file** 文件的路径,需要带上文件名包括文件后缀(c:\\1.txt)**mode** 打开的方式(r,w,a,x,b,t…...
统一大语言模型和知识图谱:如何解决医学大模型-问诊不充分、检查不准确、诊断不完整、治疗方案不全面?
统一大语言模型和知识图谱:如何解决医学大模型问诊不充分、检查不准确、诊断不完整、治疗方案不全面? 医学大模型问题如何使用知识图谱加强和补足专业能力?大模型结构知识图谱增强大模型的方法 医学大模型问题 问诊。偏离主诉和没抓住核心。…...
读写分离之同步延迟测试
背景 读写分离是快速提高数据库性能的手段,主库只负责写入,从库负责查询。但在性能得到提升的同时,编程的复杂度就会提升。由其碰到主从同步延迟的情况,在数据写入后,在从库无法读取到最新数据,会对业务逻…...
SpringBoot+OCR 实现PDF 内容识别
一、SpringBootOCR对pdf文件内容识别提取 1、在 Spring Boot 中,您可以结合 OCR(Optical Character Recognition)库来实现对 PDF 文件内容的识别和提取。 一种常用的 OCR 库是 Tesseract,而 pdf2image 是一个用于将 PDF 转换为图…...
Go和Java实现抽象工厂模式
Go和Java实现抽象工厂模式 本文通过简单数据库操作案例来说明抽象工厂模式的使用,使用Go语言和Java语言实现。 1、抽象工厂模式 抽象工厂模式是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创 建型模式,它…...
深入理解Java虚拟机---内存分配
深入理解Java虚拟机---内存分配 GC日志内存分配与回收策略对象优先在Eden分配大对象直接进入老年代长期存活的对象将进入老年代动态对象年龄判定空间分配担保 GC日志 以下两段典型的GC日志: 33.125: [GC [DefNew: 3324K->152K(3712K), 0.0025925 secs] 3324K-&…...
计算机网络2
OSI参考模型七层: 1.应用层 2.表示层 3.会话层 4.传输层 5.网络层 6.数据链路层 7.物理层 TCP/IP模型 5层参考模型...
jenkins-Generic Webhook Trigger指定分支构建
文章目录 1 需求分析1.1 关键词 : 2、webhooks 是什么?3、配置步骤3.1 github 里需要的仓库配置:3.2 jenkins 的主要配置3.3 option filter配置用于匹配目标分支 实现指定分支构建 1 需求分析 一个项目一般会开多个分支进行开发,测试&#x…...
源码解析8-QSS原理-案例-Qt的qss特殊设置多个子控件的颜色与伪状态
Qt源码解析 索引 源码解析8-QSS原理-案例-Qt的qss特殊设置多个子控件的颜色与伪状态 有些时候我们想特殊设置QSS,比如某一类标题栏目,某一个窗口中的颜色。 重要的是我们需要同时设置多个特殊的按钮等。 统一设置所有 单一按钮全局设置 QPushButton…...
Nginx+Tomcat实现负载均衡和动静分离
目录 前瞻 动静分离和负载均衡原理 实现方法 实验(七层代理) 部署Nginx负载均衡服务器(192.168.75.50:80) 部署第一台Tomcat应用服务器(192.168.75.60:8080) 多实例部署第二台Tomcat应用服务器(192.168.75.70:80…...
linux系统的u盘/mmc/sd卡等的支持热插拔和自动挂载行为
1.了解mdev mdev是busybox自带的一个简化版的udev。udev是从Linux 2.6 内核系列开始的设备文件系统(DevFS)的替代品,是 Linux 内核的设备管理器。总的来说,它取代了 devfs 和 hotplug,负责管理 /dev 中的设备节点。同时…...
使用Python将OSS文件免费下载到本地:项目分析和准备工作
大家好,我是水滴~~ 本文将介绍如何使用Python编程语言将OSS(对象存储服务)中的文件免费下载到本地计算机。我们先进行项目分析和准备工作,为后续的编码及实施提供基础。 《Python入门核心技术》专栏总目录・点这里 文章目录 1. 前…...
从Gitee克隆项目、启动方法
从gitee克隆VUE项目到本地后,不能直接运行,需要进行npm install安装node_modules文件夹里面的内容,因为在git上传的时候,一般都会过滤到node_modules中的依赖文件。 安装依赖以后,启动通过npm run serve启动项目出错。…...
不用再找了,这是大模型实践最全的总结
随着ChatGPT的迅速出圈,加速了大模型时代的变革。对于以Transformer、MOE结构为代表的大模型来说,传统的单机单卡训练模式肯定不能满足上千(万)亿级参数的模型训练,这时候我们就需要解决内存墙和通信墙等一系列问题&am…...
QT 记录
qml 移动窗口会闪烁 int main(int argc, char *argv[]) {QCoreApplication::setAttribute(Qt::AA_UseOpenGLES);//orQCoreApplication::setAttribute(Qt::AA_UseSoftwareOpenGL); }window 拉取qml程序依赖文件 打开QT自带的命令窗口,转到exe程序目录: …...
智能优化算法应用:基于黑寡妇算法3D无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于黑寡妇算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于黑寡妇算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.黑寡妇算法4.实验参数设定5.算法结果6.参考文…...
VSCode 常用的快捷键和技巧系列(2)
一、如何让VSCode工程树显示图标 第一步:安装 快捷键 CtrlP ,输入 ext install vscode-icons ,然后点击安装插件 第二步:配置 安装成功后,点击Reload重新加载。 然后配置,当前图标使用VsCode-Icons Go…...
【Hadoop】执行start-dfs.sh启动hadoop集群时,datenode没有启动怎么办
执行start-dfs.sh后,datenode没有启动,很大一部分原因是因为在第一次格式化dfs后又重新执行了格式化命令(hdfs namenode -format),这时主节点namenode的clusterID会重新生成,而从节点datanode的clusterID 保持不变。 在…...
计算机网络(四)
九、网络安全 (一)什么是网络安全? A、网络安全状况 分布式反射攻击逐渐成为拒绝攻击的重要形式 涉及重要行业和政府部门的高危漏洞事件增多。 基础应用和通用软硬件漏洞风险凸显(“心脏出血”,“破壳”等&#x…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
Spring Boot + MyBatis 集成支付宝支付流程
Spring Boot MyBatis 集成支付宝支付流程 核心流程 商户系统生成订单调用支付宝创建预支付订单用户跳转支付宝完成支付支付宝异步通知支付结果商户处理支付结果更新订单状态支付宝同步跳转回商户页面 代码实现示例(电脑网站支付) 1. 添加依赖 <!…...
CTF show 数学不及格
拿到题目先查一下壳,看一下信息 发现是一个ELF文件,64位的 用IDA Pro 64 打开这个文件 然后点击F5进行伪代码转换 可以看到有五个if判断,第一个argc ! 5这个判断并没有起太大作用,主要是下面四个if判断 根据题目…...
