在 Linux 中使用 vi 编辑器编辑文本文件

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

引言

在本实验中,你将学习使用 vi 文本编辑器所需的基本技能。vi 是任何 Linux 环境中强大且必不可少的工具。你将从创建一个新文件并使用插入模式(Insert Mode)输入文本开始。然后,你将练习保存工作和退出编辑器的基本命令,例如 :w:wq

在掌握这些基础知识后,你将学习如何使用移动键在文件中导航以及搜索特定文本。你还将学习如何执行编辑操作,例如使用 dw 删除一个单词,以及如何使用 :q! 在不保存更改的情况下退出。最后,你将了解如何启动交互式 vimtutor 以进行进一步练习并持续提升你的熟练度。

创建文件并在插入模式下输入文本

在本步骤中,你将学习如何使用 vi 编辑器创建新文本文件并输入文本。vi(及其现代版本 vim)是类 Unix 操作系统中强大且普遍的文本编辑器。它有不同的模式,其中最基本的两种是普通模式(Normal Mode,用于命令)和插入模式(Insert Mode,用于输入文本)。

首先,让我们确保你处于正确的当前工作目录。本实验的所有工作都将在 ~/project 目录下进行。

  1. 打开一个终端。提示符应该显示你正处于 project 目录。你可以使用 pwd(print working directory)命令来验证完整路径。

    pwd

    你应该看到以下输出,确认你的位置:

    /home/labex/project
    Terminal showing current directory
  2. 现在,启动 vi 编辑器并创建一个名为 test.txt 的新文件。当你运行此命令时,vi 将启动并接管你的终端窗口。

    vi test.txt

    你的终端将清空,你将看到一个屏幕,左侧显示波浪线 (~)。这些表示空行。屏幕底部将显示文件名 "test.txt" [New File]。你当前处于普通模式(Normal Mode)。

  3. 要开始输入文本,你需要切换到插入模式(Insert Mode)。按下键盘上的 i 键。

    i

    注意屏幕底部出现了 -- INSERT --。这确认你已进入插入模式,现在可以直接在文件中键入文本。

  4. 输入以下句子:

    Now is the time for all good men to come to the aid of their country.

    vi editor showing inserted text in insert mode

    此时,你键入的文本存在于编辑器的内存缓冲区中,但尚未保存到磁盘。在下一步中,你将学习如何保存工作并退出编辑器。

使用 :w 和 :wq 保存并退出文件

在本步骤中,你将学习如何保存更改并退出 vi 编辑器。这些操作是在普通模式(Normal Mode)下使用命令执行的。由于你当前处于上一步骤的插入模式(Insert Mode),你需要先返回普通模式。

  1. 要从插入模式切换回普通模式,请按下 Esc 键。

    Esc

    你会注意到屏幕底部的 -- INSERT -- 指示符消失了。这意味着你现在处于普通模式,在此模式下,按键被解释为命令而不是文本输入。

  2. 现在,让我们保存文件。在普通模式下,以冒号 (:) 开头的命令会显示在屏幕底部的命令栏中。要写入(保存)文件,请使用 :w 命令。

    键入以下序列并按 Enter

    :w

    在你按下 Enter 后,vi 会将缓冲区的内容写入 test.txt 文件。你会在底部看到一条确认消息,类似如下:

    "test.txt" [New] 1L, 79C written

    此消息确认文件 test.txt 已保存,包含 1 行和 79 个字符。

  3. 最后,要退出 vi,你可以使用 :q 命令表示“退出”(quit)。一个更常用的命令是 :wq,它将写入文件和退出这两个操作合并为一个。由于你已处于普通模式,键入以下内容并按 Enter

    :wq

    此命令会保存任何最终更改,然后关闭 vi 编辑器,将你带回到终端的 shell 提示符。你的终端现在应该显示熟悉的命令提示符,并且 test.txt 文件已保存在你的 ~/project 目录中。

使用 gg, h, j, k, l 和 / 导航和搜索文本

在本步骤中,你将练习 vi 的一些强大导航和搜索命令。这些命令允许你在不使用鼠标的情况下高效地移动光标和查找文本。所有这些操作都在普通模式(Normal Mode)下执行。

  1. 首先,你需要再次打开 test.txt 文件。在 ~/project 目录的 shell 提示符下,输入以下命令:

    vi test.txt

    编辑器将打开并显示文件的内容。光标很可能位于第一行的开头。

  2. 为了确保光标位于文件的最开头,你可以使用 gg 命令。在普通模式下(如果不确定,请按 Esc),键入 gg

    gg

    光标将立即跳转到文件第一行的第一个字符,在我们的文件中是 'N'。

  3. vi 中移动光标的主要方式是使用 hjkl 键。这是任何 vi 用户的一项核心技能。

    • h 将光标向左移动一个字符。
    • l 将光标向右移动一个字符。
    • j 将光标向下移动一行。
    • k 将光标向上移动一行。

    尝试按下这些键来移动光标,在句子中进行导航。这种导航方式在任何终端环境中都有效。

  4. 现在,让我们搜索文本。/ 命令用于在文件中向前搜索。要搜索字母 'a' 的所有出现,请执行以下步骤:
    a. 确保你处于普通模式(按 Esc)。
    b. 输入 /,然后输入你要搜索的字符,这里是 a。然后按 Enter

    /a

    光标将跳转到你当前光标位置之后找到的第一个 'a'。

    c. 要查找相同搜索词的下一个实例,只需按下 n 键(表示“next”)。

    n

    连续按几次 n 来遍历文件中的所有 'a'。

你现在已经练习了基本的导航和搜索。在下一步中,你将学习如何删除文本。

使用 dw 删除单词并使用 :q! 退出而不保存

在本步骤中,你将学习如何删除文本以及如何退出 vi 而不保存更改。当你犯错并想恢复到文件的上一个保存版本时,这是一项关键技能。你应该仍然打开着 vi,并且文件是上一步骤中的 test.txt

  1. 首先,让我们将光标移动到我们要删除的单词上。确保你处于普通模式(Normal Mode)(如果不确定,请按 Esc)。使用 hl 键移动光标,直到它位于单词 time 的第一个字母上。

  2. 将光标放在 timet 上,键入 dw 命令。此命令代表“delete word”(删除单词)。

    dw

    你会看到单词 time 及其后面的空格从屏幕上消失了。句子现在看起来不正确了,这正是我们下一步操作的完美场景。

  3. 你现在已经修改了编辑器缓冲区中的文件。让我们假设这次删除是一个错误。与其保存这个不正确的版本,不如退出并放弃更改。执行此操作的命令是 :q!q 代表“quit”(退出),而 ! 强制执行该操作,忽略任何未保存的更改。

    a. 确保你处于普通模式(按 Esc)。
    b. 键入以下命令并按 Enter

    :q!

    此命令将立即退出 vi 编辑器,并将你带回到 shell 提示符。因为你使用了 :q!,所以删除单词 time 的操作保存到 test.txt 文件中。如果你再次打开文件,单词 time 仍然会存在。

启动交互式 vimtutor 以进行进一步练习

在本步骤中,你将发现 vimtutor,这是一个交互式教程,旨在以实践方式教授你 vi/vim 技能。本实验已涵盖最基础的知识,但 vimtutor 提供了一个全面的、自定进度的课程,强烈推荐给所有新用户。

  1. 你应该处于 ~/project 目录的 shell 提示符下。要开始教程,只需键入 vimtutor 命令并按 Enter

    vimtutor
  2. 此命令将使用一个特殊的教程文件打开 vi。文件本身包含了所有说明。你将阅读文本,然后在教程文件中直接练习所描述的命令。这是一种安全有效 Thus learning method,因为你是在文件的临时副本上进行练习。

    该教程分为几个课时,预计完成时间约为 25-30 分钟。你可以按照自己的节奏进行学习。

  3. 当你完成教程(或想随时退出)时,你可以像退出任何 vi 会话一样退出。由于你不需要保存教程文件的任何更改,因此退出的最佳方式是使用 :q! 命令。

    a. 按 Esc 键以确保你处于普通模式。
    b. 键入 :q! 并按 Enter

    :q!

至此,本实验的实践部分结束。通过完成这些步骤,你已经掌握了使用 vi 编辑器创建、编辑、保存和导航文件的基本技能。

总结

在本实验中,你学习了 Linux 中 vi 文本编辑器的基本操作。你从创建一个新文件开始,理解了 vi 不同模式的核心概念。你练习了使用 i 键从默认的普通模式(Normal Mode)切换到插入模式(Insert Mode)来输入文本。输入完成后,你学习了如何返回普通模式,使用 :w 命令保存文件,以及使用 :wq 命令保存并退出编辑器。

你还练习了普通模式下基本的导航和编辑命令。这包括使用 hjkl 键移动光标,使用 gg 跳转到文件顶部,以及使用 / 命令搜索特定文本。此外,你还学会了如何通过 dw 删除单词来执行基本编辑,以及如何使用 :q! 退出编辑器而不保存任何更改。本实验最后为你指出了交互式 vimtutor,以便进行进一步的实践练习。