Vim 入门:基础知识

学习使用 Vim,足以应对工作或新项目。
205 位读者喜欢这篇文章。
Person standing in front of a giant computer screen with numbers, data

Opensource.com

我记得第一次接触 Vim 的时候。我当时是一名大学生,计算机科学系实验室的计算机上安装了 Ubuntu Linux。 虽然在大学之前我就接触过不同的 Linux 版本(例如 RHEL)(Red Hat 在 Best Buy 出售其 CD!),但这是我第一次需要定期使用 Linux 操作系统,因为我的课程要求我这样做。 一旦我开始使用 Linux,就像之前和之后的许多人一样,我开始感觉自己像一个“真正的程序员”。

Real Programmers comic

真正的程序员,作者:xkcd

学生可以使用图形文本编辑器,例如 Kate,该编辑器默认安装在实验室计算机上。 对于可以使用 shell 但不习惯基于控制台的编辑器的学生来说,流行的选择是 Nano,它提供了良好的交互式菜单和类似于 Windows 图形文本编辑器的体验。

我有时会使用 Nano,但我听说了关于 Vi/VimEmacs 的很棒的事情,并且真的想尝试一下(主要是因为它们看起来很酷,而且我也很好奇它们有什么了不起的)。 第一次使用 Vim 让我感到害怕——我不想把任何东西弄坏! 但一旦我掌握了它,事情就变得容易得多,我也可以欣赏编辑器强大的功能。 至于 Emacs,好吧,我有点放弃了,但我很高兴我坚持使用了 Vim。

在本文中,我将(根据我个人的经验)介绍 Vim,足以让您可以在 Linux 系统上将其用作编辑器。 这既不会让您成为专家,也不会触及 Vim 许多强大功能的皮毛。 但起点始终很重要,我想让开始体验尽可能简单,您可以自己探索其余部分。

步骤 0:打开控制台窗口

在开始使用 Vim 之前,您需要做一些准备工作。 从您的 Linux 操作系统打开一个控制台终端。 (由于 Vim 也可在 MacOS 上使用,因此 Mac 用户也可以使用这些说明。)

打开终端窗口后,键入 ls 命令以列出当前目录。 然后,键入 mkdir Tutorial 创建一个名为 Tutorial 的新目录。 通过键入 cd Tutorial 进入目录。

Create a folder

准备工作就完成了。 现在是时候进入有趣的部分了——开始使用 Vim。

步骤 1:创建并关闭 Vim 文件而不保存

还记得我说过我一开始害怕使用 Vim 吗? 好吧,可怕的部分是想,“如果我更改现有文件并弄乱了怎么办?” 毕竟,几个计算机科学作业要求我通过修改现有文件来完成。 我想知道:如何在不保存更改的情况下打开和关闭文件?

好消息是您可以使用相同的命令在 Vim 中创建或打开文件:vim <FILE_NAME>,其中 <FILE_NAME> 表示您要创建或修改的目标文件名。 让我们通过键入 vim HelloWorld.java 创建一个名为 HelloWorld.java 的文件。

你好,Vim! 现在,这是 Vim 中一个非常重要的概念,可能是最需要记住的:Vim 有多种模式。 这是您需要知道的三个来完成 Vim 基础知识

模式 描述
普通 (Normal) 默认; 用于导航和简单编辑
插入 (Insert) 用于显式插入和修改文本
命令行 (Command Line) 用于保存、退出等操作

Vim 还有其他模式,例如 Visual、Select 和 Ex-Mode,但 Normal、Insert 和 Command Line 模式对我们来说已经足够了。

您现在处于普通模式。 如果您有文本,您可以使用箭头键或其他导航键(稍后您将看到)来移动。 为了确保您处于普通模式,只需点击 Esc(Escape)键。

提示: Esc 切换到普通模式。 即使您已经处于普通模式,也请按 Esc 只是为了练习。

现在,这将很有趣。 按 : (冒号键),然后按 q! (即 :q!)。 你的屏幕看起来像这样

Editing Vim

在普通模式下按冒号会将 Vim 切换到命令行模式,并且 :q! 命令退出 Vim 编辑器而不保存。 换句话说,您正在放弃所有更改。 您也可以使用 ZQ; 选择更方便的选项。

点击 Enter 后,您不应再处于 Vim 中。 重复练习几次,只是为了掌握它。 完成后,继续下一节,了解如何更改此文件。

步骤 2:在 Vim 中进行并保存修改

通过键入 vim HelloWorld.java 并按 Enter 键重新打开文件。 插入模式是您可以更改文件的地方。 首先,点击 Esc 以确保您处于普通模式,然后按 i 进入插入模式。 (是的,那是字母 i。)

在左下角,您应该看到 -- INSERT --。 这意味着您处于插入模式。

Vim insert mode

键入一些 Java 代码。 您可以键入任何您想要的内容,但这是一个您可以遵循的示例。 你的屏幕看起来像这样

public class HelloWorld {
    public static void main(String[] args) {
    }
}

非常漂亮! 注意文本如何在 Java 语法高亮颜色中突出显示。 因为您在 Java 中启动了文件,所以 Vim 将检测语法颜色。

保存文件。 点击 Esc 离开插入模式并进入命令行模式。 键入 :,然后键入 x! (即,冒号后跟 x 和 !)。 点击 Enter 保存文件。 您也可以键入 wq 来执行相同的操作。

现在您知道如何使用插入模式输入文本以及如何使用 :x!:wq 保存文件。

步骤 3:Vim 中的基本导航

虽然您总是可以使用友好的向上、向下、向左和向右箭头按钮在文件中移动,但在几乎无数行的大型文件中,这将非常困难。 能够在线内跳转也很有帮助。 虽然 Vim 有大量很棒的导航功能,但我想向您展示的第一个是如何转到特定行。

Esc 键以确保您处于普通模式,然后键入 :set number 并点击 Enter

瞧! 您在每行左侧都看到行号。

Showing Line Numbers

好的,您可能会说,“这很酷,但我如何跳转到某一行?” 同样,请确保您处于普通模式,然后按 :<LINE_NUMBER>,其中 <LINE_NUMBER> 是您要转到的行的编号,然后按 Enter。 尝试移动到第 2 行。

:2

现在移动到第 3 行。

Jump to line 3

但是想象一下,您正在处理一个 1,000 行的文件,并且想要转到文件末尾的情况。 你怎么去那里? 确保您处于普通模式,然后键入 :$ 并按 Enter

您将在最后一行!

既然您知道如何在行之间跳转,那么作为奖励,让我们学习如何移动到行尾。 确保您在带有文本的行上,例如第 3 行,然后键入 $

Go to the&nbsp;last character

您现在位于行中的最后一个字符处。 在此示例中,突出显示左大括号以显示光标移动到的位置,并且突出显示右大括号是因为它是左大括号的匹配字符。

Vim 中的基本导航就到此为止。 等等,不要退出文件。 让我们进入 Vim 中的基本编辑。 不过,请随意喝杯咖啡或茶。

步骤 4:Vim 中的基本编辑

现在您知道如何通过跳到您想要的行来在文件中导航,您可以利用这项技能在 Vim 中进行一些基本编辑。 切换到插入模式。 (还记得怎么做吗,按 i 键?) 当然,您可以使用键盘删除或插入字符来进行编辑,但 Vim 提供了更快的文件编辑方式。

移动到第 3 行,其中显示 public static void main(String[] args) {。 快速连续按两次 d 键。 是的,那是 dd。 如果您成功了,您将看到一个像这样的屏幕,其中第 3 行已消失,并且后面的每一行都向上移动了一行(即第 4 行变为第 3 行)。

Deleting A Line

那是删除命令。 不要害怕! 点击 u,您将看到已删除的行已恢复。 唷。 这是撤消命令。

Undoing a change in Vim

下一课是学习如何复制和粘贴文本,但首先,您需要学习如何在 Vim 中突出显示文本。 按 v 并移动您的向左和向右箭头按钮来选择和取消选择文本。 当您向他人展示代码并想识别您希望他们看到的代码时,此功能也非常有用。

Highlighting text in Vim

移动到第 4 行,其中显示 System.out.println("Hello, Opensource");。 突出显示第 4 行的所有内容。 完成? 好的,虽然第 4 行仍处于突出显示状态,请按 y。 这称为 yank 模式,它会将文本复制到剪贴板。 接下来,通过输入 o 在下面创建一个新行。 请注意,这会将您置于插入模式。 按 Esc 退出插入模式,然后点击 p,它代表 paste。 这会将从第 3 行复制的文本粘贴到第 4 行。

Pasting in Vim

作为练习,重复这些步骤,但也修改您新创建的行上的文本。 此外,请确保这些行对齐良好。

提示: 您需要在插入模式和命令行模式之间来回切换才能完成此任务。

完成后,使用 x! 命令保存文件。 Vim 中的基本编辑就到此为止。

步骤 5:Vim 中的基本搜索

想象一下,您的团队负责人希望您更改项目中的文本字符串。 你怎么能快速做到这一点? 您可能想使用某个关键字搜索该行。

Vim 的搜索功能可能非常有用。 通过 (1) 按 Esc 键,然后 (2) 按冒号 : 键进入命令行模式。 我们可以通过输入 :/<SEARCH_KEYWORD> 来搜索关键字,其中 <SEARCH_KEYWORD> 是您要查找的文本字符串。 在这里,我们搜索关键字字符串“Hello”。 在下图中,缺少冒号,但这是必需的。

Searching in Vim

然而,一个关键词可能会出现多次,而且可能不是你想要的那一个。那么,如何跳转到下一个匹配项呢?你只需按下 n 键,代表 next (下一个)。请确保在执行此操作时你不在插入模式下!

奖励步骤:在 Vim 中使用分屏模式

这几乎涵盖了所有 Vim 的基础知识。但是,作为奖励,我想向你展示一个很酷的 Vim 功能,称为 分屏模式

退出 HelloWorld.java 并创建一个新文件。在终端窗口中,输入 vim GoodBye.java 并按 Enter 键,创建一个名为 GoodBye.java 的新文件。

输入任何你想要的文本;我决定输入 "Goodbye."。保存文件。(记住你可以在命令行模式下使用 :x!:wq 。)

在命令行模式下,输入 :split HelloWorld.java,看看会发生什么。

Split mode in Vim

哇!看看那个! split 命令创建了水平分割的窗口,HelloWorld.java 在上方,GoodBye.java 在下方。你如何切换窗口?按住 Control(在 Mac 上)或 CTRL(在 PC 上),然后连续按两次 ww (即,连续按两次 w )。

作为最后的练习,尝试编辑 GoodBye.java,通过从 HelloWorld.java 复制和粘贴,使其与下面的屏幕截图匹配。

Modify GoodBye.java file in Split Mode

保存两个文件,你就完成了!

提示 1: 如果你想垂直排列文件,使用命令 :vsplit <FILE_NAME>(而不是 :split <FILE_NAME>,其中 <FILE_NAME> 是你想在分屏模式下打开的文件名)。

提示 2: 你可以通过调用任意多个额外的 splitvsplit 命令来打开两个以上的文件。尝试一下,看看是什么样子。

Vim 速查表

在本文中,你学习了如何使用 Vim 来满足工作或项目的需求。但这仅仅是你解锁 Vim 强大功能的旅程的开始。请务必查看 Opensource.com 上的其他优秀教程和提示。

为了让事情变得更容易,我已经将你学到的所有内容总结成一份方便的速查表

User profile image.
Bryant Jimin Son 是 GitHub 的一只 Octocat(尽管这不是正式头衔,但他喜欢这样称呼自己),GitHub 是一家以托管世界上大多数开源项目而闻名的公司。在工作中,他正在探索不同的 git 技术、GitHub Actions、GitHub 安全等等。此前,他是 Red Hat 的高级顾问,Red Hat 是一家以 Linux 服务器和开源贡献而闻名的技术公司。

6 条评论

对于新用户来说,最好使用 :q 代替 :q!,因为前者会在你没有保存文件时发出警告。类似地,:w 会写入文件,但如果你要覆盖一些不是你用打开的文件,则会发出警告。

谢谢 Andre 的赞美和分享的优秀资源。我会看看它们,看看是否有机会将它们包含在未来的写作中,或者也可以随意为 Opensource.com 博客投稿。我也同意关于 VIM 有很多东西要学习 :)

回复 by André Jaenisch (未验证)

太棒了!...非常感谢!...我已经尝试掌握 Vim 好多年了!...但至少现在?...我有一个可以构建的命令和操作的基线...你太棒了!...

干杯!

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© 2025 open-source.net.cn. All rights reserved.