vim基本命令(vi、工作模式、普通模式、插入模式、可视模式、命令行模式、复制、粘贴、插入、删除、查找、替换)
1. Vim的作用
1.1. 文本编辑
1.1.1. 基础文本编辑功能
Vim是一个功能强大的文本编辑器,它可以用来创建、修改和保存各种文本文件。无论是编写简单的文本笔记,还是复杂的代码文件,Vim都能胜任。例如,我们可以用它来编写Python脚本,编写HTML网页代码等。它支持多种文本编码格式,如UTF - 8、ASCII等。这使得Vim能够处理不同语言和地区字符的文本文件,满足了在国际化开发环境中的需求。
1.1.2. 代码编辑优势
对于程序员来说,Vim在代码编辑方面有着独特的优势。它支持语法高亮显示,能够根据不同的编程语言自动识别并高亮代码中的关键字、变量、函数等元素。比如在编辑C++代码时,类名、方法名、控制语句等会以不同的颜色显示,让代码结构一目了然。
Vim还支持代码缩进功能。它可以自动按照编程语言的规范对代码进行缩进,帮助程序员保持代码的整洁和可读性。例如,在编写Python代码时,当写完一个if
语句后按下回车键,Vim会自动将下一行代码缩进四个空格,符合Python的缩进规则。
1.2. 文件浏览和管理
1.2.1. 文件浏览
Vim内置了文件浏览器功能。用户可以在Vim中直接浏览文件系统,查看文件夹中的文件列表。这对于在编辑过程中需要快速切换到其他文件进行编辑的情况非常方便。例如,当我们在一个项目的多个源代码文件之间切换时,不需要退出Vim,就可以在Vim的文件浏览器中找到并打开需要的文件。
1.2.2. 文件管理操作
它还可以进行一些基本的文件管理操作,如复制、移动、删除文件等。这些操作可以在Vim的命令模式下完成,减少了在编辑文件过程中频繁切换到外部文件管理器的麻烦。比如,我们可以使用Vim的命令来删除一个不再需要的临时文件,而不用退出Vim去使用操作系统的文件管理工具。
1.3. 多窗口编辑
1.3.1. 分屏编辑
Vim支持多窗口编辑功能,可以将屏幕分割成多个窗口,同时打开和编辑多个文件。这对于对比不同文件的内容或者同时查看和修改多个相关文件非常有用。例如,当我们在编写一个软件项目时,可能需要同时查看头文件和源文件,通过Vim的分屏功能,可以将头文件和源文件分别放在上下两个窗口或者左右两个窗口中,方便同时对它们进行编辑。
1.3.2. 标签页功能
除了分屏,Vim还支持标签页功能。用户可以将不同的文件放在不同的标签页中,通过切换标签页来快速切换到不同的文件。这使得在编辑多个文件时,界面更加清晰,文件管理更加方便。比如,在处理一个包含多个配置文件和代码文件的项目时,可以将每个文件放在单独的标签页,通过点击标签页快速定位到需要编辑的文件。
2. Vim的原理
2.1. 工作模式
2.1.1. 普通模式(Normal mode)
这是Vim启动后的默认模式。在这个模式下,键盘上的大部分按键都被定义为命令,而不是用来输入文本。例如,按下h
键表示光标向左移动,j
键表示光标向下移动等。这种设计使得用户可以通过快捷键快速进行光标移动、文本删除、复制等操作,大大提高了编辑效率。
快捷键 | 功能描述 |
---|---|
h | 光标向左移动一个字符 |
j | 光标向下移动一行 |
k | 光标向上移动一行 |
l | 光标向右移动一个字符 |
🌟gg | 跳转到文件的第一行 |
🌟G | 跳转到文件的最后一行 |
数字 + G | 跳转到指定行号的行,例如10G 跳转到第10行 |
🌟i | 进入插入模式,在当前光标位置插入文本 |
🌟o | 进入插入模式,在光标所在行的下一行插入文本 |
O | 进入插入模式,在光标所在行的上一行插入文本 |
🌟x | 删除光标所在位置的字符 |
🌟dd | 删除光标所在的一整行 |
D | 删除从光标位置到行尾的文本 |
🌟yy | 复制光标所在的一行文本 |
🌟p | 粘贴复制的文本到光标所在位置的下一行 |
🌟u | 撤销上一次的编辑操作 |
Ctrl + r | 重做上一次撤销的编辑操作 |
🌟/查找文本 | 查找文件中的文本内容,按回车键后光标会移动到找到的第一个匹配位置 |
🌟n | 查找下一个匹配项 |
🌟N | 查找上一个匹配项 |
🌟:w | 保存文件(在命令行模式下输入) |
🌟:wq | 保存文件并退出Vim(在命令行模式下输入) |
🌟:q | 退出Vim(如果文件有未保存的修改,会提示不能退出)(在命令行模式下输入) |
🌟:q! | 强制退出Vim,不保存文件的修改(在命令行模式下输入) |
🤔 𝑸𝒖𝒆𝒔𝒕𝒊𝒐𝒏:使用/查找模式后,按Enter开始搜索吗?如何退出呢?
🥳 𝑨𝒏𝒔𝒘𝒆𝒓:在Vim中使用
/
查找模式时,操作流程和退出方法如下:
开始搜索
- 进入查找模式:在普通模式下,按下
/
键,这将使Vim进入查找模式。此时,Vim的底部会出现一个输入框,等待我们输入要查找的文本内容。- 输入查找内容并回车:在底部的输入框中输入我们想要查找的文本,例如输入
error
来查找文档中所有的error
文本。输入完成后,按下Enter
键开始搜索。Vim会将光标移动到找到的第一个匹配位置,并且匹配的文本通常会高亮显示。退出查找模式:在完成查找操作后,有几种方法可以退出查找模式并返回到普通模式:
- 按
Esc
键:直接按下Esc
键可以退出查找模式,光标会停留在当前匹配位置,Vim回到普通模式。这是最直接的退出方式。- 按
Enter
键:如果我们已经查看了当前匹配项,并且想要快速回到普通模式,再次按下Enter
键也可以退出查找模式。不过,这种方式可能会因Vim的配置或版本而有所不同,在某些情况下可能需要先按Esc
键。- 使用查找快捷键:在查找模式下,我们可以使用
n
键查找下一个匹配项,使用N
键查找上一个匹配项。当我们通过这些键查看完所有匹配项后,按Esc
键退出查找模式。这种方式在我们想要浏览所有匹配项时非常有用。总之,使用
/
查找模式后,按Enter
键开始搜索,通过按Esc
键可以退出查找模式并返回到普通模式。在查找过程中,使用n
和N
键可以方便地在匹配项之间切换。
🤔 𝑸𝒖𝒆𝒔𝒕𝒊𝒐𝒏:查找模式没有高亮怎么办?
🥳 𝑨𝒏𝒔𝒘𝒆𝒓:如果在Vim中使用查找模式时没有高亮显示,可以按照以下步骤解决:
临时设置高亮显示:
- 进入命令行模式:在普通模式下,按下
:
键进入命令行模式。- 设置高亮显示:输入
set hlsearch
并按Enter
键。这将使当前文档中的查找结果高亮显示。永久设置高亮显示:
- 编辑
.vimrc
文件:打开终端,输入vim ~/.vimrc
命令来编辑.vimrc
文件。如果该文件不存在,Vim会自动创建一个。- 添加高亮显示设置:在
.vimrc
文件中添加以下行:set hlsearch
- 保存并退出:按
Esc
键,然后输入:wq
并按Enter
键保存并退出。取消高亮显示:
临时取消高亮显示:在命令行模式下,输入
:nohlsearch
或:noh
并按Enter
键。这将临时取消当前文档中的查找结果高亮显示。永久取消高亮显示:如果我们希望每次启动Vim时都不高亮显示查找结果,可以在
.vimrc
文件中添加以下行:set nohlsearch
,保存并退出.vimrc
文件。
2.1.2. 插入模式(Insert mode)
当用户需要输入文本时,需要从普通模式切换到插入模式。在插入模式下,键盘上的按键就像普通文本编辑器一样,用来输入字符。用户可以通过按i
键从普通模式进入插入模式。例如,当我们需要在文档中添加一段新的文字描述时,就可以进入插入模式进行输入。
快捷键 | 功能描述 |
---|---|
🌟Esc | 退出插入模式,返回到普通模式 |
Ctrl + [ | 同Esc键,退出插入模式,返回到普通模式 |
🌟Ctrl + o | 暂时退出插入模式,执行一个普通模式的命令后立即返回插入模式 |
Ctrl + u | 删除插入模式下当前行光标之前的内容 |
🌟Ctrl + w | 删除插入模式下光标前的一个单词 |
Ctrl + h | 删除插入模式下光标前的一个字符,相当于Backspace键 |
Ctrl + i | 插入一个Tab字符 |
🌟Ctrl + t | 在当前缩进级别上增加一个缩进(通常用于编程语言的代码缩进) |
🌟Ctrl + d | 在当前缩进级别上减少一个缩进 |
Ctrl + r + 寄存器名 | 插入寄存器中的内容,例如Ctrl + r + a 插入寄存器a的内容 |
Ctrl + y | 在插入模式下,从普通模式复制的内容可以使用此快捷键粘贴到当前光标位置的上一行 |
Ctrl + e | 在插入模式下,从普通模式复制的内容可以使用此快捷键粘贴到当前光标位置的下一行 |
Ctrl + n | 在插入模式下,进行单词补全(向下匹配) |
Ctrl + p | 在插入模式下,进行单词补全(向上匹配) |
2.1.3. 可视模式(Visual mode)
可视模式用于选择文本。用户可以通过在普通模式下按v
键进入普通可视模式,按V
键进入行可视模式,按Ctrl - v
键进入块可视模式。在可视模式下,可以通过移动光标来选择文本区域,然后对选中的文本进行复制、删除等操作。比如,要复制一段连续的代码,就可以先在可视模式下选中这段代码,然后使用复制命令。
快捷键 | 功能描述 |
---|---|
🌟v | 进入普通可视模式,可以选择任意文本 |
V | 进入行可视模式,可以选择整行 |
Ctrl + v | 进入块可视模式,可以选择列块 |
h | 向左扩展选择区域一个字符 |
j | 向下扩展选择区域一行 |
k | 向上扩展选择区域一行 |
l | 向右扩展选择区域一个字符 |
🌟gg | 扩展选择区域到文件的第一行 |
🌟G | 扩展选择区域到文件的最后一行 |
H | 扩展选择区域到屏幕的顶部 |
M | 扩展选择区域到屏幕的中间 |
L | 扩展选择区域到屏幕的底部 |
🌟0 | 扩展选择区域到行首 |
^ | 扩展选择区域到行首的第一个非空白字符 |
🌟$ | 扩展选择区域到行尾 |
w | 扩展选择区域到下一个单词的开始 |
🌟e | 扩展选择区域到当前单词的末尾 |
b | 扩展选择区域到上一个单词的开始 |
gg0 | 扩展选择区域到文件的开头 |
G$ | 扩展选择区域到文件的末尾 |
o | 跳转到选择区域的另一端 |
O | 跳转到选择区域的另一端,并保持光标在行首 |
: | 进入命令行模式,对选中的文本执行命令,如 :s/old/new/ 替换选中的文本 |
🌟d | 删除选中的文本 |
c | 修改选中的文本,进入插入模式 |
🌟y | 复制选中的文本到默认寄存器 |
🌟p | 粘贴寄存器中的内容到选中的文本位置 |
🌟u | 撤销对选中区域的上一次操作 |
Ctrl + r | 重做对选中区域的上一次撤销操作 |
🌟Esc | 退出可视模式,返回到普通模式 |
🤔 𝑸𝒖𝒆𝒔𝒕𝒊𝒐𝒏:如果我想任意复制,是不是应该用可视模式?
🥳 𝑨𝒏𝒔𝒘𝒆𝒓:是的,如果我们需要任意选择并复制文本,使用可视模式(Visual mode)会更加灵活和直观。可视模式允许我们通过移动光标来选择文本区域,然后进行复制、删除、修改等操作。
假设我们有以下文本:
Hello world, this is a test. This is another line of text.
进入普通可视模式
- 将光标移动到
world
这个单词的任意位置。- 按
v
进入普通可视模式。选择文本
- 按
w
选择world,
。- 按
w
再次选择this
。- 按
e
选择is
。复制选中的文本
- 按
y
复制选中的文本world, this is
到默认寄存器。退出可视模式
- 按
Esc
退出可视模式,返回到普通模式。粘贴文本
- 将光标移动到我们想要粘贴的位置。
- 按
p
粘贴选中的文本。通过使用可视模式,我们可以非常灵活地选择任意文本区域,并进行复制、删除、修改等操作。这使得文本编辑更加直观和高效。
2.1.4. 命令行模式(Command - line mode)
在命令行模式下,用户可以输入Vim的命令行命令。通过在普通模式下按:
键可以进入命令行模式。例如,要保存文件,可以在命令行模式下输入:w
命令;要退出Vim,可以输入:q
命令。命令行模式是Vim进行复杂操作和配置的重要入口。
快捷键 | 功能描述 |
---|---|
🌟: | 从普通模式进入命令行模式 |
🌟Esc | 从命令行模式返回到普通模式,不执行当前输入的命令 |
Ctrl + c | 从命令行模式返回到普通模式,不执行当前输入的命令(与 Esc 相同效果) |
Ctrl + u | 清除命令行中已输入的内容 |
Ctrl + w | 删除命令行中光标前的一个单词 |
Ctrl + h | 删除命令行中光标前的一个字符(相当于 Backspace 键) |
Ctrl + r | 在命令行中插入寄存器的内容,例如 Ctrl + r + a 插入寄存器 a 的内容 |
Ctrl + y | 在命令行中插入上一个命令行历史中的内容 |
Ctrl + n | 在命令行中插入下一个命令行历史中的内容 |
Ctrl + p | 在命令行中插入上一个命令行历史中的内容(与 Ctrl + y 相同效果) |
Ctrl + e | 将光标移动到命令行的末尾 |
Ctrl + a | 将光标移动到命令行的开头 |
Up | 浏览命令行历史,显示上一个命令 |
Down | 浏览命令行历史,显示下一个命令 |
Enter | 执行命令行中输入的命令 |
Tab | 自动补全命令行中的命令或文件名 |
🌟:%s/旧文本/新文本/ | 替换文本(一次) |
🌟:%s/旧文本/新文本/g | 替换文本(全部) |
⚠️在替换文本的操作下,如果提示模式错误,请使用
:%s/旧文本/新文本/
假设你有以下文本:
Hello world, this is a test.
This is another line of text.
This is a third line.
This is a fourth line.
This is a fifth line.
-
进入命令行模式
- 按
:
键进入命令行模式。
- 按
-
输入命令
- 输入
:w
保存文件。 - 输入
:q
退出Vim。 - 输入
:wq
保存文件并退出Vim。 - 输入
:s/old/new/
替换文件中的文本。
- 输入
-
使用快捷键
- 按
Ctrl + u
清除已输入的命令。 - 按
Ctrl + w
删除光标前的一个单词。 - 按
Ctrl + h
删除光标前的一个字符。 - 按
Up
和Down
浏览命令行历史。 - 按
Enter
执行当前输入的命令。
- 按
2.2. 缓冲区和寄存器
2.2.1. 缓冲区(Buffer)
Vim内部使用缓冲区来存储打开的文件内容。每个打开的文件都有一个对应的缓冲区。当用户对文件进行编辑时,实际上是修改缓冲区中的内容。只有当用户执行保存操作时,缓冲区中的内容才会写入到磁盘上的文件中。这种设计使得编辑操作更加灵活,用户可以在编辑过程中随时进行撤销、重做等操作,而不用担心文件内容的丢失。
2.2.2. 寄存器(Register)
寄存器用于存储文本片段,方便用户在编辑过程中进行复制、粘贴等操作。Vim有多个寄存器,包括默认寄存器、命名寄存器等。例如,当用户使用yy
命令(在普通模式下)复制一行文本时,复制的文本会被存储到默认寄存器中。然后,用户可以通过p
命令(粘贴命令)将寄存器中的内容粘贴到其他位置。寄存器的使用使得文本的移动和复制更加高效。
3. Vim的常用方法
3.1. 文件操作
3.1.1. 打开文件
使用命令vim 文件名
可以在终端中打开指定的文件。如果文件不存在,Vim会创建一个新文件。例如,要打开一个名为example.txt
的文件,就在终端输入:
# 使用vim打开文件,语法为:vim <filepath>
vim example.txt
3.1.2. 保存文件
在命令行模式下,输入:w
命令可以保存文件。如果要保存文件并退出Vim,可以输入:wq
命令。如果只是想退出Vim而不保存文件,可以输入:q!
命令。这些命令使得文件的保存和退出操作非常灵活。
# 保存内容(不退出)
:w# 保存并退出
:wq# 没有对文件修改,直接退出
:q# 不保存强制退出
:q!
3.1.3. 查看文件内容
在普通模式下,可以通过移动光标来查看文件内容。使用h, j, k, l
键可以分别实现光标向左、向下、向上、向右移动。还可以使用gg
命令跳转到文件的第一行,G
命令跳转到文件的最后一行,快速浏览文件的开头和结尾。
3.2. 文本编辑
3.2.1. 插入文本
在普通模式下,按i
键进入插入模式,就可以开始输入文本。如果要从当前光标位置的下一行开始输入文本,可以按o
键;要从当前光标位置的上一行开始输入文本,可以按O
键。这些命令使得文本的插入位置更加精确。
3.2.2. 删除文本
在普通模式下,按x
键可以删除光标所在位置的字符。按dd
键可以删除光标所在的一整行。如果要删除从光标位置到行尾的文本,可以按D
键。这些删除命令可以根据需要删除不同范围的文本。
3.2.3. 复制和粘贴文本
按yy
键可以复制光标所在的一行文本,按p
键可以将复制的文本粘贴到光标所在位置的下一行。如果要复制多行文本,可以先按数字键指定行数,再按yy
键。例如,3yy
表示复制光标所在位置的当前行以及下面的两行。然后使用p
键粘贴这些文本。
3.3. 查找和替换
3.3.1. 查找文本
在普通模式下,按/
键可以进入查找模式,然后输入要查找的文本内容,按回车键进行查找。Vim会高亮显示找到的文本内容,并将光标移动到找到的第一个匹配位置。按n
键可以查找下一个匹配项,按N
键可以查找上一个匹配项。这种查找功能非常方便,可以帮助用户快速定位到文件中特定的文本内容。
3.3.2. 替换文本
在命令行模式下,可以使用:s/旧文本/新文本/
命令来替换文本。这个命令会将当前行中第一个匹配的旧文本替换为新文本。如果要替换整行中的所有匹配项,可以使用:s/旧文本/新文本/g
命令。例如,:s/dog/cat/
会将当前行中的第一个dog
替换为cat
,:s/dog/cat/g
会将当前行中所有的dog
都替换为cat
。
# 替换一次
:%s/旧文本/新文本/# 全部替换
:%s/旧文本/新文本/g
⚠️在替换文本的操作下,如果提示模式错误,请使用
:%s/旧文本/新文本/
4. Vim的快捷键
4.1. 普通模式快捷键
- 光标移动
h
:光标向左移动一个字符。j
:光标向下移动一行。k
:光标向上移动一行。l
:光标向右移动一个字符。gg
:跳转到文件的第一行。G
:跳转到文件的最后一行。数字 + G
:跳转到指定行号的行。例如,10G
跳转到第10行。
- 文本编辑
i
:进入插入模式,在当前光标位置插入文本。o
:进入插入模式,在光标所在行的下一行插入文本。O
:进入插入模式,在光标所在行的上一行插入文本。x
:删除光标所在位置的字符。dd
:删除光标所在的一整行。D
:删除从光标位置到行尾的文本。yy
:复制光标所在的一行文本。p
:粘贴复制的文本到光标所在位置的下一行。u
:撤销上一次的编辑操作。Ctrl + r
:重做上一次撤销的编辑操作。
4.2. 命令行模式快捷键
-
文件操作
:w
:保存文件。:wq
:保存文件并退出Vim。:q
:退出Vim(如果文件有未保存的修改,会提示不能退出)。:q!
:强制退出Vim,不保存文件的修改。
-
查找和替换
/查找文本
:查找文件中的文本内容,按回车键后光标会移动到找到的第一个匹配位置。n
:查找下一个匹配项。N
:查找上一个匹配项。:s/旧文本/新文本/
:替换当前行中第一个匹配的旧文本为新文本。:s/旧文本/新文本/g
:替换当前行中所有匹配的旧文本为新文本。
⚠️在替换文本的操作下,如果提示模式错误,请使用
:%s/旧文本/新文本/
5. 参考
- KIMI
相关文章:
vim基本命令(vi、工作模式、普通模式、插入模式、可视模式、命令行模式、复制、粘贴、插入、删除、查找、替换)
1. Vim的作用 1.1. 文本编辑 1.1.1. 基础文本编辑功能 Vim是一个功能强大的文本编辑器,它可以用来创建、修改和保存各种文本文件。无论是编写简单的文本笔记,还是复杂的代码文件,Vim都能胜任。例如,我们可以用它来编写Python脚…...
vue的KeepAlive应用(针对全部页面及单一页面进行缓存)
KeepAlive的作用是缓存包裹在其中的动态切换组件 当一个组件在 中被切换时,它的 activated 和 deactivated 生命周期钩子将被调用,用来替代 mounted 和 unmounted。这适用于 的直接子节点及其所有子孙节点。 缓存全部页面 将app.vue中的路由出口改为&am…...
Big Model weekly | 第53期
点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 01 CodeRosetta: Pushing the Boundaries of Unsupervised Code Translation for Parallel Programming 近期在大型语言模型(LLMs)的进展重新激发了自动编程语言翻译的兴趣。特别是编码器…...
基于STM32设计的粮食仓库(粮仓)环境监测系统
一、前言 1.1 项目开发背景 随着现代农业的发展和粮食储存规模的扩大,粮仓环境的智能化监控需求日益增长。传统的粮仓管理方式通常依赖人工检测和定期巡查,效率低下且容易出现疏漏,无法及时发现潜在问题,可能导致粮食受潮、霉变…...
大数据技术Kafka详解 ⑤ | Kafka中的CAP机制
目录 1、分布式系统当中的CAP理论 1.1、CAP理论 1.2、Partitiontolerance 1.3、Consistency 1.4、Availability 2、Kafka中的CAP机制 C软件异常排查从入门到精通系列教程(核心精品专栏,订阅量已达600多个,欢迎订阅,持续更新…...
44.ComboBox的数据绑定 C#例子 WPF例子
固定最简步骤,包括 XAML: 题头里引入命名空间 标题下面引入类 combobox绑定资源属性和选择属性,block则绑定和combobox一样的选择属性 C#: 通知的类,及对应固定的任务 引入字段 引入属性 其中资源是只读的 选…...
SOLID原则学习,接口隔离原则(Interface Segregation Principle, ISP)
文章目录 1. 定义2. 为什么要遵循接口隔离原则?3. 违反接口隔离原则的例子4. 遵循接口隔离原则的改进5. 总结 1. 定义 接口隔离原则(Interface Segregation Principle, ISP) 接口隔离原则是面向对象设计中的五大原则(SOLID&#…...
Spring Boot Web技术栈(官网文档解读)
摘要 Spring Boot框架既支持传统的Servlet技术栈,也支持新兴的响应式(Reactive)技术栈。本篇文章将详细讲述Spring Boot 对两种技术栈的详细支持和使用。 Servlet 概述 基于Java Servlet API构建,它依赖于传统的阻塞I/O模型&…...
闲谭SpringBoot--ShardingSphere分布式事务探究
文章目录 0. 背景1. 未分库分表时2. 仅分表时3. 分库分表时3.1 不涉及分库表3.2 涉及分库表,且分库表处于一个库3.3 涉及分库表,且分库表处于多个库3.4 涉及分库表,且运行中某库停机 4. 小结 0. 背景 接上篇文章《闲谭SpringBoot–ShardingS…...
计算机网络之---TCP报文段
TCP报文段 TCP报文段是TCP协议中传输数据的基本单位。TCP协议基于流控制、顺序控制和错误校验等机制,以确保数据的可靠传输。TCP报文段结构由多个字段组成,每个字段在TCP的工作中都有特定的作用 一个典型的TCP报文段由两部分组成: TCP头部&a…...
USB 驱动开发 --- Gadget 驱动框架梳理(一)
本文由 Linux 内核文档翻译与总结而来,个人学习笔记仅供参考。 Gadget 框架 在 USB 协议交互过程中,角色定义: the device driver is the master (or “client driver”) Linux 内核中称为 HCD(Host Controller Driver),负责与 …...
C#读写ini配置文件保存设置参数
本示例使用设备:https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.52de2c1b5P5rkA&ftt&id22173428704 [DllImport("kernel32", CharSet CharSet.Unicode)] public static extern uint GetPrivateProfileString(string lpAppName, stri…...
Linux---history查看命令历史记录命令
history命令是Linux系统中用于显示和管理用户之前执行过的命令列表的实用工具。以下是history命令的详细教程: 一、基本功能 history命令能够显示用户在当前shell会话或之前会话中执行过的所有命令。这对于回顾之前的操作、复制某个命令进行修改再次执行等场景非常…...
CANopen 学习笔记(2)
PDO通讯参数 异步传输 发送类型设置为0xFE或0xFF 修改映射参数后执行sendPDOevent(&CanFestival_Master_Data); /* 发送PDO事件 */则会触发PDO传输 还有一直就是定时器异步发送,配置发送类型为0xFE,定时器发送时间为0x64,则会以100ms的周期发送P…...
《鸿蒙Next旅游应用:人工智能赋能个性化与智能导览新体验》
随着鸿蒙Next的推出,旅游应用迎来了全新的发展机遇,借助人工智能技术能为用户带来更出色的个性化推荐和智能导览服务。 鸿蒙Next与人工智能融合优势 鸿蒙Next拥有强大的分布式能力和原生智能体验。其能打破设备界限,实现多设备协同…...
计算机网络 (39)TCP的运输连接管理
前言 TCP(传输控制协议)是一种面向连接的、可靠的传输协议,它在计算机网络中扮演着至关重要的角色。TCP的运输连接管理涉及连接建立、数据传送和连接释放三个阶段。 一、TCP的连接建立 TCP的连接建立采用三次握手机制,其过程如下&…...
Level2逐笔成交逐笔委托毫秒记录:今日分享优质股票数据20250114
逐笔成交逐笔委托下载 链接: https://pan.baidu.com/s/18YtQiLnt06cPQP1nRXor0g?pwd4k3h 提取码: 4k3h Level2逐笔成交逐笔委托数据分享下载 基于Level2的逐笔成交和逐笔委托数据,这种毫秒级别的记录能分析出许多关键信息,如庄家意图、虚假动作&#…...
探索Java(适合小白)
探索Java:推动数字世界的语言 Java,这一编程语言在信息技术的海洋中如同明珠般闪耀,吸引着无数程序员的关注与热爱。在今天的博客中,我们将深入了解Java的定义、学习的重要性,并详细探讨Java EE的概念。无论你是编程新…...
Java Web开发高级——Spring Boot与微服务架构
微服务架构(Microservices Architecture)已经成为现代软件开发中的主流架构之一。它通过将单一的、庞大的应用程序拆分成多个小的、独立部署的服务,使得开发、维护和扩展变得更加灵活、可控。Spring Boot 提供了一种简单且高效的方式来构建微…...
IMX6U Qt 开发环境
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、交叉编译 1. 安装通用 ARM 交叉编译工具链 2. 安装 Poky 交叉编译工具链 二、编译出厂源码 1. U-boot 2. 内核和模块 3. 编译出厂 Qt GUI 综合 Demo 前言…...
【计算机网络】lab5 ARP协议
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀计算机网络_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2.…...
基于深度学习的视觉检测小项目(十三) 资源文件的生成和调用
在使用 PySide6 进行开发时,管理应用程序的资源(如图标、图片、字体、样式表、音视频等)是一个常见的任务。PySide6 提供了一个工具 pyside6-rcc,它能够将资源文件(.qrc)编译成 Python 模块,然后…...
【C】初阶数据结构3 -- 单链表
之前在顺序表那一篇文章中,提到顺序表具有的缺点,比如头插,头删时间复杂度为O(n),realloc增容有消耗等。而在链表中,这些问题将得到解决。所以在这一篇文章里,我们将会讲解链表的定义与性质,以及…...
STM32 FreeRTOS 基础知识
多任务处理 内核是操作系统的核心组件。诸如 Linux 这样的操作系统采用的内核, 看似允许用户同时访问计算机。很明显,多个用户可以同时执行多个程序。 每个执行程序都是受操作系统控制的任务(或线程)。如果一个操作系统能够以这…...
初学stm32 --- II2C_AT24C02,向EEPROM中读写数据
目录 IIC总线协议介绍 IIC总线结构图 IIC协议时序 1. ACK(Acknowledge) 2. NACK(Not Acknowledge) IO口模拟II2C协议 发送起始信号: 发送停止信号: 检测应答信号: 发送应答信号&#x…...
探索图像编辑的无限可能——Adobe Photoshop全解析
文章目录 前言一、PS的历史二、PS的应用场景三、PS的功能及工具用法四、图层的概念五、调整与滤镜六、创建蒙版七、绘制形状与路径八、实战练习结语 前言 在当今数字化的世界里,视觉内容无处不在,而创建和编辑这些内容的能力已经成为许多行业的核心技能…...
当comfyui-reactor-node 安装失败urllib.error.HTTPError: HTTP Error 403: Forbidden解决方法
comfyUI 节点comfyui-reactor-node 安装 python install 时 报错 urllib.error.HTTPError: HTTP Error 403: Forbidden 如下: (xxx) xxxxxxx:~/sdb/Q/ComfyUI/custom_nodes/comfyui-reactor-node$ python install.py Traceback (most recent call last): File …...
01基本介绍篇(D2_多线程问题)
目录 一、线程的上下文切换问题 1. 基本介绍 2. 多线程一定比单线程快? 3. 如何减少上下文切换 二、线程安全问题 1. 什么是线程安全? 2. java语言中的线程安全 2.1. 不可变 2.2. 绝对线程安全 2.3. 相对线程安全 2.4. 线程兼容 2.5. 线程对立…...
如何保证光谱相机的稳定性和可靠性
光学系统设计与制造 高质量光学元件:采用高精度研磨和镀膜的透镜、棱镜、光栅等光学元件。优质的透镜可以减少像差和色差,确保光线准确聚焦;高质量的镀膜能够提高光学元件的透光率,降低反射损失,并且增强对不同波段光…...
基于springboot+vue的洪涝灾害应急信息管理系统设计与实现
开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…...
登录、注册、忘记密码、首页HTML模板
<!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>登录</title><style>body {display: fl…...
HTML文章翻页功能
效果展示: 效果原理: 1、引入CDN 2、绘制文章翻页样式,以及自动分段 3、获取窗口宽高,计算出当前文章总分段,并实现分页 4、完整代码 <!DOCTYPE html> <html><head><meta charset"utf-8&qu…...
JAVA安全编码规范
1. 数据校验 对外部输入进行校验入参的合法性, 防止内存越界,命令注入,SQL注入,格式化字符串漏洞 校验长度,范围,输入校验采用白名单形式 校验前做归一化处理,使用java.text.Normalizer的n…...
OpenGL —— 基于Qt的视频播放器 - ffmpeg硬解码,QOpenGL渲染yuv420p或nv12视频(附源码)
运行效果 工程说明 源码 vertex.glsl...
爬虫逆向学习(十五):Akamai 3.0反爬分析与sensor-data算法逆向经验
此分享只用于学习用途,不作商业用途,若有冒犯,请联系处理 Akamai 3.0反爬分析与sensor-data算法逆向经验 Akamai开始正题前须知站点信息接口分析反爬点反爬点定位_abck定位结果 逆向前准备工作sensor_data生成位置本地替换文件 请求体sensor…...
java项目启动时,执行某方法
1. J2EE项目 在Servlet类中重写init()方法,这个方法会在Servlet实例化时调用,即项目启动时调用。 import javax.servlet.ServletException; import javax.servlet.http.HttpServlet;public class MyServlet extends HttpServlet {Overridepublic void …...
学会使用开源软件jclasslib 字节码文件的组成 详解
应用场景 1 应用场景 2 学习路线 以正确的姿势打开文件 字节码文件的组成 玩转字节码常用工具 以正确的姿势打开文件 开源软件 jclasslib github 地址 https://github.com/ingokegel/jclasslib 工具使用 字节码文件的组成 基本信息 常量池 字段 方法 属性 详解 魔数 主副版…...
Flask表单处理与验证
Flask是一个轻量级的Python框架,它通过扩展库提供了对表单处理与验证的支持。WTForms是一个流行的Flask扩展库,用于创建和验证Web表单。它提供了一种声明式的方法来定义表单结构和验证逻辑,使得表单处理更为简洁和优雅。下面,我们…...
如何通俗易懂的理解 html js css
HTML、CSS 和 JavaScript 是构建网页的三大核心技术。为了通俗易懂地理解它们,我们可以用一个简单的比喻:**盖房子**。 --- ### 1. **HTML:房子的结构** HTML(HyperText Markup Language)就像房子的**骨架**。它定义…...
信凯科技业绩波动明显:毛利率远弱行业,资产负债率偏高
《港湾商业观察》施子夫 1月8日,深交所官网显示,浙江信凯科技集团股份有限公司(以下简称“信凯科技”)主板IPO提交注册。 自2022年递交上市申请,信凯科技的IPO之路已走过两年光景,尽管提交注册࿰…...
蓝牙BT04-A的使用与相关AT指令
一、AT指令没有返回的问题及解决方案 检查指令格式: 确认指令格式是否正确,包括特定的命令和结尾的回车换行符(n)。 检查TX/RX连接: 确认TX(发送)和RX(接收)线是否连接正…...
新手如何练习SQL?|掌握
对于新手想要练习SQL语句,可以从以下几个方面入手: 1. 建立理论基础 首先深入理解数据库的核心组件,包括数据库本身、其内部的各个表、表中的字段及其对应的数据类型(如字符串、整型、日期等),以及数据库…...
JavaScript宝典下
小哆啦闭关修炼已久,潜心攻读专业秘技,方才下山考研本欲大展宏图,怎奈山河虽壮志难酬,终是觉察考研无望。思来想去,不若弃考研之念,重拾敲代码之道,复盘前端奇术,以备闯荡职场江湖。…...
浅谈云计算12 | KVM虚拟化技术
KVM虚拟化技术 一、KVM虚拟化技术基础1.1 KVM虚拟化技术简介1.2 KVM虚拟化技术架构1.2.1 KVM内核模块1.2.2 用户空间工具(QEMU、Libvirt等) 二、KVM虚拟化技术原理2.1 硬件辅助虚拟化2.2 VMCS结构与工作机制 三、KVM虚拟化技术面临的挑战与应对策略3.1 性…...
Spring Boot 动态表操作服务实现
Spring Boot 动态表操作服务实现 Spring Boot 动态表操作服务实现1. 环境配置2. JdbcTemplate 的使用2.1 创建动态表2.2 动态添加字段2.3 动态删除字段2.4 动态修改字段类型2.5 删除表的方法实现 3. 小结3.1 可能的优化 Spring Boot 动态表操作服务实现 在现代的应用开发中&am…...
62_Redis服务器集群优化
Redis集群虽然具备高可用特性,且能实现自动故障恢复,但是如果使用不当,也会存在一些问题,总结如下。 集群完整性问题集群带宽问题数据倾斜问题客户端性能问题命令的集群兼容性问题Lua和事务问题1.集群完整性问题 在 Redis 集群的默认配置下,当节点检测到存在至少一个哈希…...
晨辉面试抽签和评分管理系统之九:随机编排考生的分组(以教师资格考试面试为例)
晨辉面试抽签和评分管理系统(下载地址:www.chenhuisoft.cn)是公务员招录面试、教师资格考试面试、企业招录面试等各类面试通用的考生编排、考生入场抽签、候考室倒计时管理、面试考官抽签、面试评分记录和成绩核算的面试全流程信息化管理软件。提供了考生…...
Linux Top 命令 load average 指标解读
前言 作为平台开发的同学,维护平台稳定性是我们最基本的工作职责,下面主要介绍下top 命令里 ,load average 这个指标如何去衡量机器负载程度。 概念介绍 load average 是系统在过去 1 分钟、5 分钟、15 分钟 的平均负载,它表示运…...
Nacos: 一个动态服务发现与配置管理平台
Nacos: 一个动态服务发现与配置管理平台 引言 在微服务架构日益普及的今天,服务之间的调用和配置管理变得越来越复杂。为了简化这一过程并提高开发效率,阿里巴巴推出了Nacos——一个易于使用的动态服务发现、配置管理和服务管理平台。 Nacos是什么&am…...
SpringBoot + 事务钩子函数
一、案例背景 拿支付系统相关的业务来举例。在支付系统中,我们需要记录每个账户的资金流水(记录用户A因为哪个操作扣了钱,因为哪个操作加了钱),这样我们才能对每个账户的账做到心中有数,对于支付系统而言&…...