使用 Vim 和 Nano 在 Linux 中编辑文本文件

CompTIACompTIABeginner
立即练习

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

引言

在本实验中,你将学习使用 Linux 中两个重要的文本编辑器:vi/vimnano 所需的基础技能。它们是 Linux 环境中最常用的文本编辑器,各有其优势和适用场景。

你将从 vi 文本编辑器开始,这是一个在类 Unix 系统中强大且无处不在的工具。你将学习创建文件,使用插入模式(Insert Mode)输入文本,使用 :w:wq 等命令保存工作,使用移动键进行导航,搜索文本,以及执行删除单词等基本编辑操作。

在实验的第二部分,你将探索 nano,这是一个对初学者更友好的编辑器。你将了解其直观的界面,学习基本编辑操作,并理解在不同任务中何时选择 nano 而非 vim。

通过本实验的学习,你将能够熟练使用这两个编辑器,并了解在你的 Linux 工作流程中,哪种工具最适合不同的场景。

这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 高级 级别的实验,完成率为 42%。获得了学习者 100% 的好评率。

创建文件并进入插入模式输入文本

在本步骤中,你将学习如何使用 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 编辑器创建、编辑、保存和导航文件的基本技能。

nano 编辑器简介

在本步骤中,你将学习如何使用 nano,一个用户友好的文本编辑器,非常适合初学者和快速编辑。与 vi 不同,nano 会在屏幕底部显示有用的快捷方式,并且没有不同的模式,这使得它对新用户来说更直观。

  1. 首先,让我们使用 nano 创建一个新文件。在 ~/project 目录的 shell 提示符下,输入以下命令:

    nano welcome.txt

    nano 编辑器将以一个空文件打开。注意底部显示的键盘快捷方式的有用菜单。^ 符号代表 Ctrl 键。

  2. vi 不同,你可以在 nano 中直接开始输入,而无需切换模式。复制并粘贴以下文本:

    nano 编辑器界面在底部显示快捷方式
    Welcome to Linux Text Editing!
    
    This file was created using the nano editor.
    Nano is beginner-friendly and intuitive.
    
    Key advantages of nano:
    - No modes to switch between
    - Shortcuts displayed at bottom
    - Easy to learn and use
    - Perfect for quick edits
  3. 现在让我们练习一些基本的 nano 操作:

    a. 移动光标:使用箭头键在文本中移动。你也可以使用 Ctrl+A 跳到行首,使用 Ctrl+E 跳到行尾。

    b. 搜索文本:按 Ctrl+W(Where is)进行搜索。键入 nano 并按 Enter。光标将跳转到“nano”的第一个出现处。再次按 Ctrl+W 然后按 Enter 查找下一个出现处。

    c. 跳转到特定行:按 Ctrl+_(下划线)跳转到特定行号。尝试键入 3 并按 Enter 跳转到第 3 行。

  4. 让我们保存文件。按 Ctrl+O(WriteOut)。你会看到一个提示要求输入文件名。当前文件名 welcome.txt 已显示。按 Enter 确认并保存文件。

    你会在底部看到一条消息,表明文件已成功写入,并显示了写入的行数。

  5. 要退出 nano,请按 Ctrl+X。由于你已保存文件,nano 将立即退出并返回到 shell 提示符。

比较 nano 和 vi/vim:何时使用哪个编辑器

在本最后一步,你将了解 nanovi/vim 之间的主要区别,并理解何时使用每个编辑器。让我们使用这两个编辑器创建一个比较文件来演示它们的区别。

  1. 首先,让我们使用 nano 创建一个比较文件:

    nano editor_comparison.txt
  2. 在 nano 中输入以下内容:

    TEXT EDITOR COMPARISON: nano vs vi/vim
    
    NANO EDITOR:
    Pros:
    - Beginner-friendly interface
    - No modes to learn
    - Shortcuts displayed on screen
    - Immediate text input
    - Good for quick edits and simple tasks
    
    Cons:
    - Limited advanced features
    - Less efficient for complex editing
    - Not available on all systems
  3. 使用 Ctrl+O 保存文件并按 Enter,然后使用 Ctrl+X 退出。

  4. 现在,让我们用 vi 打开同一个文件以添加更多内容:

    vi editor_comparison.txt
  5. 使用 G(大写 G)导航到文件末尾,然后按 o 打开新行并进入插入模式。添加以下内容:

    VI/VIM EDITOR:
    Pros:
    - Extremely powerful and feature-rich
    - Available on virtually all Unix/Linux systems
    - Highly efficient once mastered
    - Excellent for programming and complex editing
    - Extensive customization options
    
    Cons:
    - Steep learning curve
    - Modal interface can be confusing for beginners
    - Requires memorizing many commands
  6. Esc 返回普通模式,然后使用 :wq 保存并退出。

  7. 让我们查看完成的比较文件:

    cat editor_comparison.txt

    这将显示完整的比较内容,展示了两个编辑器添加的内容。

何时使用哪个编辑器:

  • 使用 nano 时:

    • 你是 Linux 文本编辑的新手
    • 进行快速、简单的编辑
    • 偶尔处理配置文件
    • 你偏好直接、直观的界面
  • 使用 vi/vim 时:

    • 你正在进行大量的编程或文本处理
    • 在远程服务器上工作(vi 始终可用)
    • 你需要高级功能,如宏、插件或复杂的搜索/替换
    • 一旦掌握了命令,效率和速度很重要

这两个编辑器都是 Linux 用户工具箱中有价值的工具,了解两者都能让你在不同情况下更加灵活。

总结

在本实验中,你学习了如何在 Linux 中使用两个重要的文本编辑器:vi/vimnano

使用 vi/vim,你掌握了模式编辑的基本概念,学会了在普通模式(Normal Mode)和插入模式(Insert Mode)之间切换。你练习了创建文件、输入文本、使用 :w:wq 保存、使用移动键(h, j, k, l)导航、使用 / 进行搜索、使用 dw 等命令进行编辑,以及使用 :q! 退出而不保存。你还发现了交互式的 vimtutor 以供继续学习。

使用 nano,你体验了一种更适合初学者的文本编辑方法。你学会了在不担心模式的情况下创建和编辑文件,使用了屏幕底部显示的直观键盘快捷方式,并练习了搜索(Ctrl+W)、保存(Ctrl+O)和跳转到特定行(Ctrl+_)等基本操作。

关键收获:

  • nano 以其直观的界面和可见的快捷方式,非常适合初学者和快速编辑
  • vi/vim 对于复杂的编辑任务更强大、更高效,但需要更多的学习投入
  • 两个编辑器都是有价值的工具——nano 侧重简洁,vim 侧重强大和可用性
  • 了解何时使用每个编辑器将使你在不同的 Linux 场景中更有效率

你现在已经具备了根据特定需求选择合适文本编辑器的基础,并且可以继续用这两个工具来提升你的技能。