首页 > 系统相关 >[linux]VIM实用技巧

[linux]VIM实用技巧

时间:2023-07-30 17:12:21浏览次数:35  
标签:实用技巧 字符 跳转 模式 VIM 命令 查找 linux 光标

一、文本对象

1.文本对象

文本对象:基于结构定义的文本区域

文本对象字符由两个字符组成,第一个字符永远是a/i

i开头的文本对象会选择分隔符内部的文本
a开头的文本对象会选择分隔符在内的整个文本
即:i不包含边界,a包含边界

注:1.文本对象可结合可视模式使用(v—可视字符)

2.文本对象可结合动作命令d{motion}/c{motion}/y{motion}使用

文本对象 选择区域
a)或ab 一对圆括号
i)或ib 一对圆括号内部
a}或aB 一对花括号
i}或iB 一对花括号内部
a] 一对中括号
i] 一对中括号内部
a> 一对尖括号
i> 一对尖括号内部
a' 一对单引号
i' 一对单引号内部
a" 一对双引号
i" 一对双引号内部
a` 一对反引号
i` 一对反引号内部
at 一对XML标签\<xml>tags\</xml>
it XML标签内部
aw 当前单词及一个空格
iw 当前单词
注:单词由字母、数字、下划线,或其他非空白字符的序列组成,单词间以空白字符分隔,如:we‘re中包括we ’ re共三个单词
aW 当前字串及一个空格
注:字串由非空白字符序列组成,字串间以空白字符分隔,如:we're为一个字串
iW 当前字串
as 当前句子及一个空格
is 当前句子
ap 当前段落及一个空行
ip 当前段落

注:一般说来,

d{motion}命令和aw,as,ap配合使用较好

c{motion}命令和iw,is,ip配合使用较好

2.位置标记

m{a-zA-Z}:用选定的字母(a-zA-Z,自己选择)标记当前光标所在位置

标记:

m{a-z}:小写字母标记,在每个缓冲区局部可见(同一文件中使用和跳转)

m{A-Z}:大写字母标记,全局可见(可通过文件标记,在不同文件之间跳转)

跳转:

`{a-zA-Z}:使用标记的字母进行跳转

ctrl+o:返回跳转之前的位置

小技巧

操作符 含义
mm 标记位置m
`m 跳回到标记处m所在位置

自动位置标记

位置标记 跳转到
`` 当前文件中上次跳转动作之前的位置
`. 上次修改的地方
`^ 上次插入的地方
`[ 上次修改或复制的起始位置
`] 上次修改或复制的结束位置
`< 上次高亮选区的起始位置
`> 上次高亮选区的结束位置

二、工作模式

1.普通模式

普通模式是vim的一般工作模式,是vim最常用模式。常见快捷键如下表:

(1)常用快捷键

常用使用操作符 含义
. 重复上次修改
注:修改是指vim一次操作 ,如:从普通模式进入插入模式(输入i)到返回普通模式(按\<Esc>),vim会记录每一个按键操作。此时再使用.命令,会重复执行所有操作
x 剪切
例如:vim普通模式下先输入x再输入.==>前后剪切两个光标下字符
u 撤销上次修改
>G 增加从当前行到文档末尾处的缩进层次
a 当前光标字符后面插入
A 当前行行尾插入
i 当前光标字符前面插入
I 当前行行首插入
0(数字0) 将光标移动到当前行行首
^ 将光标移动到当前行第一个非空白字符
$ 将光标移动到当前行行尾
o(字母o) 当前光标下一行插入
O 当前光标上一行插入
s 删除光标下字符并插入
注:该操作=cl/xi/dli
S 删除当前行并插入
注:该操作=cc/ddi
G(=go) 跳转到文档最后一行行首
3G 跳转到第3行行首
gg 跳转到当前文件的首行
ga 显示光标处的字符编码(十进制/十六进制)
zz 重绘屏幕,把当前行显示在窗口正中
J 将下一行补充到当前行尾
* 正向查找相同单词
# 反向查找相同单词
~ 反转大小写(vimrc中set tildeop)
g~ 反转大小写
gu 转换为小写
gU 转换为大写
注:gUU 作用与当前行
> 增加缩进
注:>>缩进当前行
< 减少缩进
= 自动缩进
注:=3 自动缩进当前光标行和之后3行
=G 自动缩进从光标位置到文件结尾的所有内容
% 在匹配的括号及匹配的关键字之间跳转

(2)动作命令

注:三个动作命令应当结合《文本对象的选择》进行理解

d{motion}命令

d{motion}命令主要执行“删除”操作,作用为:删除指定的文本

常用操作符 含义
dd 删除光标所在行(当前行)
db 反向删除:删除从光标位置到单词开头(空格处)的字符
dl 删除光标处的字符
注:该操作=x
dw 删除从光标位置到单词结尾间的字符(包括空格)
daw 删除完整单词(包括空格)
diw 删除完整单词(不包括空格)
dap 删除整个段落(包括段落后的空一行)
d3w 删除从光标位置处共3个单词

注:iw和aw的区别见《文本对象的选择

c{motion}命令

c{motion}命令主要执行“修改”操作,作用为:删除指定的文本,然后切换到插入模式

常用操作符 含义
cc 删除光标所在行并进入插入模式
注:该操作=S
cb 反向操作:删除从光标位置到单词开头(空格处)的字符并进入插入模式
cl 删除光标处字符并进入插入模式
注:该操作=s
cw 删除从光标位置到单词结尾间的字符并进入插入模式(不会删除空格)
caw 删除完整单词并进入插入模式(包括空格)
ciw 删除完整单词并进入插入模式(不包括空格)
cap 删除整个段落(包括段落后的空一行)
c3w 删除从光标位置处开始的3个单词并进入插入模式

y{motion}命令

y{motion}命令主要执行“复制”操作,作用为:复制指定的文本

常用操作符 含义
yy 复制光标所在行
yb 反向操作,复制从光标位置到单词开头之间(空格处)的字符
yl 复制光标处字符
yw 复制从光标位置到单词结尾间的字符(包括空格)
yaw 复制整个单词(包括空格)
yiw 复制整个单词(不包括空格)
yap 复制整个段落(包括段落后的空一行)
y3w 复制从光标位置处开始的3个单词

(3)移动命令

移动命令

上下左右四个按键行为

常用操作符 含义
h/左键 光标向左移动
j/下键 光标向下移动
k/上键 光标向上移动
l(小写的L)/右键 光标向右移动

实际行与屏幕行

实际行:文本中的行数

屏幕行:vim中(wrap缺省启动时)在当前屏幕显示不完时会自动回绕,即一行文本分两行显示。

如: 一行文本分两行显示,两行显示为屏幕行(第二行无number),一行文本为实际行(只有一个number)

常用操作符 含义
j 向下移动一个实际行
gj 向下移动一个屏幕行
k 向上移动一个实际行
gk 向上移动一个屏幕行
0(数字0) 移动到实际行行首
g0 移动到屏幕行行首
$ 移动到实际行行尾
g$ 移动到屏幕行行尾
^ 移动到实际行的第一个非空白字符
g^ 移动到屏幕行的第一个非空白字符

基于单词的移动

单词:由字母、数字、下划线或其他非空白字符的序列组成,单词间以空白字符分隔

字串:由非空白字符序列组成,字串间以空白字符分隔

如:we're中包括we're共三个单词,一个字串

常用操作符 含义
w 正向移动到下一个单词的开头
b 反向移动到当前单词/下一单词的开头
例如:we are,当光标位于a上,此时b让光标移动到w上;当光标位于r上,此时b让光标移动到a上
e 正向移动到当前单词/下一单词的结尾
例如:you are,当光标位于y上,此时e让光标移动到u上;当光标位于u上,此时e让光标移动到e上
ge 反向移动到上一单词的结尾
cw 删除光标位置到单词结尾字符并进入插入模式
ea 在当前单词/下一单词结尾添加
注:该操作可分解为(1)e:正向移动到当前单词/下一单词结尾(2)a:光标字符后面插入
gea 在上一单词结尾添加
注:该操作可分解为(1)ge:反向移动到上一单词结尾(2)a:光标字符后面插入
W/B/E/gE 对字串执行相同的操作

字符查找命令

字符查找命令

字符查找命令在当前行操作,查找单个字符

常用操作符 含义
f{char} 正向移动到下一个{char}所在之处,即:将光标移动到指定字符上
注:包括字符
F{char} 反向移动到上一个{char}所在之处
注:包括字符
t{char} 正向移动到下一个{char}所在之处的前一个字符上,即:直到查找到指定字符为止
注:不包括字符
T{char} 反向移动到上一个{char}所在之处的后一个字符上
注:不包括字符
;(下一个) 重复上一次的字符查找
注:配合f/F/t/T{char}使用
,(上一个) 回退
注:配合f/F/t/T{char}使用

例如:

键入操作符 操作文本 备注
I've been expecting you , Mister Bond. 光标位于I
f, I've been expecting you , Mister Bond. 将光标移动到查找到字符,
dt. I've been expecting you . 删除从当前光标处(,)到结尾(.)中间的字符

总结: f{char}/F{char}在普通模式下更好用

t{char}/T{char}配合d{motion}/c{motion}/y{motion}更好用

查找命令

查找命令:/{motion}。查找命令在整个文本操作

查找命令的正向/反向移动:N(上一个)/n(下一个)

例如:

键入操作符 操作文本 备注
This phrase takes time but eventually gets to the point. 光标位于takes的t上
d/ge<CR>
注:表示回车
This phrase gets to the point. 查找命令告诉d{motion}需要删除的内容,此时查找命令是个开动作

(4)可重复的操作及如何回退

目的 操作 重复 回退
做出一个修改 {edit} . u
在行内查找下一指定字符 f{char}/t{char} ;(下一个) .(上一个)
在行内查找上一指定字符 F{char}/T{char} ;(下一个) .(上一个)
在文档中查找下一处匹配项 /\<pattern> n(下一个) N(上一个)
在文档中查找上一处匹配项 ?\<pattern> n(下一个) N(上一个)
执行替换 :s/target/replacement & u
执行一系列修改 qx{changes}q
注:录制宏,其中x表示寄存器x
@x u

2.插入模式

插入模式是vim输入文本的模式,类似vim的工作模式。

常用操作符 含义
<C-p>
注:该符号表示ctrl+p,全文同
自动补全
注:自动补全详细内容见《6.2自动补全》
<C-h>/Backspace 删除前一个字符
<C-w> 删除前一个单词
<C-u> 删除至行首
<ESC>/<C-[> 切换到普通模式
<C-o> 切换到插入-普通模式
<C-r>{register} 在插入模式下进行文本复制
注:{register}详细内容见《4.寄存器》
<C-r>={表达式}
注:表达式为数学表达式
在光标处插入表达式计算结果
<C-v>{code}
注:code为三位数字
以十进制字符编码插入字符
如:{code}=123表示字符“{”
<C-v>u{code}
注:code为四位数字
以十六进制字符编码插入字符

如:{code}=0078表示字符“{”
<C-v>{nondigit}
注:nondigit为非数字键
按原义插入非数字字符
如:{nondigit}={表示字符“{”
<C-k>{char1}{char2} 插入以二合字母{char1}{char2}表示的字符
注:二合字母查阅::h digraphs-default :h digraph-table

例如:插入模式下的文本复制

键入操作 文本 备注
line one,line two
line three
将line one补在文本最后一行
普通模式下yt, line one,line two
line three
复制line one
普通模式下jA (空格) line one,line two
line three (光标处)
将光标移动到第二行末尾,进入插入模式,键入空格
插入模式下键入<C-r>0(数字0) line one,line two
line three (上一次光标处)line one(新光标处)
在光标处粘贴文本

(1)插入-普通模式

插入-普通模式:在插入模式下能够执行一次普通模式。即在插入-普通模式下,执行完一次普通模式命令后自动回到插入模式。在插入模式下使用ctrl+o切换到插入-普通模式。

小技巧

操作命令 含义
<C-o>zz 进入插入-普通模式,调整屏幕显示(将当前行显示在屏幕中间),然后回到插入模式
注:可以不受中断的继续编辑

(2)替换模式

常用操作符 含义
R 由普通模式进入替换模式
<Insert>键 在替换模式和插入模式间切换
r{char} 替换一个字符。{char}为要替换的字符,替换完后马上切回到普通模式

3.可视模式

可视模式下进行文本操作很方便

常用操作符 含义
v 激活面向字符的可视模式
V 激活面向行的可视模式
<C-v> 激活面向列块的可视模式
gv 重选上次的高亮选区
o 切换高亮选区的端点
注:高亮选区的范围由其两个端点界定。其中一端固定,而另一端可以随光标自由移动,用o键可以切换活动端点
U 可视模式下,将选中的字符转换为大写
注:同普通模式下的gU
c 可视模式下,删除高亮区域并进入插入模式
d 可视模式下,删除高亮区域
$ 可视列块模式下,vim能自动选择所有列最末尾的字符
i/a 可视模式下不可用,使用I/A进行插入

$在列块操作下非常有用,例如:

键入操作 文本 备注
line one
line three
line four
给每行文本末尾加;
<C-v>jj$ line one
line three
line four(高亮覆盖)
<C-v>:进入可视模式
jj:选择当前光标下以及后两行文本
$:选择到高亮区域每行末尾
A; line one;
line three
line four
行尾加;
<ESC> line one;
line three;
line four;
每行文本末尾均加;
光标回到最开始的位置

4.命令行模式

(1)[range]的几种表达方式

很多Ex命令可用[range]指定要操作的范围,有如下几个方法:

(1)行号, :1==> 文件开头 :2==>文件第二行 :$==>文件末尾

如: 1p ==>将一行打印,其中:p为:print的简写

(2)用地址指定一个范围,格式为::{start},{end}

如::2,5p==>将文件第二行到第五行打印

注:符号.代表当前地址,则:.,\$p==>将当前位置到文件末尾间的所有行打印

注:符号\%代表当前文件中的所有行,则::\%p=:1,\$p==>将整个文件打印

(3)用高亮选区指定范围

如:a.先执行2G(跳转到第二行行首),再执行VG(可视行选中当前位置到文件末尾)

b.输入 : (命令行会出现'<,'>)

c.再输入Ex命令,如:'<,'>p(高亮区域均被打印)

(4)用模式(正则匹配)指定范围,格式为::{模式1},{模式2}

(5)用偏移地址进行修正,格式为::{address}+n,其中{address}为指定的起始位置处,n为偏移地址 如::.,+3p==>打印从光标位置开始后的3行内容

总结

常用操作符 地址
1 文件第一行
$ 文件最后一行
0(数字0) 虚拟行,位于文件第一行的上方
. 光标所在行
'm 包含位置标记m的行
'< 高亮选区的起始行
'> 高亮选区的结束行
高亮选区内容通过'<,'>记录
% 文件所有行
%=:1,$
@: 重复上次的Ex命令
@:对应的回退命令为<C-o>
:& 重复上一次的替换操作
:&在重复上一次的:s命令时会忽略:s命令的标志位,具体使用方法参考《5.3替换》

(2)':t'命令与':m'命令

:t=:copy 用法::[range]t{address},即将[range]内容复制到{address}下

命令 含义
:6t. 将第6行的内容复制到当前行下方
:t6 将当前行的内容复制到第6行下方
:t. 复制当前行
注:同yy
:t$ 将当前行的内容复制到文件末尾
:'<,'>t0 将高亮区的内容复制到文件开头

:m命令为移动命令 用法::[range]m{address},即将[range]内容移动到{address}下

命令 含义
:6m. 将第6行的内容移动到当前行下方
:m6 将当前行的内容移动到第6行下方
:m. 复制当前行
注:同yy
:m$ 将当前行的内容移动到文件末尾
:'<,'>m0 将高亮区的内容移动到文件开头
:'<,'>m$ 将高亮区的内容移动到文件末尾
该操作=普通模式下dGp:d:剪切当前行内容,G:跳转到文件末尾,p:粘贴内容

(3)normal命令

normal命令使得在命令行模式下,在指定范围内执行普通模式命令

注:在执行普通命令模式之前,vim会先把光标移动到该行的起始处

常见操作符 含义
:'<,'>normal . 对高亮选区中的每一行,对其执行普通模式下的.命令
:.,.+7normal A( ); 对当前行及以后七行行尾插入( );
:%normal A; 对文本所有行行尾插入;
:%normal i// 对文本所有行行首添加//
注:Verilog中为,注释掉多余行
:'<,'>normal @q 对高亮区中的每一行执行宏q

(4)命令行补全

在需要打开多个文件时,命令行自动补全行为为自动补全路径提供了方便

注:命令行自动补全参考《6.2自动补全

按键 含义
<Tab> 多次按<Tab>键,会依次显示补全列表
使用 :e ./../或:tabe ./../时,使用<Tab>补全路径
<S-Tab>
=shift+Tab
反向遍历补全列表
<Tab>键正向遍历补全列表

(5)将文本中单词插入命令行

<C-r>命令 含义
<C-r><C-w> 复制光标处的单词插入命令行
<C-r>\<C-a> 复制光标处的字串插入命令行
<C-r>/ 粘贴上次查找内容到命令行
<C-r>{register} 粘贴寄存器中的内容到命令行
{register}内容参考《4.寄存器》

例如:

键入操作 文本 备注
line one,line two,line three,line four 将所有的line替换为counter
* line one,line two,line three,line four 标亮所有的line,光标跳转至下一处line
ciwcounter<ESC> line one,counter two,line three,line four 用counter替换掉光标下的line
:%s//<C-r><C-w>/g
//:模式*记录了查找历史line
<C-r><C-w>:复制光标下单词counter
/g:替换符的标志位,“所有”的意思
counter one,counter two,counter three,counter four 用counter替换掉所有的line

该操作在vimrc中也可以使用到:

在需要查阅某种设置时,将光标移动到该设置上,输入: h \<C-r>\<C-w>获取帮助

(6)回溯历史命令

(1):进入命令行模式,按Up/Down键进行命令回溯。缺省情况下,记录20条命令。

:hl+Up/Down键,只有以单词hl开头的Ex命令才会包含在列表中

:set history=200 命令行模式下保持的历史Ex命令

(2)/查找提示符,Up/Down遍历历史查找记录

(3)命令行窗口 q: 进入Ex历史命令的命令行窗口

命令行窗口

命令行窗口为vim的历史命令缓冲区,该缓冲区中不只包含Ex命令,包括vim中所有执行的命令。使用k/j可以向上向下移动,也可以通过使用vim查找功能查找某一行命令。打开命令行窗口的几种方式为:

命令 动作
q/ 打开查找命令历史的命令行窗口
q: 打开Ex命令历史的命令行窗口
<C-f> 从命令行模式切换到命令行窗口

(7)运行shell命令

命令 用途
:shell 启动一个shell(输入exit返回vim)
:!{cmd} 在shell中执行{cmd}
:read !{cmd} 在shell中执行{cmd},并把其标准输出插入到光标下方
:[range]write !{cmd} 在shell中执行{cmd},以[range]作为其标准输入(shell命令的输入操作范围)
:[range] !{filter} 使用外部程序{filter}过滤指定的[range]

几个执行的例子为:

启动一个shell
在这里插入图片描述

三、文件类操作

1.管理多个文件

(1)缓冲区列表

命令 含义
:ls 列出所有被载入到内存中的缓冲区列表
%:指明哪个缓冲区在当前窗口可见(即表明当前的显示文件)
#:不表示轮换文件
<C-^> 在当前文件和轮换文件间快速切换
:bp 缓冲区列表反向移动
:bn 缓冲区列表正向移动
:bfirst 跳转到缓冲区列表的开头
:blast 跳转到缓冲区列表的结尾
:buffer N 跳转到"N"缓冲区
N为缓冲区编号,系统自动编号,用ls可查看
:argdo 对缓冲区列表内的所有缓冲区执行一条Ex命令
:argdo write 保存参数列表中的全部文件
:bufdo :ls列出的所有缓冲区上执行一条Ex命令
:wall 保存参数列表中的全部文件
与wnext的区别,wnext为先运行write命令,再运行next命令
:bd 删除缓冲区
如:5,10bd删除编号5-10的缓冲区
:w 把缓冲区内容写入磁盘
:e! 把磁盘文件内容读入缓冲区(即回滚所在的修改)
:qa! 关闭所有窗口,摒弃修改而无需警告
:wa! 把所有改变的缓冲区写入磁盘
:update 保存文件,只有在文件发生改动时,才会被执行

(2)文件窗口操作

创建分割窗口

操作符 含义
<C-w>s 水平切分窗口
<C-w>v 垂直切分窗口
:split {file}
简写 :sp {file}
水平切分当前窗口,并在新窗口载入{file}
:vsplit {file}
简写 :vsp {file}
垂直切分当前窗口,并在新窗口载入{file}

在窗口间切换

操作符 含义
<C-w>w 在窗口间循环切换
<C-w>h 切换到左边的窗口
<C-w>j 切换到下边的窗口
<C-w>k 切换到上边的窗口
<C-w>l(小写L) 切换到右边的窗口

关闭窗口

Ex命令 普通模式命令 用途
:clo=:q \<C-w>c 关闭活动窗口
:on \<C-w>o 只保留活动窗口,关闭其他所有窗口

打开及关闭标签页

操作符 含义
:tabe {filename} 在新标签页中打开{filename}
<C-w>T 把当前窗口移到一个新的标签页
:tabc 关闭当前标签页及其中的所有窗口
:tabo 只保留活动标签页,关闭其他标签页

在标签页间切换

Ex命令 普通模式命令 用途
:tabn {N} {N}gt 切换到编号为N的标签页
注:1.标签页的编号和缓冲区编号不一样
2.标签页的编号按照顺序进行编号
3.缓冲区的编号由系统进行编号,用:ls命令可查询缓冲区编号
:tabn gt 切换到下一标签页
:tabp gT 切换到上一标签页
:tabemove [N]
重新排列标签页
-- 当[N]==0时,当下标签页移动到开头(标签页开头)
当无N时,标签页移动到最后

:edit命令

操作方法 含义
-- --
:e {文件绝对路径} 按照文件的绝对路径打开文件
:e %\<Tab> 按照活动缓冲区的完整路径打开文件
%代表活动缓冲区的完整文件路径
:e %:h\<Tab> 去掉当前活动缓冲区文件名
:h修饰符会去除文件名,但保留路径中的其他部分

注::e在当前标签页打开文件; :tabe在新的标签页打开文件

:find命令

:find 打开文件(无需输入路径)直接打开,需要设置查找目录

vimrc中设置
:set path+=查找目录/**
通配符在此处指查找目录下的各个子目录

使用netrw管理文件系统

通过该方法可以查看目录内容

Ex命令 缩写 用途
:edit. :e. 打开文件管理器,并显示当前工作目录
:Explore :E 打开文件管理器,并显示活动缓冲区所在目录,该操作=:e.
:split. : s. 水平打开文件当前工作目录,该操作=:S
:vsplit. :vsp. 垂直打开文件当前工作目录

上述四个Ex命令均会覆盖当前活动区

操作符 含义
<C-^> 返回之前工作区
<C-g> 显示当前文件的文件名及状态

2.在多个文件间跳转

(1)在文件间跳转

跳转动作 用途
[count]G 跳转到指定的行号
/pattern<CR> 跳转到下一个模式出现之处
?pattern<CR> 跳转到上一个模式出现之处
n 跳转到下一个模式出现之处
N 跳转到上一个模式出现之处
% 跳转到匹配的括号所在之处
( 跳转到上一句的开头
) 跳转到下一句的开头
{ 跳转到上一段的开头
} 跳转到下一段的开头
H/M/L 跳转到屏幕最上方/正中间/最下方
gf 跳转到光标下的文件名(类似超链接)
<C-]> 跳转到光标下关键字的定义之处
'{mark} 跳转到一个位置标记
<C-o> 返回上一次打开的文件
<C-i> 与\相反命令
\<C-o>与\<C-i>在当前活动窗口的跳转列表范围内进行跳转

(2)遍历改变列表

操作符 含义
g;/g, 反向/正向遍历改变列表
g;改变列表,在列表中反向查找,即:跳转到上次文档中更改的地方
'.回到上次修改的地方
gi 恢复上次改变的地方,即光标移动到上次修改的地方,并进入插入模式
`^ 光标移动到上次修改的地方
gf
可记忆为:go to file
类似超链接
跳转后,可使用\<C-o>返回原文件
gf命令操作例子
如:`include one.v
gf命令:此时文件将会跳转到one.v文件

四、寄存器

1.复制与粘贴

(1)寄存器

无名寄存器:"

有名寄存器:"a-"z

通过"{register}(register=a-zA-Z)指定要用的寄存器

注:用小写字母引用有名寄存器,会覆盖该寄存器的原有内容

用大写字母引用有名寄存器,会将新内容添加到该寄存器的原有内容之后

寄存器 内容
" 无名寄存器
注:缺省情况下,x/s/d{motion} /y{motion}都会覆盖无名寄存器的内容
"0 复制专用寄存器
注:仅当使用y{motion}命令时,该寄存器才会被赋值,"0p=粘贴上一次复制命令所复制的内容
"+ x11剪切板,用剪切、复制与粘贴命令操作
注:(1)当在外部程序中用剪切或复制命令获取了文本,通过"+p(普通模式)/\+(插入模式)将其粘贴到Vim内部
(2)在Vim中的复制/删除/剪切命令使用"+,可以将Vim中的文本粘贴到其他应用程序
"=(普通模式)
<C-r>=(插入模式)
表达式寄存器
注:该寄存器后,Vim切换回命令行模式,并显示提示符“=”,这时我们可以输入一段Vim脚本表达式并按\<CR>执行,如果返回的是字符串,Vim会使用它
"% 当前文件名
"# 轮换文件名
". 上次插入的文本
": 上次执行的Ex命令
"/ 上次查找的模式
X11剪贴板的功能可在编译时被激活或禁用。可通过以下方式查阅自己Vim中X11剪贴板是否激活(1):verison
(2)/xterm_clipboard
如果第二步前有个减号,表示不支持该功能,加号表示此功能被激活

(2)粘贴复制删除

命令 作用
p(put命令) p:将内容粘贴到当前光标的后面
P:将内容粘贴到当前光标的前面
注:p/P粘贴动作完成后,光标位置移动到被粘贴文本的开头
gp gp:将内容粘贴到当前光标的后面
gP:将内容粘贴到当前光标的前面
注:gp/gP粘贴动作完成后,光标位置移动到被粘贴文本的结尾
d 删除(类似剪切,删除的内容会被放到无名寄存器)
注:_d{motion}才会执行真正删除操作,内容不会覆盖无名寄存器
c 删除并插入
y 复制
x 剪切

可视模式下,粘贴命令p=删除+粘贴

例如:

键入操作 文本 备注
line one,line two
yiw line one,line two 复制单词one
ww line one,line two 将光标移动到单词two的字符t上
ve line one,line two 进入可视模式并高亮选中单词two
p line one,line one 该步操作类似与,先删除two,再粘贴one
此时被替换的文本two存在无名寄存器中

插入模式下的粘贴命令\<C-r>

命令 内容
<C-r>" 粘贴无名寄存器的内容
<C-r>0 粘贴复制专用寄存器的内容

面向行的复制或删除操作:dd/yy/dap

面向字符的复制或删除操作:x/diw/das

(3)粘贴复制删除过程中利用寄存器

例子 内容
"ay$ 将光标所在行的末尾词符复制进寄存器a中
"ayiw 将光标下的单词复制到寄存器a中
"bdd 将光标下的当前行剪切到寄存器b中
"ap 粘贴来自寄存器a的内容
"bp 粘贴来自寄存器b的内容

2.宏

(1)宏的录制

q{register}:{register}=a-z为寄存器名字

第一次按下q:开始录制

第二次按下q:停止录制

注:{register}为大写字母时,表示在小写字母宏的后面继续添加内容。如:在宏a后添加按键操作,输入qA,在之前录制的宏中继续添加操作(该方法只能在结尾添加)

(2)执行宏

命令 作用
@{register} 指定寄存器来执行相应寄存器的宏
@@ 重复最近调用过的宏
N@{register}
串行的方法执行宏
重复寄存器宏N次
当需要简单的重复动作时,可录制宏
:'<,'>normal @{register}
并行的方法执行宏
在高亮选区中的每一行执行宏

用let实现累加操作

:echo i

键入操作 文本 备注
:let i=1 line one
line two
line three
qa line one
line two
line three
开始录制宏a
I<C-r>=i<CR>)<Esc> 1) line one
line two
line three
使用表达式寄存器插入变量i的值
:let i+=1 1) line one
line two
line three
命令行操作,文本不会发现变化
q 1) line one
line two
line three
停止宏录制
jbVG 1) line one
line two
line three
将剩下的文本选中
:'<,'>normal @a 1) line one
2) line two
3) line three
在剩下的文本执行宏

(3)编辑宏

1)将宏粘贴到文档中(:put{register}),类似编辑文档一样编辑宏

2)编辑宏

3)将宏从文档复制回寄存器,复制字符,执行两步:

a.0—回到行首

b.`{register}y$—从行首复制到行尾

五、模式匹配

1.vim的正则匹配

(1)调整查找模式的大小写敏感

命令 作用
\c 查找模式忽略大小写
元字符
\C 查找模式强制区分大小写
元字符
ignorecase 忽略大小写
smartcase 如果输入大写,则区分大小写
如果输入小写,则不区分大小写

三者查找时,优先级为:

元字符>'smartcase'>'ignorecase'

(2)正则匹配与文本原义匹配

正则匹配

按正则表达式查找时,使用\v模式开关

\v模式使得Vim中所有特殊字符都无需配合转义字符使用

Vim中3种括号:

a.[ ]:不需要转义

b.( ):需要转义,开/闭括号都需要转义\( \)(正则表达式中如此使用)

c.{ }:需要转义,开括号需要转义,闭括号不需要转义,即:正则表达式中\{ } 使用\v模式则无需关注

例如: /#\([0-9a-fA-F]\{6}\|[0-9a-fA-F]\{3}\) \

=/\v#([0-9a-fA-F]{6}|[0-9a-fA-F]{3}) \

=/\v#(\x{6}|\x{3}),其中\x=[0-9a-fA-F]

原义匹配

按原义查找文本时,使用\V原义开关

原义匹配即文本原义,例如:

匹配:a.k.a

不使用\V时,/a\.k\.a

使用\V时,/\Va.k.a

常用正则匹配字符

匹配模式 作用
() 使用圆括号捕获子匹配, \1....\9配合使用
注:\0引用整个匹配
\_s 匹配空白符或换行符
\w 匹配单词类字符,包括字母,数字以及符号"_"
\W 匹配除单词类字符以外的其他字符
[^,] 匹配除逗号以外的任何字符

注:使用圆括号但不捕获其内容:在圆括号前面加%,指示Vim不要将括号内的内容赋给寄存器\1

(3)界定单词与匹配的边界

模式:在查找域输入的正则表达式或按原义匹配的文本

匹配:在文档中被高亮显示的文本(启用'hlsearch'选项)

界定单词的边界

界定单词的边界<与>:匹配完整的单词而不是其他词的组成部分

如:/\v\\,只匹配单词the,不会匹配they

符号 作用
* 正向查找光标下的单词
会使用单词界定符
# 反向查找光标下的单词
会使用单词界定符
g* 正向查找光标下的单词
不会使用单词界定符
g# 反向查找光标下的单词
不会使用单词界定符

界定匹配的边界

元字符 含义
\zs 标志着一个匹配的起始
\ze 标志着一个匹配的结束

(4)转义问题字符

Vim查找中,无论处于哪种情况下,均需要转义的字符:

(1)正向查找时要转义/字符,即:\/

(2)反向查找时要转义?字符,即:\?

(3)每次查找时要转义\字符,即:\\

用编程的方式转义字符

escape({string},{chars})

{string}:查找域文本

{chars}:指定哪些字符需要用反斜杠转义

如:正向查找,可以调用escape(@u,'/\'),在每个/与\加上反斜杠前缀

反向查找,可以调用escape(@u,'?\'),在每个?与\加上反斜杠前缀

@u:复制在寄存器u中的字符串

escape({string},getcmdtype().'\')

{string}:查找域文本

getcmdtype():正向查找时,函数返回符号/

反向查找时,函数返回符号?

用函数编程的三个操作步骤:

a.复制字符串在寄存器{register}=a-zA-Z中(普通模式)

b.输入/或?(进入查找模式)

c.输入\V(原义开关)与\<C-r>=(进入表达式寄存器,输入函数进行转义)

d.按下\<CR>之后,escape()函数将被执行,其返回值将会被插入到查找域

2.查找

(1)查找的基本操作

执行一次查找

命令 用途
/\<pattern> 正向查找,即向下查找
?\<pattern> 反向查找,即向上查找

重复上一次查找

命令 用途
n 跳转至下一处匹配,保持查找方向与偏移方向不变
注:如果是/\,n表示继续向下查找
     如果是?\<pattern>,n表示继续向上查找
N 跳转至上一处匹配,保持查找方向与偏移方向不变
/<CR> 正向跳转至相同模式的下一处匹配
注:与查找模式的方向无关
?<CR> 反向跳转至相同模式的上一处匹配
/\
?\<up>
当查找提示符出现时,可以通过\<up>键,滚动浏览之前的查找记录

统计当前模式下的匹配个数

使用命令行:

:%s/\<pattern>//gn:该命令行会显示一共匹配了几处,通过该方法可知道查找字符在文本中的个数。命令详解:

s=substitute,替换命令,参考《5.3替换》,/\<pattern>为查找模式,//替换域为空,标志位n会抑制正常的替换动作,因此最后只会显示匹配次数,不会发生真正的替换。

注:将查找域留空,vim会使用上次的查找命令

查找后将光标移动到查找匹配的结尾

命令 用途
/<pattern>/e?<pattern>?e 添加标志位e,将光标移动到查找匹配的结尾
注:1./<pattern>和?<pattern>查找后,光标在查找匹配的开始
2.查找域留空,vim会使用上次的查找命令

(2)vimrc中关于查找的设置

基本设置

vimrc设置 作用
set hlsearch 设置高亮查找匹配
set nohlsearch 禁用高亮查找匹配
注:nohlsearch命令暂时关闭查找高亮功能,此命令使得高亮功能一直处于关闭状态,直到执行新的或重复的查找命令为止
set incsearch 根据输入的查找模式预览,即会实时显示当下查找内容,并将光标移动到该处
注:通过"incsearch"设置,结合\<C-r>\<C-w>可实现查找域自动补全(即:如果查找substitute这个单词,那么输入sub光标就自动移动该单词上,再通过按键\<C-r>\<C-w>就可以将该单词复制粘贴到命令行中,实现全文查找)
禁用高亮查找在某些场景下很有用,因此可通过映射项来进行映射
nnoremap <silent><C-l> :<C-u>nohlsearch<CR><C-l>
<C-l>:用于清除并重绘显示屏,新的映射项在原来的基础之上增加了暂时关闭查找高亮的功能

可视模式下查找当前选择的文本

普通模式下命令 用途
* 正向查找光标下的单词
# 反向查找光标下的单词

当要查找一段文本时(可视模式下选中的高亮文本区域),在vimrc中添加:

xnoremap *: <C-u>call <SID>VSetSearch( ) <CR>/<C-R>=@/<CR><CR>
xnoremap #: <C-u>call <SID>VSetSearch( ) <CR>?<C-R>=@/<CR><CR>
function! s:VSetSearch()
let temp = @s
norm! gv"sy
let @/ = '\V' . substitute(escape(@s, '/\'), '\n', '\n', 'g')
let @s = temp
endfunction

其中,xnoremap关键字指明此映射项只在可视模式下有效。此时,

可视模式下命令 用途
* 正向查找高亮选区下的文本
# 反向查找高亮选区下的文本

3.替换

(1)替换的基本操作

substitute语法

:substitute基本语法为

:[range]s[ubstitute]/{pattern}/{string}/[flags]

[range]为操作范围,具体参考《4.1 range的几种表达方式》

/{pattern}/为查找域,具体参考《5.2 查找》

/{string}/为替换域

/[flags]为标志位

替换域中的特殊字符

符号 含义
\r 插入一个换行符
\t 插入一个制表符
\\ 插入一个反斜杠
\1 插入第1个子匹配
\2 插入第2个子匹配(以此类推,最多到\9)
\0 插入匹配模式的所有内容
& 插入匹配模式的所有内容
~ 使用上一次调用 :substitute时的{string}
\={Vim script} 执行{Vim Script}表达式,并将返回的结果作为替换{string}

标志位

这里主要列出常用的标志位,完整参考资料可以查询:h s_flags

常用标志位 含义
g 使substitute命令可以全局执行
注:这里的全局是指一行内容
c 拒绝/确认一次修改
n 抑制正常的替换行为(即不执行替换操作)
:%s///gn统计查找匹配的个数
e 屏蔽替换操作过程中的错误提示
& 重复上一次substitute命令所用过的标志位
i 忽略大小写进行查找
I 不忽略大小写进行查找

标志位c的答案

答案 用途
y 替换此处匹配
n 忽略此处匹配
q 退出替换过程
l “last”——替换此处匹配后退出
a "all"——替换此处与之后所有的匹配
<C-e> 向上滚动屏幕
<C-y> 向下滚动屏幕

(2)substitute命令与寄存器

用寄存器内容替换

操作命令 含义
:%s//{string}/[flags] 查找域留空,vim会重用上一次的查找模式
:%s/\<C-r>//{string}/[flags] 查找域粘贴上一次查找内容
注:\<C-r>/粘贴上一次查找内容
:%s/{pattern}/\<C-r>{register}/[flags] 替换域粘贴寄存器内容
注:\{register}将文本内容粘贴至命令行***
\0:粘贴复制专用寄存器0的内容***
\<C-r>":粘贴无名寄存器的内容
:%s/{pattern}/\=@{register}/[flags] 替换域引用寄存器内容
注:\=表示替换域中执行vim脚本,@{register}引用寄存器内容
\=@0:返回复制专用寄存器的内容
\=@":返回无名寄存器的内容

注:当寄存器内容有替换域特殊字符时,粘贴寄存器内容还需要进行转义操作,而引用寄存器内容则无需转义

重复上一次替换操作

常用操作命令 含义
g&
=:%s//~/&
在整个文件范围内重复上一次替换操作
注:该操作在某条替换命令忘了加全局范围%时很有用
:&& 重新执行替换操作(该命令不关心上次替换的作用范围,该命令只作用于当前行)
注:1.第一个&重复上一次的:s命令,第二个&重复上一次:s命令的标志位
1.:'<,'>&&在高亮区重新执行替换操作
2.:%&&在整个文件重新执行替换操作,即该操作=g&
&命令是:s命令的同义词,用于重复上一次的替换操作。但是&命令不会重复:s命令的标志位
将:&&映射为&
nnoremap & :&&<CR>(普通模式下的映射关系)
xnoremap & :&&<CR>(可视模式下的映射关系)

submatch函数

使用submatch()函数获取当前匹配内容,如 :%s/{pattern}/\=submatch(0)/[flags]

使用Abolish.vim插件,获取超级substitute命令 在该插件中,交换两个词语可通过

:%S/{word1,word2}/{word2,word1}/g

4.global命令

(1)global命令基本语法

global命令基本语法为 :[range] global[!] /{pattern}/[cmd]

基本项分解 [range]

缺省情况下,:global命令的作用范围是整个文件(缺省范围:%)

其他Ex命令

(如::delete/:substitute/:normal)的缺省范围是当前行(缺省范围:.)

{pattern}

{pattern}域与查找历史相互关联,如果查域为空的话,vim自动使用上一次的查找模式

[cmd]

[cmd]可以是除了:global命令之外的任何Ex命令,[cmd]的范围可单独设定。缺省情况下,[cmd]=:print

global命令执行情况

global命令在指定[range]范围内的文本执行情况分为两步:

(1)在所有{pattern}匹配行上做标记

(2)在所有被标记行上执行[cmd]

由于[cmd]的操作范围可单独设定,因此global命令有两轮范围筛选

global!=vglobal命令

:global!/:vglobal反转:global命令。即在没有匹配到指定模式的行上执行[cmd]

global命令[cmd]的[range]使用

以:g/{pattern}作为参考点,动态的设定范围 如命令 :g/{/ .+1,/}/-1 sort

命令分解

global命令的基本语法为 :g/{pattern}/[cmd]

/{/: 匹配中括号{

.+1: 当前光标的下一行

/}/: 匹配中括号}

因此,/{/ .+1,/}/-1 设定的范围是中括号{}内部的内容

该命令执行情况为:对中括号{}内部的内容进行排序

(2)global命令与delete命令连用

:g/{pattern}/d删除所有匹配的行

:g/{pattern}/d 删除{pattern}匹配的模式

如::g/\v\<\/?\w+>/d 将标签\<a>中(a代表任意个数的字符)内容删掉

:v/{pattern}/d只保留匹配行

:vglobal简写为:v命令,与:g命令操作相反,在指定模式的非匹配行上执行Ex命令

:v/{pattern}/d 删除所有不包含{pattern}的模式,即保留{pattern}匹配的模式

如: :v/href/d 删除所有不包含href的文本行

(3)gloabal命令与yank命令连用

将:global命令与:yank命令联合使用,可以把所有匹配{pattern}的文本行收集到某个寄存器

如: :g/{pattern}/yank A

命令详解

g/{pattern}: 查找{pattern}匹配模式

yank A: 将g/{pattern}的内容复制到寄存器A中,这里用大写字母A引用寄存器,意味斟酌Vim把内容附加到指定的寄存器,而不是直接覆盖。

六、工具

1.ctags工具

(1)安装ctags

ctags是一个外部程序,它通过扫描代码库,生成关键字的索引。使用ctags,可以快速跳转到函数及类的定义处,从而实现浏览整个代码库的目的。

安装Exuberant Ctags

安装 ➾ $ sudo apt-get install exuberant-ctags

➾ $ brew install ctags 检测是否成功安装ctags ➾ $ ctags --help

用ctags创建代码库索引

可以在系统命令行中调用ctags,以要建立索引的文件路径作为它的参数,可以为一个文件,也可以为多个文件。例如:

➾ $ cd project/ctags

➾ $ ls

one.v two.v three.v

➾ $ ctags *.v

➾ $ ls

one.v two.v three.v tags

注:ctags创建了一个名为tags的纯文本文件,该文件即称为标签文件,是ctags对源文件分析而生成的关键字索引

(2)配置vim使用ctags

标签文件的路径

'tags'选项指定了vim的标签文件路径,默认为./(即当前文件所在路径) 在某些情况下,如果Vim已在第一个标签文件中找到了匹配项,就不会在第二个标签文件中继续查找。

:set tags

手动执行ctags

直接在Vim中调用ctags

➾ :!ctags -R

该命令将从当前工作目录开始,遍历其所有的子目录,并为其中的每一个文件建立索引,最终把该标签文件保存到当前工作目录。

该命令可映射为

nnoremap <f5>: !ctags -R<CR>
按<F5>即可完成索引更新动作

保存文件时自动执行ctags

Vim的自动命令(autocommand)在某一事件发生时(包括缓冲区的创建、打开或保存等)调用一条命令。因此我们可以创建一条自动命令,在每次保存文件时自动调用ctags

:autocmd BufWritePost * call
system("ctags -R")

(3)标签跳转命令

命令 用途
<C-]> 跳转到匹配当前光标所在关键字的第一处标签,即光标将会从当前所在的关键字跳转到它的定义处
g<C-]> 如果只有一处匹配时,与 \<C-]>用法相同,但是当有多从匹配当前光标所在关键字时,Vim会提示用户指定一处进行跳转
:tag {keyword}
:tag /{pattern}
跳转到匹配{keyword}/{pattern}的第一处标签
同\<C-]>
:tjump {keyword}
:tjump /{pattern}
提示用户从匹配{keyword}的多处标签中指定一处进行跳转。如果只有一处匹配,则不会提示,直接进行跳转
同g\<C-]>
:pop 或 <C-t> 反向遍历标签历史
即:\<C-]>/g\<C-]>/:tag {keyword}/:tjump {keyword}的回退
:tag 正向遍历标签历史
:tnext 跳转到下一处匹配的标签
:tprev 跳转到上一处匹配的标签
:tfirst 跳转到第一处匹配的标签
:tlast 跳转到最后一处匹配的标签
:tselect 提示用户从标签匹配列表中选择一项进行跳转

2.自动补全

(1)自动补全总结

命令 补全类型
<C-n>/<C-p> 普通关键字
<C-x><C-n> 当前缓冲区关键字
<C-x><C-i> 包含文件关键字
'include包含的文件
<C-x><C-]> 标签文件关键字
<C-x><C-k> 字典查找
<C-x><C-l> 整行补全
<C-x><C-f> 文件名补全
命令行模式下,可以用\<Tab>来补全路径中的目录和文件名
<C-x><C-o> 全能(Omni)补全

字典中的单词自动补全

vimrc中
:set spell 激活vim的拼写检查功能

全能补全

全能补全即根据上下文自动补全,可以通过<C-x><C-o>触发 实现全能补全先加载以下配置行

set nocompatible
filetype plugin on

(2)自动补全的弹出式菜单交互命令

按键操作 作用
<C-n> 使用来自补全列表的下一个匹配项(next匹配项),会自动更新文档
<C-p> 使用来自补全列表的上一个匹配项(previous匹配项)
<Down> 选择来自补全列表的下一个匹配项,不会自动更新文档,按\<CR>确认选择项
<Up> 选择来自补全列表的上一个匹配项
<C-y> 确认使用当前选中的匹配项(yes)
<C-e> 还原最早输入的文本(从自动补全中exit)
下拉菜单被删除
<C-h>(与<BS>) 从当前匹配项中删除一个字符
<C-l> 从当前匹配项中增加一个字符
{char} 中止自动补全并插入字符{char}

注:快捷键<C-n><C-p>:使得文本输入的同时,能看到补全列表

标签:实用技巧,字符,跳转,模式,VIM,命令,查找,linux,光标
From: https://www.cnblogs.com/automachinengineering/p/17591694.html

相关文章

  • Linux防火墙iptables基础详解
    一、前言防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP、数据进行检测。目......
  • 【技术积累】Linux中的命令行【理论篇】【一】
    7z命令命令介绍7z命令是Linux系统中的一个压缩和解压缩工具,它可以用来创建、压缩和解压缩7z格式的文件。7z是一种高压缩率的文件格式,通常比其他常见的压缩格式(如zip和gzip)具有更高的压缩率。命令安装在Linux中输入以下命令安装7-Zip。#Ubuntu系统apt-getupdateapt-g......
  • GVIM 使用技巧
    本文参考《GVIM教程基于明德扬课程》哔哩哔哩_bilibili1.GVIM三种模式GVIM有三个操作模式,分别是命令模式、编辑模式和列操作模式。默认GVIM是命令模式。在命令模式下,输入i进入编辑模式。在任何模式下,按Esc进入命令模式。在命令模式下,按ctrl+q进入列操作模式。......
  • Linux命令(55)之free
    Linux命令之free1.free介绍linux命令free被用来查看系统内存使用情况2.free用法free[参数]free常用参数参数说明-b以Byte显示系统内存使用情况-k以KB显示系统内存使用情况-m以MB显示系统内存使用情况(常用)-g以GB显示系统内存使用情况(常用)-snseconds每隔3秒显示系统内存使用......
  • Linux TCP Socket实现进程间通信
    LinuxSocket由内核实现。服务端初始化Socket->绑定地址和端口->监听端口->accept阻塞等待客户端连接->处理请求并响应客户端初始化Socket->连接服务端->发送请求->读取数据->关闭连接common.h#include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>......
  • linux命令-tar 打包压缩命令
    tar命令用于文件的打包或压缩,是最为常用的打包压缩命令,其语法格式如下:tar[选项]文件名.tar.gz源文件常用指令:tar-czvfxxx.tar.gz source_file(tar-czvf包名.tar.gz 源文件)    #以tar.gz方式打包并gz方式压缩tar-xzvfxxx.tar.gz-Cpath(tar-xzvfx......
  • Linux磁盘引导,备份修复MBR扇区,备份修复GEUB扇区,修改root密码
    一、Linux磁盘引导Linux启动过程1.1开机自检服务器主机开机以后,将根据主板BIOSQ中的设置对CPU(CentralProcessingUnit,中央处理器)、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权人多时候会移交给本机硬盘1.2.MBR引导当从本机硬盘中......
  • Linux命令uuidgen是什么意思?
     Linux命令uuidgen用于生成一个128位的唯一标识符(UUID,UniversallyUniqueIdentifier),其基于时间戳和MAC地址等信息生成,用于标识不同的文件、对象等。可以用于创建唯一的文件名、数据库记录等。命令语法: uuidgen[OPTIONS]OPTIONS为可选参数,常用的参数有:–-r,–random:基......
  • linux 编译内核,换内核流程和方法
      1:先找一个合适版本的内核,下载,解压到系统中的任意一个目录TheLinuxKernelArchives这个内核版本,如果要绝对稳定或者安全,那么最好是和当前系统的内核大、中版本相同,如,我的系统版本如果为5.15.38那么我最好是换成相近的系列,如5.15.123尽量别上6否则可能出问题假......
  • centos等linux系统重启网卡和配置网卡命令
    centos网卡配置1、网卡主要分为静态网卡配置和动态网卡配置,静态网卡配置就是通过配置文件将IP地址等设置为一个固定的值。但是动态是每次开始时候动态分配的一个地址。2、网卡的静态配置路径为centos基本都是/etc/sysconfig/network-scripts通过ip-a查看本机的网卡配置文件是......