【Linux 基础】vi 编辑器

编辑器

vi 是一个命令,也是一个命令行下的编辑器,它有如下功能:

  • 打开文件、新建文件、保存文件
  • 光标移动
  • 文本编辑
    -(多行间|多列间)复制、粘贴、删除
  • 查看和替换

1. 模式

vi 编辑器有三种模式,各个模式侧重点不一样:

a) 一般模式(光标移动、复制、粘贴、删除)
b) 编辑模式(编辑文本)
c) 命令行模式(查找和替换)

vi 编辑器的三种模式间切换如下图所示:
在这里插入图片描述
注意

  • 当不知道处于何种模式时,按 ESC 键返回到一般模式。
  • wq (write quit)
  • i (insert)

2. 文件的打开/新建/保存

打开文件、新建文件,命令如下(如果文件存在则打开文件,否则新建文件并打开):

$ vi 文件名

修改结束之后,输入“:” 进入命令行模式,再输入“wq”保存退出:

:wq --> 保存并退出文件

注意
在编辑完成时,返回一般模式,方法如下:

命令描述
x保存当前文档并且退出
q退出
w保存文档
wq保存退出
q!强制退出

vi编辑器的:x和:wq的区别

“:x"命令更注重于文件是否被修改的确认,而”:wq"命令则更注重于保存操作的强制进行。
如果你只想在有修改时才保存并退出,可以使用":x"命令;
如果你想无论是否有修改都进行保存并退出,可以使用":wq"命令。

3. 编辑文件

打开文件后,默认处于“一般模式”,这时可以输入以下字母:

命令描述
i在当前光标所在字符的前面,转为编辑模式
I在当前光标所在行的行首转换为编辑模式
a在当前光标所在字符的后面,转为编辑模式
A在光标所在行的行尾,转换为编辑模式
o在当前光标所在行的下方,新建一行,并转为编辑模式
O在当前光标所在行的上方,新建一行,并转为编辑模式

4. 快速移动光标

在一般模式下,可以使用下面快捷键移动光标:

命令描述
h (或左方向键)光标左移一个字符
l (或右方向键)光标右移一个字符
j (或下方向键)光标下移一行
k (或上方向键)光标上移一行
nG 或 ngg光标移动到第 n 行首
n+光标下移 n 行
n-光标上移 n 行

在一般模式下,可以使用下面快捷键翻页:

命令描述
Ctrl + f屏幕向下翻一页,相当于下一页
Ctrl + b屏幕向上翻一页,相当于上一页

详细介绍如下:
① 快速的定位到某一行:文件头、文件尾、指定某一行
⚫ gg:就跳到第一行的行首,就是文件头
⚫ 2gg:就跳到第二行的行首
⚫ G:转至文件结尾
② 在某一行如何快速定位到某一列:
⚫ 0:(数字零)光标移至当前行行首
⚫ $:光标移至当前行行末
⚫ fx:搜索当前行中下一个出现字母 x 的地方

5. 文本复制/粘贴/删除/撤销

在一般模式下,可以执行以下命令:

命令描述
cc删除整行,并且修改整行内容
dd删除该行,不提供修改功能
ndd删除当前行及其后的 n-1 行
dw删除光标所在的单词 del word
D删除光标之后的内容
x删除光标所在的字符
X删除光标前面的一个字符
yy复制当前行
nyy复制当前行及其下面 n-1 行
p粘贴最近复制的内容
s删除光标所在字符
r替换光标处字符
u撤销上一步操作

【注意】
(1) 在vi编辑器中,"cc"和"dd"都是用于编辑文本的命令,但它们之间有不同的功能和效果:

  1. "cc"命令:该命令用于删除当前行并进入插入模式,可以用于替换整行文本。当你在普通模式下输入"cc"命令后,当前行的内容将被删除,并进入插入模式,你可以输入新的文本来替换该行。
  2. "dd"命令:该命令用于删除当前行。当你在普通模式下输入"dd"命令后,当前行将被删除,并且被删除的文本将被保存在剪切板中,可以用于粘贴到其他位置 (相当于剪切 Ctrl + z)。

总结来说:"cc"用于替换整行文本,而"dd"用于删除整行文本。

(2) 在vi编辑器中,"x"和"s"是两个不同的命令,具有不同的功能和效果:

  1. "x"命令:该命令用于删除光标所在位置的字符。当你在普通模式下按下"x"键时,光标所在位置的字符将被删除。
  2. "s"命令:该命令用于替换光标所在位置的字符。当你在普通模式下按下"s"键时,光标所在位置的字符将被删除,并进入插入模式,你可以输入新的字符来替换被删除的字符。

总结来说:"x"命令用于删除字符,而"s"命令用于替换字符。

6. 文本查找和替换

在一般模式下,可以执行以下命令:
a) 查找
/pattern //从光标开始处向文件尾搜索 pattern,后按下 n 或 N
注意

n:在同一个方向重复上一次搜索命令
N:在反方向重复上一次搜索命令
在/pattern 之前先跳到第一行则进行全文件搜索。

b) 替换

:%s/p1/p2/g //将文件中所有的 p1 均用 p2 替换
:%s/p1/p2/gc //替换时需要确认
“s“ 全称:substitute 替换;
“g“ 全称:global 全局;
“c“ 全称:confirm,确认

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值