网站搜索

LFCS #2:如何在 Linux 中安装和使用 Vi/Vim


几个月前,Linux 基金会推出了 LFCS(Linux 基金会认证系统管理员)认证,以帮助来自世界各地的个人验证他们是否有能力在 Linux 系统上执行基本到中级的系统管理任务。

Linux 管理任务包括第一手的故障排除和维护,以及了解何时需要向上级支持团队提出问题的智能决策。

该系列的标题为 LFCSLinux 基金会认证系统管理员)的准备第 1 至 33 部分,涵盖以下主题:

Part 1

如何在 Linux 中使用“Sed”命令操作文件

Part 2

如何在 Linux 中安装和使用 Vi/Vim

Part 3

如何在 Linux 中压缩文件和目录以及查找文件

Part 4

对存储设备进行分区、格式化文件系统和配置交换分区

Part 5

在 Linux 中挂载/卸载本地和网络(Samba 和 NFS)文件系统

Part 6

将分区组装为 RAID 设备 – 创建和管理系统备份

Part 7

管理系统启动进程和服务(SysVinit、Systemd 和 Upstart)

Part 8

如何管理用户和组、文件权限和 Sudo 访问

Part 9

使用 Yum、RPM、Apt、Dpkg、Aptitude 和 Zypper 进行 Linux 包管理

Part 10

学习基本的 Shell 脚本和文件系统故障排除

Part 11

如何使用 vgcreate、lvcreate 和 lvextend 命令管理和创建 LVM

Part 12

如何使用已安装的帮助文档和工具探索 Linux

Part 13

如何配置 Grand Unified Bootloader (GRUB) 并对其进行故障排除

Part 14

监控 Linux 进程资源使用情况并按用户设置进程限制

Part 15

如何在 Linux 系统中设置或修改内核运行时参数

Part 16

在 Linux 中使用 SELinux 或 AppArmor 实施强制访问控制

Part 17

如何为用户和组设置访问控制列表 (ACL) 和磁盘配额

Part 18

安装网络服务并配置开机自动启动

Part 19

设置 FTP 服务器以允许匿名登录的终极指南

Part 20

设置基本递归缓存 DNS 服务器并为域配置区域

Part 21

如何安装、保护 MariaDB 数据库服务器并对其进行性能调优

Part 22

如何安装和配置 NFS 服务器以进行文件系统共享

Part 23

如何使用 SSL 证书通过基于名称的虚拟主机设置 Apache

Part 24

如何设置 Iptables 防火墙以启用对 Linux 中服务的远程访问

Part 25

如何将 Linux 变成路由器来静态和动态处理流量

Part 26

如何使用 Cryptsetup 工具设置加密文件系统和交换

Part 27

如何监控系统使用情况、中断以及对 Linux 服务器进行故障排除

Part 28

如何设置网络存储库来安装或更新软件包

Part 29

如何审核网络性能、安全性和故障排除

Part 30

如何安装和管理虚拟机和容器

Part 31

学习 Git 基础知识以高效管理项目

Part 32

在 Linux 中配置 IPv4 和 IPv6 地址的初学者指南

Part 33

在 Ubuntu 中创建网络绑定和桥接的初学者指南

这篇文章是 33 个教程系列的第 2 部分,在这一部分中,我们将介绍 LFCS 认证考试所需的 Vi/Vim 编辑器中的基本文件编辑操作和理解模式。

在 Vi 编辑器中执行基本文件编辑操作

Vi 是第一个为 Unix 编写的全屏文本编辑器。尽管它的目的是小而简单,但对于专门使用 GUI 文本编辑器(例如 NotePad++gedit 等)的人来说可能有点困难例子。

要使用Vi,我们必须首先了解这个功能强大的程序运行的3模式,以便稍后开始学习其强大的文本编辑程序。

请注意,大多数现代 Linux 发行版都附带了 vi 的变体,称为 vim(“Vi 改进版”),它支持的功能比原来的 vi 就是这样。因此,在本教程中,我们将交替使用 vivim

如果您的发行版没有安装 Vim,您可以按如下方式安装。

sudo apt install vim         [On Debian, Ubuntu and Mint]
sudo yum install vim         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/vim  [On Gentoo Linux]
sudo apk add vim             [On Alpine Linux]
sudo pacman -S vim           [On Arch Linux]
sudo zypper install vim      [On OpenSUSE]    

我为什么要学习 Vi?

学习 vi 编辑器至少有 2 个充分的理由。

  1. vi 始终可用(无论您使用什么发行版),因为 POSIX 需要它。
  2. vi 不会消耗大量的系统资源,并且允许我们执行任何可以想象的任务,而无需将手指从键盘上移开。

此外,vi有非常丰富的内置手册,可以在程序启动后立即使用:help命令启动。这个内置手册包含比 vi/m 的手册页更多的信息。

启动 Vi 编辑器

要启动 vi,请在命令提示符中键入 vi

vi

然后按i进入插入模式,就可以开始打字了。

另一种启动 vi/m 的方法是。

vi filename

这将打开一个名为 filename 的新缓冲区(稍后将详细介绍缓冲区),您可以稍后将其保存到磁盘。

了解 Vi 模式

Vi 编辑器具有多种模式,每种模式都有不同的用途并允许用户执行特定的操作。

以下是您应该注意的主要模式:

Vi 命令行模式

命令模式中,vi允许用户在文件中导航并输入vi命令,这些命令是一个或多个简短且区分大小写的组合。更多字母。几乎所有命令都可以以数字为前缀来重复该命令的次数。

例如,yy(或Y)复制整个当前行,而3yy(或3Y)复制整个当前行以及接下来的两行(总共 3 行)。

我们始终可以通过按 Esc 键进入命令模式(无论我们正在使用哪种模式)。事实上,在命令模式下,键盘按键被解释为命令而不是文本,这一事实往往会让初学者感到困惑。

Vi 防爆模式

ex模式下,我们可以操作文件(包括保存当前文件和运行外部程序)。要进入此模式,我们必须在命令模式下键入冒号 (:),后面紧跟需要使用的前模式命令的名称。之后,vi 自动返回到命令模式。

Vi 插入模式

插入模式下(字母i通常用于进入此模式),我们只需输入文本即可。大多数击键都会导致文本出现在屏幕上(一个重要的例外是 Esc 键,它退出插入模式并返回到命令模式)。

Vi 命令用法

下表显示了常用的 vi 命令列表。文件编辑命令可以通过在命令后附加感叹号来强制执行(例如,:q! 强制退出而不保存)。

 Key Command

描述

 h or left arrow

向左移动一个字符

 j or down arrow

往下走一行

 k or up arrow

上升一行

 l (lowercase L) or right arrow

向右移动一个字符

 H

转到屏幕顶部

 L

转到屏幕底部

 G

转到文件末尾

 w

向右移动一个字

 b

向左移动一个单词

 0 (zero)

转到当前行的开头

 ^

转到当前行的第一个非空白字符

 $

转到当前行的末尾

 Ctrl-B

返回一屏

 Ctrl-F

前进一屏

 i

在当前光标位置插入

 I (uppercase i)

插入到当前行的行首

 J (uppercase j)

将当前行与下一行连接(移动下一个队列)

 a

追加到当前光标位置之后

 o (lowercase O)

在当前行之后创建一个空行

 O (uppercase o)

在当前行之前创建一个空行

 r

替换当前光标位置的字符

 R

在当前光标位置覆盖

 x

删除当前光标位置的字符

 X

删除当前光标位置之前(左侧)的字符

 dd

剪切(以便稍后粘贴)整个当前行

 D

从当前光标位置剪切到行尾(该命令相当于d$)

 yX

发出移动命令 X,从当前光标位置复制(复制)适当数量的字符、单词或行

 yy or Y

复制(复制)整个当前行

 p

粘贴到当前光标位置之后(下一行)

 P

粘贴到当前光标位置之前(上一行)

 . (period)

重复上一个命令

 u

撤消最后一个命令

 U

撤消最后一行中的最后一个命令。只要光标仍在线上,此操作就会起作用。

 n

查找搜索中的下一个匹配项

 N

查找搜索中的上一个匹配项

 :n

下一个文件;当指定多个文件进行编辑时,该命令加载下一个文件。

 :e file

加载该文件来代替当前文件。

 :r file

将文件内容插入到当前光标位置之后(下一行)

 :q

退出而不保存更改。

 :w file

将当前缓冲区写入文件。要附加到现有文件,请使用 :w >> file。

 :wq

写入当前文件的内容并退出。相当于x!和ZZ

 :r! command

执行命令并将输出插入到当前光标位置之后(下一行)。

六选项

以下选项在运行 vim 时会派上用场(我们需要将它们添加到 ~/.vimrc 文件中)。

echo set number >> ~/.vimrc
echo syntax on >> ~/.vimrc
echo set tabstop=4 >> ~/.vimrc
echo set autoindent >> ~/.vimrc

  • set number 显示 vi 打开现有文件或新文件时的行号。
  • syntax on 打开语法突出显示(针对多个文件扩展名),以使代码和配置文件更具可读性。
  • set tabstop=4 将制表符大小设置为 4 个空格(默认值为 8)。
  • set autoindent 将先前的缩进延续到下一行。

在 Vi 中搜索和替换文本

vi 能够根据搜索将光标移动到特定位置(在单行或整个文件上)。它还可以在有或没有用户确认的情况下执行文本替换。

在一行中搜索

f 命令搜索一行并将光标移动到当前行中下一个出现的指定字符。

例如,命令 fh 会将光标移动到当前行中字母 h 的下一个实例。请注意,字母 f 和您要搜索的字符都不会出现在屏幕上的任何位置,但在您按 Enter 后,该字符将突出显示。

例如,这是我在命令模式下按 f4 后得到的结果。

搜索整个文件

使用 / 命令,后跟要搜索的单词或短语。可以使用 n 命令使用前一个搜索字符串或下一个搜索字符串(使用 N 命令)重复搜索。这是在命令模式下输入 /Jane 的结果。

搜索和替换文本

Vi 使用命令(类似于 sed 的命令)对一系列行或整个文件执行替换操作。

要将整个文件的单词“old”更改为“young”,我们必须输入以下命令。

 :%s/old/young/g 

注意:命令开头的冒号。

冒号 (:) 启动 ex 命令,在本例中为 s(用于替换),% 是快捷方式,意思是从第一行到最后一行(范围也可以指定为n,m,表示“从第n行到第m行 ” ”),old 是搜索模式,而 young 是替换文本,g 表示应在每次出现时执行替换文件中的搜索字符串。

或者,可以将 c 添加到命令末尾,以在执行任何替换之前要求确认。

:%s/old/young/gc

在用新文本替换原始文本之前,vi/m 会向我们显示以下消息。

  • y:执行替换(是)
  • n:跳过本次出现并转到下一个(否)
  • a:在此模式以及该模式的所有后续实例中执行替换。
  • qEsc:退出替换。
  • l小写 L):执行此替换并退出(最后一次)。
  • Ctrl-eCtrl-y:分别向下和向上滚动以查看建议替换的上下文。

在 Vi 中编辑多个文件

让我们在命令提示符中输入 vim file1 file2 file3

vim file1 file2 file3

首先,vim 将打开 file1。要切换到下一个文件(file2),我们需要使用:n命令。当我们想要返回到前一个文件时,:N 就会完成这项工作。

为了从file1切换到file3

a). :buffers 命令将显示当前正在编辑的文件的列表。

:buffers

b). 命令:buffer 3(末尾不带s)将打开file3进行编辑。

在上图中,井号 (#) 表示文件当前已打开但在后台,而 %a 则标记当前正在编辑的文件。

另一方面,文件编号后面的空格(上例中为 3)表示该文件尚未打开。

临时 Vi 缓冲区

将几行连续的行(例如 4)复制到名为 a(不与文件关联)的临时缓冲区中,并将这些行稍后在当前 vi 中放置在文件的另一部分中部分,我们需要...

  • ESC 键以确保我们处于 vi 命令模式。
  • 将光标放在我们要复制的文本的第一行上。
  • 输入“a4yy”将当前行以及后续 3 行复制到名为 a 的缓冲区中。我们可以继续编辑文件 - 我们不需要立即插入复制的行。
  • 当我们到达复制行的位置时,在 pP 命令之前使用“a”将复制的行插入名为 < b>a:

    1. 键入“ap”将复制到缓冲区中的行插入到光标所在的当前行之后。
    2. 键入“aP”将复制到缓冲区 a 中的行插入到当前行之前。

如果我们愿意,我们可以重复上述步骤,将缓冲区的内容插入到文件中的多个位置。当当前窗口关闭时,临时缓冲区(例如本节中的缓冲区)将被释放。

概括

正如我们所见,vi/m 是一个强大且多功能的 CLI 文本编辑器。欢迎在下面分享您自己的技巧和评论。

更新:如果您想扩展您的VI编辑器技能,那么我建议您阅读以下两个指南,它们将指导您了解一些有用的 VI 编辑器技巧和技巧。

LFCS 电子书现已可供购买。立即订购您的副本,开始您成为认证 Linux 系统管理员的旅程!

Product Name Price Buy
The Linux Foundation’s LFCS Certification Preparation Guide $19.99 [Buy Now]

最后但并非最不重要的一点是,请考虑使用以下链接购买考试券,以便为我们赚取小额佣金,这将有助于我们不断更新本书。