Linux学习笔记07---Vim文本编辑器

1.Vim概述

Linux 系统中“一切皆文件”,因此当我们在命令行下更改文件内容时,不可避免地要用到文本编辑器。

Vim文本编辑器,是由 vi 发展演变过来的文本编辑器,因其具有使用简单、功能强大、是 Linux 众多发行版的默认文本编辑器等特点。

2.Vim基本操作

2.1 打开文件

使用 Vim 打开文件很简单,例如在命令行模式下打开一个自己编写的文件 lucky95/helloworld,打开方法如下:

[lucky@localhost ~]$ vim lucky95/helloworld
[lucky@localhost ~]$ 

 除此之外,我们还可以利用下表中打开文件的命令格式,针对特定情形使用适当的打开方式,可以大大提高我们的效率。

表 2 Vim 打开文件的快捷方法
Vi 使用的选项说 明
vim filename 打开或新建一个文件,并将光标置于第一行的首部
vim -r filename 恢复上次 vim 打开时崩溃的文件
vim -R filename 把指定的文件以只读方式放入 Vim 编辑器中
vim + filename 打开文件,并将光标置于最后一行的首部
vi +n filename 打开文件,并将光标置于第 n 行的首部
vi +/pattern filename 打幵文件,并将光标置于第一个与 pattern 匹配的位置
vi -c command filename 在对文件进行编辑前,先执行指定的命令

 案例1:

[lucky@localhost ~]$ ls
1202 Desktop Downloads lucky3344.tar movie Pictures Templates Videos
1202.tar.gz Documents lucky3344 lucky95 Music Public test1
[lucky@localhost ~]$ cd lucky95
[lucky@localhost lucky95]$ ls
helloQQ helloworld helloworld~ lucky3344 movie test01
[lucky@localhost lucky95]$ vim + helloworld

效果图:

 2.2 Vim 插入文本

从命令模式进入输入模式进行编辑,可以按下 I、i、O、o、A、a 等键来完成,使用不同的键,光标所处的位置不同,如表 3 所示。

表 3 插入文本
快捷键功能描述
i 在当前光标所在位置插入随后输入的文本,光标后的文本相应向右移动
I 在光标所在行的行首插入随后输入的文本,行首是该行的第一个非空白字符,相当于光标移动到行首执行 i 命令
o 在光标所在行的下面插入新的一行。光标停在空行首,等待输入文本
O(大写) 在光标所在行的上面插入新的一行。光标停在空行的行首,等待输入文本
a 在当前光标所在位置之后插入随后输入的文本
A 在光标所在行的行尾插入随后输入的文本,相当于光标移动到行尾再执行 a 命令

 案例1:按i进入编辑状态,退出编辑状态可按esc键

 2.3 Vim 查找文本

表 4 Vim 查找目标文本
快捷键功能描述
/abc 从光标所在位置向前查找字符串 abc
/^abc 查找以 abc 为行首的行
/abc$ 查找以 abc 为行尾的行
?abc 从光标所在为主向后查找字符串 abc
n 向同一方向重复上次的查找指令
N 向相反方向重复上次的查找指定

案例1:从光标所在位置向前查找字符串 

 案例2:

 2.4 Vim 替换文本

表 7 Vim替换文本
快捷键功能描述
r 替换光标所在位置的字符
R 从光标所在位置开始替换字符,其输入内容会覆盖掉后面等长的文本内容,按“Esc”可以结束
:s/a1/a2/g 将当前光标所在行中的所有 a1 用 a2 替换
:n1,n2s/a1/a2/g 将文件中 n1 到 n2 行中所有 a1 都用 a2 替换

例如,要将某文件中所有的 "lucky" 替换为 "pang",则有两种输入命令,分别为:

:%s/lucky/pang/g     

 如果刚才的命令变成 :10,20 s/lucky/pang/g,则只替换从第 10 行到第 20 行的 "lucky"。

2.5 Vim删除文本

表 8 Vim 删除文本快捷键
快捷键功能描述
x 删除光标所在位置的字符
dd 删除光标所在行
ndd 删除当前行(包括此行)后 n 行文本
dG 删除光标所在行一直到文件末尾的所有内容
D 删除光标位置到行尾的内容
:a1,a2d 函数从 a1 行到 a2 行的文本内容

 注意,被删除的内容并没有真正删除,都放在了剪贴板中。将光标移动到指定位置处,按下 "p" 键,就可以将刚才删除的内容又粘贴到此处。

2.6 Vim复制和粘贴文本

 

表 9 Vim 复制文本
快捷键功能描述
p 将剪贴板中的内容粘贴到光标后
P(大写) 将剪贴板中的内容粘贴到光标前
y 复制已选中的文本到剪贴板
yy 将光标所在行复制到剪贴板,此命令前可以加数字 n,可复制多行
yw 将光标位置的单词复制到剪贴板

2.7 Vim 保存退出文本

Vim 的保存和退出是在编辑模式中进行的,其常用命令如下表所示。

注意:vim 进入文件后,就进入编辑模式中。

表 11 Vim 常用保存退出命令
命令功能描述
:wq 保存并退出 Vim 编辑器
:wq! 保存并强制退出 Vim 编辑器
:q 不保存就退出 Vim 编辑器
:q! 不保存,且强制退出 Vim 编辑器
:w 保存但是不退出 Vim 编辑器
:w! 强制保存文本
:w filename 另存到 filename 文件
x! 保存文本,并退出 Vim 编辑器,更通用的一个 vim 命令
ZZ 直接退出 Vim 编辑器

2.8 编辑报错解决

swap file "*.swp" already exists!

[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:

解决方案:按D进行删除,再重新保存。

2.9 Vim撤销和恢复撤销快捷键

 

表 1 Linux Vim 撤销和恢复撤销快捷键
快捷键功能
u(小写) undo 的第 1 个字母,功能是撤销最近一次对文本做的修改操作。
Ctrl+R Redo 的第 1 个字母,功能是恢复最近一次所做的撤销操作。
U(大写) 第一次会撤销对一行文本(光标所在行)做过的全部操作,第二次使用该命令会恢复对该行文本做过的所有操作。

案例:

下面通过一个例子来演示以上 3 个命令的具体用法。首先,我们新建一个 demo.txt 文件并打开,键入一行内容,例如:

http://c.biancheng.net

然后按“Esc”键,使 Vim 由输入模式转为命令模式,并使用 yy 命令将这一行文本复制到剪贴板中,如此我们就可以在文本任意位置通过键入 p(或大写的 P)命令将复制的内容粘贴到光标所在的位置。

假设我们将光标调整到第一行最后一个字符处,连续按两次 p 命令(粘贴 2 次),则此时文本中的内容变为:

http://c.biancheng.net
http://c.biancheng.net
http://c.biancheng.net

在此基础上,通过 u(小写)命令就可以使文本内容恢复到上一次做粘贴操作之前的样子,其中“上一次”的含义是,恢复操作是可以叠加的,即按一次就会在现有基础上做一次恢复操作。

比如,继续操作 demo.txt 文件,按一次 u,会发现其文本内容变为:

http://c.biancheng.net
http://c.biancheng.net

再按一次 u,文本内容继续恢复为:

http://c.biancheng.net

同样,恢复撤销的操作和撤销操作是相对应的,通过按 Ctrl+R 组合键,可以撤销之前所做的一次恢复操作。例如,继续操作 demo.txt 文件,按一次 Ctrl+R,会发现其文本内容恢复为:

http://c.biancheng.net
http://c.biancheng.net

再按一次 Ctrl+R,文本内容又恢复为:

http://c.biancheng.net
http://c.biancheng.net
http://c.biancheng.net

 

posted @ 2021-12-02 19:33  雨后观山色  阅读(93)  评论(0编辑  收藏  举报