【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 具有卓越的图像和视频理解能力,以及多语言支…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...

佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...

回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...
鸿蒙HarmonyOS 5军旗小游戏实现指南
1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发,采用DevEco Studio实现,包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...
2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案
一、延迟敏感行业面临的DDoS攻击新挑战 2025年,金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征: AI驱动的自适应攻击:攻击流量模拟真实用户行为,差异率低至0.5%,传统规则引…...

高抗扰度汽车光耦合器的特性
晶台光电推出的125℃光耦合器系列产品(包括KL357NU、KL3H7U和KL817U),专为高温环境下的汽车应用设计,具备以下核心优势和技术特点: 一、技术特性分析 高温稳定性 采用先进的LED技术和优化的IC设计,确保在…...
虚幻基础:角色旋转
能帮到你的话,就给个赞吧 😘 文章目录 移动组件使用控制器所需旋转:组件 使用 控制器旋转将旋转朝向运动:组件 使用 移动方向旋转 控制器旋转和移动旋转 缺点移动旋转:必须移动才能旋转,不移动不旋转控制器…...