LFCS #2:如何在 Linux 中安装和使用 Vi/Vim
几个月前,Linux 基金会推出了 LFCS(Linux 基金会认证系统管理员)认证,以帮助来自世界各地的个人验证他们是否有能力在 Linux 系统上执行基本到中级的系统管理任务。
Linux 管理任务包括第一手的故障排除和维护,以及了解何时需要向上级支持团队提出问题的智能决策。
该系列的标题为 LFCS(Linux 基金会认证系统管理员)的准备第 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 就是这样。因此,在本教程中,我们将交替使用 vi 和 vim。
如果您的发行版没有安装 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 个充分的理由。
- vi 始终可用(无论您使用什么发行版),因为 POSIX 需要它。
- 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:在此模式以及该模式的所有后续实例中执行替换。
- q 或 Esc:退出替换。
- l(小写 L):执行此替换并退出(最后一次)。
- Ctrl-e、Ctrl-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 的缓冲区中。我们可以继续编辑文件 - 我们不需要立即插入复制的行。
当我们到达复制行的位置时,在 p 或 P 命令之前使用“a”将复制的行插入名为 < b>a:
- 键入“ap”将复制到缓冲区中的行插入到光标所在的当前行之后。
- 键入“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] |
最后但并非最不重要的一点是,请考虑使用以下链接购买考试券,以便为我们赚取小额佣金,这将有助于我们不断更新本书。