【Linux】【Vim】Vim 基础
Vim/Gvim 基础
- 文本编辑
- 基础编辑
- 操作符命令和位移
- 改变文本
- 重复改动
- Visual 模式
- 移动文本(复制、粘贴)
- 文本对象
- 替换模式
- 光标移动
- 以 word 为单位移动
- 行首和行尾
- 行内指定单字符
- 移动到匹配的括号
- 光标移动到指定行
- 滚屏
- 简单查找 /string
- 标记
- 分屏
- vimdiff
文本编辑
基础编辑
Normal 模式下,使用如下命令进行基本的插入、删除等操作:
| 命令 | 作用 |
|---|---|
| i | insert,光标所在位置之前插入文本 |
| a | append,光标所在位置的后面插入内容 |
| I | 将光标置于当前行的第一个非空白字符,并进入 Insert 模式(行首插入内容) |
| A | 将光标置于当前行的行尾并进入 insert 模式 |
| O | 光标所在行之后另起一行,并进入 insert 模式 |
| x | 删除光标选中的内容 |
| dd | 删除整行内容 |
| J | 删除光标所在行的换行符(相当于是合并两行的内容) |
| u | 撤销上一次的操作 |
| U | 撤销对一行的(连续)所有操作 |
| Ctrl+R | 重做(反转撤销) |
| ZZ 或 :wq | 保存并退出 |
示例1:删除换行符

示例2:撤销

操作符命令和位移
x 命令可以删除一个字符。使用一个命令记数 4x 可以删除 4 个字符。
dw 命令可以删除一个 word,你可以把其中的 w 看作是向右移一个 word 的命令。
其实,d 命令后面可以跟任何一个位移命令,它将删除从当前光标起到位移的终点处的文本内容。【delete】
例如,4w 命令是向前移动 4 个 word. 所以 d4w 命令就是删除 4 个 word。
Vim 只删除到位移命令之后光标的前一个位置。这是因为 Vim 知道你并不是要删除下一个 word 的第一个字符。
但是,如果你用e命令来移动到 word 的末尾,Vim 也会假设你是要包括那最后一个字符。
# Example 1
To err is human. To really foul up you need a computer.------------------>d4w
To err is human. you need a computer.# Example 2
To err is human. You need a computer.------->d2e
To err is human. a computer.
删除的内容是否包括光标所移动到的那个字符上取决于你的位移命令。在这种不包括该位置的操作叫做"排外的"(exclusive), 把包括该位置的操作叫"内含的"(inclusive)。
例如,\$命令是移动光标到行尾。所以d$命令就是删除自当前光标到行尾的内容。这是一个"内含的"位移,所以该行最后一个字符也被删除。

此类命令有一个固定的模式:操作符命令 + 位移命令。首先键入一个操作符命令。比如 d 是一个删除操作符。接下来是一个位移命令,如 4l 或 w,这样任何移动光标命令所及之处,都是命令的作用范围。
改变文本
操作符命令 c (change)的行为和 d 命令类似,不过在命令执行之后,会进入 insert 模式。
比如,cw 的意思是改变一个 word,或者说,它可以删除一个 word 并让 vim 处于 Insert 模式。如下示例所示:

这里的 c2wbe<Esc> 包含了如下内容:

这里其实有一个细节,为什么 "human"之前的空格并没有被删除?
【对每一个问题,都会有一个简单而清晰的答案,而那个答案总是错的】
cw 命令正式如此,c 操作符与 d 操作符一样,只是有一个例外:cw,它就象 ce 一样,改变到一直到 word 结尾的内容。而 word 之后的空格被留下了。
【很人性化,因为改变单词的时候,本身也不想删除那个空格】
就像 dd 命令可以删除整行一样,cc 命令可以改变整行。不过仍保持原来的缩进(每行开头的空白)。
也正如 d$ 删除到行尾为止的内容,c$ 改变当前光标到行尾的内容。就好象是用 d$ 删除然后又以a进入 Insert 模式追加新的文本一样。
快捷命令
有一些操作符+位移命令使用率是如此之高以至于它们以一个单独的字符作为其快捷方式:
| 快捷方式 | 作用 |
|---|---|
| x | dl,删除当前光标下的字符 |
| X | dh,删除当前光标左边的字符 |
| D | d$,删除当前光标到行尾的内容 |
| C | c$,修改到行尾的内容 |
| s | cl,修改一个字符 |
| S | cc,修改一整行 |
此外,r 命令可以在 Normal 模式下完成字符的替换。也可以用"cl"或"s"完成同样的事情,但用"r"的话就不需要再用键回到 Normal 模式。

重复改动
.命令是 Vim 中一个简单而强大的命令。它会重复上一次做出的改动。
如下示例,假设你在编辑一个 HTML 文件,想删除其中所有的 <B> 标签。你把光标置于<B>的 < 字符上然后命令df>。然后到\ </B> 的<上用 . 命令做同样的事。. 命令会执行上一次所执行的更改命令( 此例中是df>)。 要删除另一个标签,同样把光标置于 < 字符上然后执行.命令即可。

.命令会重复你做出的所有修改,除了 u 命令 CTRL-R 和以冒号开头的命令。
示例2:你想把"four"改为"five". 它在你的文件里多次出现。你可以用以下命令来做出修改:

【重复的是命令,而不是改动的内容】
如下两行文本,

将光标置于第一行的 1 上时执行 cwxyz,然后退回到 normal 模式,这个时候第一行变为

然后将光标置于第二行的 1 上,执行 . 命令,则第二行将会变为

而不是

Visual 模式
通常很难说用什么位移命令可以把光标刚好移动到你想删除的文本范围,这时你可以用 Visual 模式。
按v可以进入 Visual 模式,移动光标以覆盖你想操纵的文本范围,同时被选中的文本会以高亮显示。选中完成之后,键入操作符命令。
在发出实际的更改命令之前,任何时间你都可以决定放弃,用 <Esc> 命令退出 Visual 模式。
下图的的高亮块就是在 visual 模式下选中的。光标的初始位置在 b,然后先 l 向右移,在 j 向下移,然后就变成了下图的样子。

这个时候,使用 d 命令,删除的也只是选中的内容,并不会完整的删除两行。

选择多行
如果想整行整行地操纵文本,使用V进入 Visual Line 模式。你会看到被选中的文本是一整行为最小选择单位。此时左右移动命令毫无意义。而上下位移命令则会整行整行地选择文本。
如下所示,光标 e 处的时候,使用 V,就直接选中整行,然后在使用上下方向键的时候,选中的也是整行。

【这个时候使用左右方向键,只会移动光标的位置,选中的内容还是完整的一行】
选择文本块
如果你想以一个矩形的文本块为对象进行操作,你需要用 CTRL+V 进入 Visual block 模式。在编辑表格时这可就派上用场了。

要删除其中的"Q2"列,把光标置于"Q2"的"Q"上。
按下CTRL-V进入 Visual block 模式,然后用"3j"向下移动 3 行,用"w"选择直到下一个word 的区域。
你可以看到被选中的文本中包含了下一列的第一个字符。使用"h"排除这一列。现在按下"d",中间的这一列就被删除了。
到另一端
如果你已经在 Visual 模式下选中了一些文本,但此时发现还要改变另一头的被选择区域。如果直接移动光标,之前选中的内容会被取消。
此时,可以使用 o 命令(o代表 other end,另一头)会让光标置于被选中文本的另一头,这样你就可以通过控制光标移动来决定被选文本将从何处开始。再按o又会让光标置于被选文本的末端。
当你进行矩形文本块内容的选择时,你有 4 个角都可以改变。o只会把你带到对角的位置去,使用O命令可以让你在同一行的左右两个角之间移动。
o和O在 Visual 模式与 Normal 模式下行为迥异,在 Normal 模式下它们是在当前行的下面或上面插入一个新行。
多行插入
在使用vim编辑器时,有时候需要对多行代码进行加注释或去注释,该操作就可以在 visual 模式下完成,具体步骤如下:
(1)首先按键盘上的 ESC 进入命令行模式;
(2)再按Ctrl+V进入 VISUAL BLOCK 模式;
(3)利用上下左右(或 h j k l)键调整需要注释多少行以及行的宽度;【宽度其实无所谓】
(4)再按I进入插入模式;【行首插入内容】
(5)输入代表注释的符号,比如#;
(6)再次按ESC键,这时就可完成多行注释(可能需要等上一会,不要着急)
删除注释的方法和前面描述的删除 Q2 列的方法是一样的,在 VISUAL BLOCK 模式下,选中后使用 d 删除。
如果想要在多行的行尾插入相同的内容,其步骤如下:
(1)按Ctrl+v进入可视块模式
(2)通过上下按键选中多行
(3)按$定位到行尾
(4)按A进行行尾插入
(5)添加插入内容
(6)按 Esc 退出插入模式
移动文本(复制、粘贴)
粘贴(p)
使用 d 或 x 这样的命令删除文本时,被删除的内容其实是被保存了起来。此时,可以用 p 命令把它取回来(在 Vim 中这叫 put)。
如果删除的是整行的内容,p 命令会把整个文本行都放到光标下面作为单独一行。如果删除的是一行的部分内容(比如说一个 word),p 命令会把这部分文本放到当前光标后面。
P 命令也是取回被删除的内容,不过它把被取回的内容置于光标之前。对于以 dd 删除的整行内容,P 会把它置于当前行的上一行。对于以 dw 删除的部分内容,P 会把它放回到光标之前(光标左边)。
复制文本(y)
y (yanking)操作符命令会把文本复制到一个寄存器中。然后可以用 p 命令把它取回。
Yanking 只是 Vim 对复制的另一种说法,c 字母已经用来表示更改操作符了, y还没人占用。把这个操作符叫做 “yank” 也会时时提醒你记得用y操作符。
因为 y 是一个操作符命令,所以可以用 yw 来复制一个 word,同样可以使用命令记数。例如,用 y2w 命令可以复制两个 word。
yw 复制的内容中包括了 word 之后的空白字符。如果你不想要它们,那就用 ye
yy 命令复制一整行,就象 dd 是删除一整行一样。不过并不像 D 删除当前光标至行尾的内容那样,Y也是复制整行的内容。注意这种规律中的例外!复制当前光标至行尾的命令是 y$。【 操作符 + 位移命令 】
文本对象
如果光标位于一个单词的中间而你要删除这个单词,通常你需要把光标移到该单词的开头然后用 dw 命令。不过有一个更简单的办法:daw 。
daw中的d还是操作符命令,aw 是一个文本对象。 (“aw"意为"A Word”. 这样"daw"的完整意思是"Delete A Word")更准确地说,该 Word 之后的空白字符也被删除了。
【正常情况下,删除一个 word 的时候,自然是想把其后面空格删除,这样保留下的 word 之间的间隔还是一个空格】
这里其实是对文本使用 " 操作符命令+文本对象 " 的方式进行修改。它很像操作符+位移命令,但是它的起始点不像前者一样始于当前光标,终于位移命令。它不管当前光标所在的位置而把整个文本对象作为操作对象。
例如,如果要删除一个句子,可以使用 das (delete a sentence);如果想以新的文本替代它,空白就可以留下来,可以使用 cis (Inner Sentence)。
替换模式
R 命令会让 Vim 进入 replace 模式。在此模式下,每个键入的字符都会替换掉当前光标下的字符。
replace 模式下的例外是按下回车键并不会把当前字符替换为回车,而是插入一个回车。
使用键盘上的 <Insert> 键来可以在 Insert 模式和 Replace 模式之间来回切换。
在 Replace 模式下,使用 <BS> 键做出修改的时候,你会发现原来的字符又回来了。所以它对于最后键入的字符来说实际上等价于一个撤销操作。
光标移动
在插入或删除文本之前,光标当然要先移动到正确的位置上,Vim 有众多的命令来移动光标。
以 word 为单位移动
| 命令 | 作用 |
|---|---|
| w | word,光标向后移动到下一个 word 的首字符 |
| b | backward,光标移动到前一个 word 的首字符 |
| e | end of word,光标向后移动到下一个 word 的最后一个字符 |
| ge | 光标移动到前一个 word 的最后一个字符 |
这些命令可以自动换行,例如,移动到当前行的最后一个 word 的时候,再次使用 w,光标会移动到下一行的第一个 word。
如果当前光标在当前 word 上的位置不是最后一个字符,则 e 命令会把光标移动到当前 word 的最后一个字符上;
ge其实也不是e行为的完全反向版,不管当前光标在当前 word 中的位置,它都会移动到前一个 word 的最后一个字符上。
【其实无所谓这些细节,实际使用的时候不过是多按一次和少按一次的区别。】
上述命令会把特殊字符(如 . , _ /)当作 word 的边界,如下图所示:

如果从光标一开始在 g,使用 w 的时候,光标会一次跳转到 h / j / d / t k,这些特殊符号也相当于是一个 word。
如果想要从第一个 g 到 h 再到 k,可以使用 W。
上述表格中的四个操作命令的大写形式就是以空白为分界进行 WORDs 之间的移动。【这里大写就是表示它不是常规意义的 word】
行首和行尾
| 命令 | 作用 |
|---|---|
| $ 或 End | 光标移动到当前行的行尾 |
| ^ | 光标移动到当前行的第一个非空白字符上 |
| 0 或者 Home | 光标移动到当前行的第一个字符上(行首) |
具体示例如下所示:
^<----------This is a line with example text.
<-------------- ----------------->O $
数字 + 命令可以实现多次的移动。但是在这里多次移动到行尾并没有什么意义,所以他被赋予了新的意义。 1$ 的意思是移动到当前行的行尾,2$ 的意思是移动的下一行的行尾,一次类推。
^ 和 0 不能和数字组合使用。
行内指定单字符
单字符搜索命令 fx 是从光标所在位置开始,向右查找第一个 x 字符,并将光标停留在该字符上。
3fx 就是向右跳转到第 3 个 x 字符。
Fx 是从光标所在位置开始,向左查找并跳转。
tx 和 Tx 的命令可以实现该功能,只不过光标会停留在 x 字符的前一个字符上。
Notes:
- 这四个命令都不会自动换行,只在行内搜索。
- vim 中使用
;可以重复上一次执行的命令,上面给出的命令是可以使用;来重复的。使用,可以反向重复。例如,Fx本身是向左搜索,用,重复时因为反转了命令的方向,所以又变为向右搜索。
移动到匹配的括号
%:跳转到与当前光标下的括号相匹配的那一个括号上去
如果当前光标在 “(” 上,它就向前跳转到与它匹配的 “)” 上,如果当前在 “)” 上,它就向后自动跳转到匹配的 “(” 上去。
该跳转对 []、{} 等同样适用,具体可以通过 matchpairs 选项来指定。
如果当前光标并没有停留在一个可用的括号字符上,%也会向前找到一个括号,并将光标跳转到与之匹配的括号上。例如,对于下述示例,如果光标一开始行首的 i 上,使用 % 之后,光标会跳转到 d 之后的 “)” 上。
if (a == (b*c)/d)
---+------------>%
光标移动到指定行
| 命令 | 作用 |
|---|---|
| G | Go,把光标定位到最后一行的第一个行首 |
| 33G | 光标定位到第 33 行的行首 |
| gg | 光标定位到第一行的行首 |
滚屏
| 命令 | 作用 |
|---|---|
| Ctrl+U | 文本向下滚动半屏,up,文本向下滚动,相对来说就是光标向上,向上翻页 |
| Crtl+D | 文本向上滚动半屏,down,“光标向下移动”,向下翻页 |
| Ctrl+F | forward,= page down,向下一整页 |
| Crtl+B | backward,= page up,向上一整页 |
| zz | 将光标所在行置于屏幕正中央 |
简单查找 /string
最基本的查找方法:/string 或 ?string (?是向上查找,就是使用 n 的时候会向上查找)
如果需要查找的字符串中有 .*[]^%/?~$ 这些特殊字符,需要使用 \ 进行转义。
查找时忽略大小写:set ignorecase / set noignorecase
/o + ↑ 会显示命令历史以 o 开头的需要查找的字符串。【长字符串不用每次都打字】
可以使用正则表达式,比如表示行首的 ^ 行尾的 $
假设你在当前文件中有一个 word 是"TheLongFunctionName", 你想查找它的下一次出现在哪。当然可以用 “/TheLongFunctionName”, 但这要敲太多次键盘。万一哪个字符敲错了 Vim 就找不到你真正想要的东西。
有一个便捷的方法:把光标定位于这个 word 上,然后按下 * 键。Vim将会取当前光标所在的 word 并以它为目标字符串进行搜索。
这个时候,vim 的底部会显示如下内容。

这里其实是精确查找的语法。例如,/\<the\> 就是精确查找 the 这个单词,而 /the 查找的是三个连续的字母。
【这里只是一个小细节,精确查找应该用的不多】
标记
使用 G 命令从一个地方跳转到另一个地方时,Vim 会记得你起跳的位置。这个位置在 Vim 中是一个标记,使用 `` 命令可以跳回到标记的出发点。
因为 `` 本身也是一个跳转命令,所以再次使用该命令的时候会跳转回来。【a→b→a这样的跳转】
一般地说,只要你执行一个命令使光标定位于当前行之外的某行上去,这都叫一个跳转。例如,/ 和 n 这些搜索命令也可以用于跳转。
但是字符搜索命令 fx 和 tx,或者是以 word 为单位的光标移动命令 w 和 e 则不叫跳转。使用 hjkl 的移动也不叫跳转。
`` 相当于是一个两点之间跳转的命令,而 Ctrl+O(older)可以使光标跳转到更之前的位置。与之相反的命令是 Ctrl+I (因为键盘上 I 和 O 相邻)或者 Tab。
具名标记
就是给光标的位置起一个名称,然后后续可以使用名称将光标跳转到相应的位置。
命令 ma 将当前光标下的位置名之为标记 a, 从 a 到 z 一共可以使用 26 个自定义的标记。定义后的标记在屏幕上也看不出来。不过 Vim 在内部记录了它们所代表的位置。
使用命令 `{mark} 就可以跳转到所标记的光标的位置,`a 就是跳转到之前标记为 a 的位置。
使用 :marks 可以查看已经标记的位置的列表,该列表中会有一些特殊的标记,其含义如下所示:

分屏
vim 可以在启动的时候分屏,也可以在使用阶段分屏,具体方法如下所述。
启动时分屏
左右分屏:vim -On file1 file2 ... filen
上下分屏:vim -on file1 file2 ... filen
其中,-on 中的 n 表示的是分几个屏,可以缺省不写,vim 会按照文件数量进行分屏。
编辑中分屏
上下分割当前文件:crtl+w s
上下分割,并打开新的文件:sp filename 【sp 和 s 就是 split,vim 默认是上下分屏】
左右分割当前打开的文件:ctrl+w v
左右分割,并打开一个新的文件:vsp filename 【v 指的是vertical,垂直分割】
【先按 crtl+w,松开后再按 s 或者 v】

切换窗口

针对所有窗口的操作命令
qall、wall、wqall、qall!
这些命令会作用于所有的窗口。【本质上,这些命令只会作用于修改过的窗口】
vimdiff
vimdiff 命令可以分屏打开两个文件,并高亮显示两个文件的不同之处。

相关文章:
【Linux】【Vim】Vim 基础
Vim/Gvim 基础 文本编辑基础编辑操作符命令和位移改变文本重复改动Visual 模式移动文本(复制、粘贴)文本对象替换模式 光标移动以 word 为单位移动行首和行尾行内指定单字符移动到匹配的括号光标移动到指定行滚屏简单查找 /string标记 分屏vimdiff 文本编辑 基础编辑 Normal 模…...
计算机人工智能前沿进展-大语言模型方向-2024-09-18
计算机人工智能前沿进展-大语言模型方向-2024-09-18 1. The Application of Large Language Models in Primary Healthcare Services and the Challenges W YAN, J HU, H ZENG, M LIU, W LIANG - Chinese General Practice, 2024 人工智能大语言模型在基层医疗卫生服务中的应…...
ubuntu24安装vivado24(安装并解决若干错误)
目录 安装方法:问题1:解决办法: 问题2:解决方法: 安装完成: 安装方法: 注意:内存最好预留80G空闲的。 安装好大小: 安装依赖库: sudo apt-get update sud…...
CSS实现文本溢出省略号或完整显示
目录 前言1. 省略号2. 完整展示3. Demo 前言 文本内容超出容器宽度的问题,为了保持页面布局的整洁,通常会使用省略号来隐藏多余的内容 一共有两种方式: 设定省略号完整展示 1. 省略号 文本溢出时显示省略号 .item-value {flex-basis: 7…...
three.js PropertyBinding和PropertyMixer
PropertyBinding 对场景图中某一真实属性的引用,内部使用。 构造器 PropertyBinding( rootNode : Object3D, path, parsedPath ) -- rootNode: -- path -- parsedPath (可选) 属性 # .path : Number # .parsedPath : Number # .node : Number # .rootNode …...
ssh远程连接try1账号切换tips
1,创建拥有sudo权限的用户: 在root下 sudo adduser bio sudo vim /etc/sudoers //修改添加如下: bio ALL(ALL) ALL //bio用户就拥有了root权限参考:https://github.com/isLishude/blog/issues/70 2,修改ssh配置 …...
C++之第十二课
课程列表 哎呀呀,失踪人口回归了!(前段时间跑去B站了,久等了) 今天来讲——数组 有一道题是这样的: 有n个数,请输出其中最大的数。 原来我们就要: int a,b,c... 但是——数组…...
Linux硬连接、软连接和复制的区别
硬连接、软连接和复制在Linux系统中的主要区别体现在以下三点: 文件链接的方式文件独立性文件系统的操作上。 一、硬连接 1. 硬连接是通过ln命令创建的,它为文件创建别名,与源文件共享同一inode号码,因此硬连接和源文件实际…...
基于STM32的无人小车自主避障系统设计
文章目录 前言资料获取设计介绍功能介绍设计程序具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设…...
杂牌鼠标侧键设置
X-Mouse Button Control修改侧键基本功能介绍-CSDN博客 下载链接 【X-Mouse汉化版】X-Mouse中文版 v2.19.2 绿色版(支持Win10)-开心电玩 (kxdw.com)...
Android WebView H5 Hybrid 混和开发
对于故乡,我忽然有了新的理解:人的故乡,并不止于一块特定的土地,而是一种辽阔无比的心情,不受空间和时间的限制;这心情一经唤起,就是你已经回到了故乡。——《记忆与印象》 前言 移动互联网发展…...
智源推出下一代检索增强大模型框架MemoRAG
北京智源人工智能研究院与中国人民大学高瓴人工智能学院联合发布了一款创新的人工智能模型框架——MemoRAG。该框架基于长期记忆,旨在推动检索增强生成(RAG)技术的发展,使其能够处理更复杂的任务,而不仅限于简单的问答…...
【AprilTag】视觉定位实战 | 使用 ROS 驱动的 USB 摄像头进行相机标定与 AprilTag 识别
写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作&…...
[数据集][目标检测]俯拍航拍森林火灾检测数据集VOC+YOLO格式6116张2类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):6116 标注数量(xml文件个数):6116 标注数量(txt文件个数):6116 标注…...
windows10下tomcat安装及配置教程
Apache Tomcat是一个开源的、轻量级的Servlet容器,广泛用于运行Java Web应用程序。以下是Tomcat安装及配置的基本步骤,根据搜索结果整理: 一、安装前的准备工作 确保你的计算机上已经安装了Java Development Kit (JDK),因为Tomc…...
Spring MVC设置请求头和响应头的Header
在Spring MVC中,动态设置请求头和响应头的方法有多种,以下是一些常见的方式: 设置请求头 使用RequestHeader注解 这个注解用于读取请求中的单个HTTP头部值,并将其作为一个参数传递给控制器方法。 RequestMapping("/examp…...
一个基于 laravel 和 amis 开发的后台框架, 友好的组件使用体验,可轻松实现复杂页面(附源码)
前言 随着互联网应用的发展,后台管理系统的复杂度不断增加,对于开发者而言,既要系统的功能完备,又要追求开发效率的提升。然而,传统的开发方式往往会导致大量的重复劳动,尤其是在构建复杂的管理页面时。有…...
HTML讲解(二)head部分
目录 1. 2.的使用 2.1 charset 2.2 name 2.2.1 describe关键字 2.2.2 keywords关键字 2.2.3 author关键字 2.2.4 http-equiv 小心!VS2022不可直接接触,否则!没这个必要,方源面色淡然一把抓住!顷刻炼化&#x…...
Linux(Ubuntu)(终端实现helloworld输出)
一、终端实现gcc编译 1.写好helloworld.h,helloworld.c,main.c后,打开终端,切换到保存这些文件的文件夹的目录,我把这些文件存放在helloworld的文件夹下,所以输入cd ~/helloworld 2.查看该目录下的文件&a…...
开源模型应用落地-qwen模型小试-调用Qwen2-VL-7B-Instruct-更清晰地看世界-集成vLLM(二)
一、前言 学习Qwen2-VL ,为我们打开了一扇通往先进人工智能技术的大门。让我们能够深入了解当今最前沿的视觉语言模型的工作原理和强大能力。这不仅拓宽了我们的知识视野,更让我们站在科技发展的潮头,紧跟时代的步伐。 Qwen2-VL 具有卓越的图像和视频理解能力,以及多语言支…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...
