Vim编辑器使用入门

目录
一、Vim 编辑器基础操作
二、Vim 编辑器进阶操作
三、Vim 编辑器高级操作
四、Vim 编辑器文件操作
五、Vim 编辑器文件管理
六、Vim 编辑器进阶技巧
七、Vim 编辑器增强功能
Vim的三种工作模式

一、Vim 编辑器基础操作
1.移动光标 - 光标的移动控制
移动光标有两种按键,一种是键盘的方向键,另一种是h j k l四个按键

2.Vim 进入和退出 - 进入和退出 Vim 编辑器
2.1 vim的进入,在终端输入vim 即可进入vim编辑器

2.2 vim的退出有两种,一种是保存操作并退出,一种是不保存操作并退出。
在ESC后正常模式下,分别输入以下快捷键实现退出
| 操作方式 | 快捷键 | 描述 |
|---|---|---|
| 保存并退出 | :wq 或 ZZ | 保存当前文件并退出 Vim 编辑器 |
| 不保存而退出 | :q! | 不保存当前文件的修改并强制退出 Vim 编辑器 |
3.文本的编辑-删除 - 删除文本操作
![]()
文本删除操作步骤
1.请将光标移动到本节中下面标记有 一的那一行。
2.为了修正输入错误,请将光标移至准备刑除的字符的位置处。
3.然后按下 x 键将错误字符制除掉
| 删除命令 | 快捷键 | 描述 |
|---|---|---|
| x | x | 删除光标所在位置的一个字符 |
4.文本编辑-插入 - 插入文本操作
操作步骤
1.请将光标移动到本节中下面标记有的第一行
2.为了使得第一行内容雷同于第二行,请将光标移至文本第一个准备插入字符的位置。
3.然后按下 i键,接着输入必要的文本字符。
每个错误修正完毕后,请按下 <ESC>键返回正常模式重复步骤2至步骤4以便修正句子
| 插入命令 | 快捷键 | 描述 |
|---|---|---|
| i | i | 在光标前插入文本 |
| I | I | 在当前行的行首插入文本 |
5.文本编辑-添加 - 添加文本操作
操作步骤
1.光标放在那一行的某个字符上。
2.按 A键输入必要的添加内容。
3.文本添加完毕后,按 <ESC> 键回到正常模式
4.移动光标到下面第二个标记有 的一行。重复步骤2和步骤3以改正这个句子
| 添加命令 | 快捷键 | 描述 |
|---|---|---|
| a | a | 在光标后添加文本 |
| A | A | 在当前行的行尾添加文本 |
第一讲小结 - 对 Vim 编辑器基础操作进行总结回顾。

二、Vim 编辑器进阶操作
1.删除命令 - 基本删除命令的使用
操作步骤
1.请按下 <ESC>键确保您处于正常模式
2.请将光标移动到本节中下面标记有>的那一行。
3.请将光标移至准备要删除的单词的起始处。
4.接着输入 dw 删除掉该单词
| 步骤编号 | 操作命令 | 操作描述 |
|---|---|---|
| 1 | dw | 删除从光标所在位置到下一个单词开头的文本(包括) |
2. 更多类删除命令 - 扩展的删除命令选项
操作步骤:
- 请按下
<ESC>键确保您处于正常模式。 - 请将光标移动到本节中下面标记有
>的那一行。 - 请将光标移至准备要删除的单词或字符的起始处。
- 输入相应的命令进行删除操作。
操作列表:
| 操作命令 | 操作描述 |
|---|---|
x | 删除光标所在位置的字符 |
X | 删除光标前一位置的字符 |
dd | 删除整行文本 |
D | 删除光标到行末之间的所有内容 |
:1,$d | 删除整个文档的所有文本(输入该命令后,请按 Enter 键确认操作) |
u | 撤销上一次执行的删除操作 |
3. 关于命令和对象 - 命令和操作对象的关系
操作步骤:
- 请按下
<ESC>键确保您处于正常模式。 - 请将光标移动到本节中下面标记有
>的那一行。 - 请将光标移至想要操作的对象所在处。
- 输入对应的命令进行操作。
操作列表:
| 操作命令 | 操作描述 |
|---|---|
diw | 删除光标所在处的单词 |
da( | 删除括号内的所有内容 |
ciw | 更改光标所在处的单词 |
daw | 删除光标所在处的单词以及其后面的空格 |
cw | 更改光标所在处的单词以及其后面的空格 |
4. 使用计数指定工作 - 使用计数来指定删除的数量或范围
操作步骤:
- 请按下
<ESC>键确保您处于正常模式。 - 请将光标移动到本节中下面标记有
>的那一行。 - 请将光标移至想要操作的起始处。
- 输入计数数字,再输入对应的命令进行操作。
操作列表:
| 操作命令 | 操作描述 |
|---|---|
2dw | 删除光标所在位置的单词以及其后面的单词,共计2个 |
3dd | 删除光标所在行及其下面的连续两行,共计3行 |
5. 使用计数以删除更多 - 进一步利用计数来执行更多删除操作
操作步骤:
- 请按下
<ESC>键确保您处于正常模式。 - 请将光标移动到本节中下面标记有
>的那一行。 - 请将光标移至想要操作的起始处。
- 输入计数数字,再输入对应的命令进行操作。
操作列表:
| 操作命令 | 操作描述 |
|---|---|
d2w | 删除光标所在位置的单词以及其后面的单词,共计2个 |
d3d | 删除光标所在行及其下面的连续两行,共计3行 |
6. 操作整行 - 对整行进行操作
操作步骤:
- 请按下
<ESC>键确保您处于正常模式。 - 请将光标移动到本节中下面标记有
>的那一行。 - 将光标移至任意一行(对整行进行操作)。
- 输入对应的命令进行操作。
操作列表:
| 操作命令 | 操作描述 |
|---|---|
dd | 删除当前行 |
cc | 更改当前行(等同于 dd + i) |
yy | 复制当前行 |
p | 在光标下方粘贴被复制或剪切的内容 |
u | 撤销上一次操作 |
7. 撤销类命令 - 撤销操作及撤销历史记录
操作步骤:
- 进入Vim编辑器,并确保处于正常模式。
- 按下
u键,执行撤销操作。这将撤销上一次的编辑操作,恢复到之前的状态。 - 如果您想一次性撤销多个编辑操作,可以按住
Ctrl + r键来重做(反撤销)动作。
操作列表:
| 操作命令 | 操作描述 |
|---|---|
u | 撤销上一次操作 |
Ctrl+r | 恢复被撤销的操作(反撤销) |
第二讲小结 - 对 Vim 编辑器进阶操作进行总结回顾。

三、Vim 编辑器高级操作
1. 置入类命令 - 将文本插入到指定位置
操作步骤:
- 请按下
<ESC>键确保您处于正常模式。 - 将光标移动到想要插入文本的位置。
- 输入
i进入插入模式。 - 输入您想要插入的文本内容。
- 按下
<ESC>键退出插入模式。
操作列表:
| 操作命令 | 操作描述 |
|---|---|
i | 在光标前插入文本 |
a | 在光标后插入文本 |
I | 在行首插入文本 |
A | 在行末插入文本 |
o | 在当前行下方插入行 |
O | 在当前行上方插入行 |
2. 替换类命令 - 替换文本内容
操作步骤:
- 请按下
<ESC>键确保您处于正常模式。 - 将光标移动到要替换的文本的起始位置。
- 输入
r进入替换模式。 - 输入您要替换成的新字符。
- 按下
<ESC>键退出替换模式。
| 操作命令 | 操作描述 |
|---|---|
r | 替换光标所在处的字符 |
R | 连续替换光标所在位置字符 |
3. 更改类命令 - 修改文本内容
操作步骤:
-
请按下
<ESC>键确保您处于正常模式。 -
将光标移动到要修改的文本的起始位置。
-
按下下列命令之一来执行修改操作:
cw:更改光标所在处的单词。caw:更改光标所在处的单词以及其后面的空格。ciw:更改光标所在处的单词,不包括其后面的空格。c$:更改从光标位置到行末的所有内容。
-
输入您要替换成的新文本。
-
按下
<ESC>键退出修改模式。
| 操作命令 | 操作描述 |
|---|---|
cw | 更改光标所在处的单词 |
caw | 更改光标所在处的单词以及其后面的空格 |
ciw | 更改光标所在处的单词,不包括其后面的空格 |
c$ | 更改从光标位置到行末的所有内容 |
4. 使用 c 更改更多 - 进一步利用 "c" 操作符来执行更多修改操作
操作步骤:
- 请按下
<ESC>键确保您处于正常模式。 - 将光标移动到要修改的文本的起始位置。
- 输入计数数字,指定要修改的字符数量。
- 输入
c进入更改模式。 - 输入您要替换成的新文本。
- 按下
<ESC>键退出修改模式。
| 操作命令 | 操作描述 |
|---|---|
c2w | 更改光标所在位置和下一个单词,共 2 个 |
c3j | 删除光标所在行及以下连续两行,共计 3 行 |
第三讲小结 - 对 Vim 编辑器高级操作进行总结回顾。
四、Vim 编辑器文件操作
1. 定位及文件状态 - 定位光标和查看文件状态
操作步骤:
-
请按下
<ESC>键确保您处于正常模式。 -
输入
:进入命令行模式。 -
输入以下命令之一来执行相应的操作:
set number:显示行号。set nonumber:隐藏行号。set cursorline:高亮当前行。set nocursorline:取消高亮当前行。set cursorcolumn:高亮当前列。set nocursorcolumn:取消高亮当前列。
-
按下
<ENTER>键执行命令。
操作列表:
| 命令 | 作用 |
|---|---|
set number | 显示行号 |
set nonumber | 隐藏行号 |
set cursorline | 高亮当前行 |
set nocursorline | 取消高亮当前行 |
set cursorcolumn | 高亮当前列 |
set nocursorcolumn | 取消高亮当前列 |
gg | 跳转至文档首部(第一行) |
G | 跳转至文档尾部(最后一行) |
:n | 跳转至第 n 行 |
Ctrl+G | 显示光标位置、文件名、文件状态等信息 |
u | 撤销上一个操作 |
Ctrl+R | 重做上一个操作,恢复被撤销的更改 |
. | 重复执行上一个编辑操作 |
2. 搜索类命令 - 在文件中执行搜索操作
操作步骤:
- 请按下
<ESC>键确保您处于正常模式。 - 输入
/进入搜索模式。 - 输入您要搜索的文本内容。
- 按下
<ENTER>键开始搜索。 - 使用
n命令查找下一个匹配项,使用N命令查找上一个匹配项。
操作列表:
| 命令 | 作用 |
|---|---|
/text | 向后查找 "text" |
?text | 向前查找 "text" |
n | 查找下一个匹配项 |
N | 查找上一个匹配项 |
:nohlsearch | 取消当前的高亮显示 |
3. 配对括号寻找 - 查找和操作配对的括号
操作步骤:
- 请按下
<ESC>键确保您处于正常模式。 - 将光标移动到任意一个括号上。
- 输入
%命令执行查找和操作。 - 如果光标位于左括号上,则会跳转到右括号;如果光标位于右括号上,则会跳转到左括号。
操作列表:
| 命令 | 作用 |
|---|---|
% | 查找和操作匹配的括号 |
( | 查找上一个句子的开头 |
) | 查找下一个句子的开头 |
{ | 查找上一个段落的开头 |
} | 查找下一个段落的开头 |
[[ | 查找上一个函数或代码块的开头 |
]] | 查找下一个函数或代码块的开头 |
[] | 查找和操作匹配括号,建议使用 % 命令 |
4. 替换命令 - 执行替换操作
操作步骤:
操作列表:
| 命令 | 作用 |
|---|---|
:%s/old/new/g | 替换整个文件中的所有匹配项 |
:s/old/new/g | 替换当前行中的所有匹配项 |
:n,ms/old/new/g | 替换第 n 到第 m 行中的所有匹配项 |
:%s/old/new/gc | 替换整个文件中的所有匹配项,并询问用户 |
:s/old/new/gc | 替换当前行中的所有匹配项,并询问用户 |
-
请按下
<ESC>键确保您处于正常模式。 -
输入
:进入命令行模式。 -
输入以下命令之一,执行相应的替换操作:
:%s/old/new/g:替换整个文件中的所有匹配项。:s/old/new/g:替换当前行中的所有匹配项。:n,ms/old/new/g:替换第 n 到第 m 行中的所有匹配项。:%s/old/new/gc:替换整个文件中的所有匹配项,并在每次替换时询问用户是否确认操作。:s/old/new/gc:替换当前行中的所有匹配项,并在每次替换时询问用户是否确认操作。
-
按下
<ENTER>键执行命令。
第四讲小结 - 对 Vim 编辑器文件操作进行总结回顾。

五、Vim 编辑器文件管理
1. 在 Vim 内部执行外部命令
操作步骤:
- 请按下
<ESC>键确保您处于正常模式。 - 输入
:进入命令行模式。 - 输入
!后面跟上您想要执行的外部命令,并按下<ENTER>键。
例如,要查看当前目录中的文件列表,可以执行以下命令:
:!ls
这将运行ls命令并显示结果。
2. 保存文件时的一些额外选项
在保存文件时,Vim提供了一些额外选项来进行更高级的操作。下面是一些常用的选项:
:w:保存文件。如果文件不存在,则另存为。:w filename:将文件另存为指定的文件名。:w!:强制保存文件,即使文件只读或没有写权限。:saveas filename:将当前文件另存为指定的文件名,并切换到新文件。:wall:保存所有打开的窗口中的文件。:wnext:保存当前文件并跳转到下一个文件。:wprev:保存当前文件并跳转到上一个文件。
这些选项可以根据您的需求在保存文件时进行选择。
3. 执行有选择性的保存操作
要执行有选择性的保存操作,可以使用以下操作步骤:
例如,要只保存第10到20行的内容,可以执行以下命令:
:10,20w filename
这将保存第10到20行的内容到指定的文件名中。
4. 提取和合并不同文件的内容
要提取和合并不同文件的内容,可以使用以下操作步骤:
这样,您就可以从一个文件中提取内容,并将其合并到另一个文件中。
- 请按下
<ESC>键确保您处于正常模式。 - 输入
:进入命令行模式。 - 输入
w命令来保存文件,然后在其后添加一个文件名或范围来指定要保存的内容。 - 使用
:e filename命令打开第一个文件。 - 在文件中移动光标,选择要提取的内容。
- 按下
v进入可视模式,并使用移动键选择要提取的文本块。 - 按下
y复制选择的文本块。 - 切换到第二个文件,使用
:e filename命令打开它。 - 在目标位置插入光标,并按下
p将复制的内容粘贴到该位置。
六、Vim 编辑器进阶技巧
1. 打开类命令 - 打开其他文件或查看缓冲区列表
-
操作步骤:
- 进入Vim编辑器。
- 进入命令行模式,按下冒号键
:。 - 输入相应的命令。
- 按下回车键执行命令。
操作表格:
| 操作 | 命令 |
|---|---|
| 打开指定文件 | :e 文件名 |
| 重新加载当前文件 | :e! |
| 查看缓冲区列表 | :ls |
| 切换到下一个缓冲区 | :bnext |
| 切换到上一个缓冲区 | :bprev |
2. 附加类命令 - 附加到其他窗口或标签页
操作步骤:
- 进入Vim编辑器。
- 进入命令行模式,按下冒号键
:。 - 输入相应的命令。
- 按下回车键执行命令。
操作表格:
| 操作 | 命令 |
|---|---|
| 水平拆分新窗口 | :sp |
| 垂直拆分新窗口 | :vsp |
| 在新的标签页中打开文件 | :tabe 文件名 |
3. 另外一个置换类命令的版本 - 另一种方式的置换类命令
操作步骤:
- 进入Vim编辑器。
- 进入命令行模式,按下冒号键
:。 - 输入相应的命令。
- 按下回车键执行命令。
操作表格:
| 操作 | 命令 |
|---|---|
| 替换当前行中第一个匹配到的内容 | :s/旧内容/新内容 |
| 替换整个文件中所有匹配的内容 | :%s/旧内容/新内容/g |
| 在替换之前提示确认并选择是否替换 | :s/旧内容/新内容/gc |
4. 复制粘贴文本 - 复制和粘贴文本操作
操作步骤:
- 进入Vim编辑器。
- 将光标移动到要复制的文本上。
- 进入可视模式,按下
v键。 - 使用移动键选择要复制的文本块。
- 按下
y键复制选择的文本块。 - 将光标移动到要粘贴的位置。
- 按下
p键将复制的内容粘贴到该位置。
5. 设置类命令的选项 - 配置和修改设置类命令的选项
操作步骤:
操作表格:
| 操作 | 命令 |
|---|---|
| 将选项设置为指定的值 | :set 选项=值 |
| 禁用选项 | :set no选项 |
| 显示当前选项的值 | :set 选项? |
- 进入Vim编辑器。
- 进入命令行模式,按下冒号键
:。 - 输入相应的命令。
- 按下回车键执行命令。
第六讲小结 - 对 Vim 编辑器进阶技巧进行总结回顾。

七、Vim 编辑器增强功能
2. 创建启动脚本 - 编写并使用启动脚本
要创建和使用启动脚本来配置Vim编辑器的行为,您可以按照以下步骤操作:
您还可以在 ~/.vim/ 目录下创建其他启动脚本,例如 vim ~/.vim/plugin/myplugin.vim,这些启动脚本将在Vim启动时自动加载。
3. 补全功能 - 使用补全功能提高编辑效率
Vim编辑器提供了补全功能,可以帮助您快速输入和完成代码、路径等内容。要使用补全功能,请按照以下步骤操作:
补全功能可以根据当前文件类型和您的配置进行智能补全,提高编辑效率和准确性。
-
1. 获取帮助类信息 - 查找获取帮助相关信息
在Vim编辑器中,您可以通过以下方式获取帮助信息:
- 输入命令
:help,然后按回车键,将打开Vim的帮助文档。您可以使用搜索功能查找特定的主题,例如:help 搜索。 - 若要获取有关特定命令或选项的帮助,请将光标放在该命令或选项上,然后按下
K键(或者按住Shift键并双击鼠标左键)即可显示相关帮助。 - 在终端或命令提示符下,使用文本编辑器创建一个新文件,例如
vim ~/.vimrc。 - 在该文件中编写Vim配置命令,例如设置选项、定义快捷键等。例如,如果要启用行号显示,可以添加
set number。 - 保存并关闭文件。
- 重新启动Vim编辑器,您将看到应用了启动脚本中的配置。
- 在插入模式下,输入部分内容(例如函数名、文件路径等)。
- 按下
Ctrl + N(向后补全)或Ctrl + P(向前补全)触发补全功能。如果有多个匹配项,可以继续按下相应的快捷键进行选择。 - 选中所需的补全项后,按下
Enter键插入补全内容。
第七讲小结 - 对 Vim 编辑器增强功能进行总结回顾。


相关文章:
Vim编辑器使用入门
目录 一、Vim 编辑器基础操作 二、Vim 编辑器进阶操作 三、Vim 编辑器高级操作 四、Vim 编辑器文件操作 五、Vim 编辑器文件管理 六、Vim 编辑器进阶技巧 七、Vim 编辑器增强功能 Vim的三种工作模式 一、Vim 编辑器基础操作 1.移动光标 - 光标的移动控制 移动光标有两…...
早餐与风景
来吧,我用流水账描述下这一天。 时维九月,北京的早上有点冷,因为今天有个市场活动要去支撑,按照会议时间的要求,我需要在早上7点半就赶到会场,所以昨天晚上我加班到凌晨处理完了今天要给出去的材料…...
常用python代码串
记录新疆出差期间的一些代码 打开yaml文件python中的专有名词ctrlc 打开yaml文件 with open(/home/cyun/文档/cotton_ws/src/control/scripts/ControlParameter.yaml, r) as file:yaml_data yaml.load(file, Loaderyaml.FullLoader)后面发现像这种打开文件的最好是try一下 p…...
电脑桌面透明便签软件是哪个?
在现代快节奏的工作环境中,许多上班族都希望能够在电脑桌面上方便地记录工作资料、重要事项、工作流程等内容。为了解决这个问题,一款优秀的电脑桌面便签软件是必不可少的。在选择桌面便签软件时,许多用户也希望便签软件能够与电脑桌面壁纸相…...
Git创建干净分支,本地操作不依赖任何分支
clone远程项目: git clone gittest.git查看分支: git branch -a创建新分支: git checkout --orphan test, 返回Switched to a new branch test删除当前项目文件夹下所有文件: git rm -rf .提交变更: git commit -m "new branch for test"查看分支: git branch -a, 发…...
sqlmap tamper脚本编写
文章目录 tamper脚本是什么?指定tamper脚本运行sqlmap安全狗绕过tamper脚本 tamper脚本是什么? SQLMap 是一款SQL注入神器,可以通过tamper 对注入payload 进行编码和变形,以达到绕过某些限制的目的。但是有些时候,SQLM…...
5.5V-65V Vin同步降压控制器,具有线路前馈SCT82630DHKR
描述: SCT82630是一款65V电压模式控制同步降压控制器,具有线路前馈。40ns受控高压侧MOSFET的最小导通时间支持高转换比,实现从48V输入到低压轨的直接降压转换,降低了系统复杂性和解决方案成本。如果需要,在低至6V的输…...
YOLOv5、YOLOv8改进:Decoupled Head解耦头
目录 1.Decoupled Head介绍 2.Yolov5加入Decoupled_Detect 2.1 DecoupledHead加入common.py中: 2.2 Decoupled_Detect加入yolo.py中: 2.3修改yolov5s_decoupled.yaml 1.Decoupled Head介绍 Decoupled Head是一种图像分割任务中常用的网络结构&#…...
Prometheus+Grafana可视化监控【Redis状态】
文章目录 一、安装Docker二、安装Redis数据库(Docker容器方式)三、安装Prometheus四、安装Grafana五、Pronetheus和Grafana相关联六、安装redis_exporter七、Grafana添加Redis监控模板 一、安装Docker 注意:我这里使用之前写好脚本进行安装Docker,如果已…...
怒刷LeetCode的第6天(Java版)
目录 第一题 题目来源 题目内容 解决方法 方法一:哈希表 方法二:逐个判断字符 方法三:模拟减法 第二题 题目来源 题目内容 解决方法 方法一:水平扫描法 方法二:垂直扫描法 方法三:分治法 方…...
SSL双向认证-Nginx配置
SSL双向认证需要CA证书,开发过程可以利用自签CA证书进行调试验证。 自签CA证书生成过程:SSL双向认证-自签CA证书生成 Nginx配置适用于前端项目或前后端都通过Nginx转发的时候(此时可不配置后端启用双向认证) 1.Nginx配置&#…...
GO学习之 远程过程调用(RPC)
GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 10、GO学习之 网络通信(Net/Htt…...
八大排序(四)--------直接插入排序
本专栏内容为:八大排序汇总 通过本专栏的深入学习,你可以了解并掌握八大排序以及相关的排序算法。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:八大排序汇总 🚚代码仓库:小小unicorn的代码仓库…...
MYSQL--存储引擎和日志管理
存储引擎: 一、存储引擎概念: MySQL中的数据用各种不同的技术存储在文件中,每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供不同的功能和能力,这些不同的技术以及配套的功能在MySQL中称为存储引擎。存储引擎是My…...
VUE之更换背景颜色
1. 确定需求 在实现之前,首先需要明确需求,即用户可以通过某种方式更改页面背景颜色,所以我们需要提供一个可操作的控件来实现此功能。 2. 创建Vue组件 为了实现页面背景颜色更换功能,我们可以创建一个Vue组件。下面是一个简单…...
大型集团借力泛微搭建语言汇率时区统一、业务协同的国际化OA系统
国际化、全球化集团,业务遍布全世界,下属公司众多,集团对管理方式和企业文化塑造有着很高的要求。不少大型集团以数字化方式助力全球统一办公,深化企业统一管理。 面对大型集团全球化的管理诉求,数字化办公系统作为集…...
Quartz 建表语句SQL文件
SQL文件在jar里面,github下载 https://github.com/quartz-scheduler/quartz/releases/tag/v2.3.2 解压,sql文件路径:quartz-core\src\main\resources\org\quartz\impl\jdbcjobstore tables_mysql_innodb.sql # # In your Quartz propertie…...
nginx SseEmitter 长连接
1、问题还原: 在做openai机器人时,后台使用 SseEmitterEventSource 实现流式获取数据,前端通过 EventSourcePolyfill 函数接收后端的数据,在页面流式输出到页面,做成逐字打稿的效果。本地测试后,可以正常获…...
若依cloud -【 100 ~ 】
100 分布式日志介绍 | RuoYi 分布式日志就相当于把日志存储在不同的设备上面。比如若依项目中有ruoyi-modules-file、ruoyi-modules-gen、ruoyi-modules-job、ruoyi-modules-system四个应用,每个应用都部署在单独的一台机器里边,应用对应的日志的也单独存…...
VPN协议是如何工作的
VPN,全名 Virtual Private Network,虚拟专用网,就是利用开放的公众网络,建立专用数据传输通道,将远程的分支机构、移动办公人员等连接起来。 VPN 通过隧道技术在公众网络上仿真一条点到点的专线,是通过利用…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
在 Spring Boot 中使用 JSP
jsp? 好多年没用了。重新整一下 还费了点时间,记录一下。 项目结构: pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...
车载诊断架构 --- ZEVonUDS(J1979-3)简介第一篇
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…...
