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

真正的程序员,作者:xkcd
学生可以使用图形文本编辑器,例如 Kate,该编辑器默认安装在实验室计算机上。 对于可以使用 shell 但不习惯基于控制台的编辑器的学生来说,流行的选择是 Nano,它提供了良好的交互式菜单和类似于 Windows 图形文本编辑器的体验。
我有时会使用 Nano,但我听说了关于 Vi/Vim 和 Emacs 的很棒的事情,并且真的想尝试一下(主要是因为它们看起来很酷,而且我也很好奇它们有什么了不起的)。 第一次使用 Vim 让我感到害怕——我不想把任何东西弄坏! 但一旦我掌握了它,事情就变得容易得多,我也可以欣赏编辑器强大的功能。 至于 Emacs,好吧,我有点放弃了,但我很高兴我坚持使用了 Vim。
在本文中,我将(根据我个人的经验)介绍 Vim,足以让您可以在 Linux 系统上将其用作编辑器。 这既不会让您成为专家,也不会触及 Vim 许多强大功能的皮毛。 但起点始终很重要,我想让开始体验尽可能简单,您可以自己探索其余部分。
步骤 0:打开控制台窗口
在开始使用 Vim 之前,您需要做一些准备工作。 从您的 Linux 操作系统打开一个控制台终端。 (由于 Vim 也可在 MacOS 上使用,因此 Mac 用户也可以使用这些说明。)
打开终端窗口后,键入 ls 命令以列出当前目录。 然后,键入 mkdir Tutorial 创建一个名为 Tutorial 的新目录。 通过键入 cd Tutorial 进入目录。

准备工作就完成了。 现在是时候进入有趣的部分了——开始使用 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!)。 你的屏幕看起来像这样

在普通模式下按冒号会将 Vim 切换到命令行模式,并且 :q! 命令退出 Vim 编辑器而不保存。 换句话说,您正在放弃所有更改。 您也可以使用 ZQ; 选择更方便的选项。
点击 Enter 后,您不应再处于 Vim 中。 重复练习几次,只是为了掌握它。 完成后,继续下一节,了解如何更改此文件。
步骤 2:在 Vim 中进行并保存修改
通过键入 vim HelloWorld.java 并按 Enter 键重新打开文件。 插入模式是您可以更改文件的地方。 首先,点击 Esc 以确保您处于普通模式,然后按 i 进入插入模式。 (是的,那是字母 i。)
在左下角,您应该看到 -- INSERT --。 这意味着您处于插入模式。

键入一些 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。
瞧! 您在每行左侧都看到行号。

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

但是想象一下,您正在处理一个 1,000 行的文件,并且想要转到文件末尾的情况。 你怎么去那里? 确保您处于普通模式,然后键入 :$ 并按 Enter。
您将在最后一行!
既然您知道如何在行之间跳转,那么作为奖励,让我们学习如何移动到行尾。 确保您在带有文本的行上,例如第 3 行,然后键入 $。

您现在位于行中的最后一个字符处。 在此示例中,突出显示左大括号以显示光标移动到的位置,并且突出显示右大括号是因为它是左大括号的匹配字符。
Vim 中的基本导航就到此为止。 等等,不要退出文件。 让我们进入 Vim 中的基本编辑。 不过,请随意喝杯咖啡或茶。
步骤 4:Vim 中的基本编辑
现在您知道如何通过跳到您想要的行来在文件中导航,您可以利用这项技能在 Vim 中进行一些基本编辑。 切换到插入模式。 (还记得怎么做吗,按 i 键?) 当然,您可以使用键盘删除或插入字符来进行编辑,但 Vim 提供了更快的文件编辑方式。
移动到第 3 行,其中显示 public static void main(String[] args) {。 快速连续按两次 d 键。 是的,那是 dd。 如果您成功了,您将看到一个像这样的屏幕,其中第 3 行已消失,并且后面的每一行都向上移动了一行(即第 4 行变为第 3 行)。

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

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

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

作为练习,重复这些步骤,但也修改您新创建的行上的文本。 此外,请确保这些行对齐良好。
提示: 您需要在插入模式和命令行模式之间来回切换才能完成此任务。
完成后,使用 x! 命令保存文件。 Vim 中的基本编辑就到此为止。
步骤 5:Vim 中的基本搜索
想象一下,您的团队负责人希望您更改项目中的文本字符串。 你怎么能快速做到这一点? 您可能想使用某个关键字搜索该行。
Vim 的搜索功能可能非常有用。 通过 (1) 按 Esc 键,然后 (2) 按冒号 : 键进入命令行模式。 我们可以通过输入 :/<SEARCH_KEYWORD> 来搜索关键字,其中 <SEARCH_KEYWORD> 是您要查找的文本字符串。 在这里,我们搜索关键字字符串“Hello”。 在下图中,缺少冒号,但这是必需的。

然而,一个关键词可能会出现多次,而且可能不是你想要的那一个。那么,如何跳转到下一个匹配项呢?你只需按下 n 键,代表 next (下一个)。请确保在执行此操作时你不在插入模式下!
奖励步骤:在 Vim 中使用分屏模式
这几乎涵盖了所有 Vim 的基础知识。但是,作为奖励,我想向你展示一个很酷的 Vim 功能,称为 分屏模式。
退出 HelloWorld.java 并创建一个新文件。在终端窗口中,输入 vim GoodBye.java 并按 Enter 键,创建一个名为 GoodBye.java 的新文件。
输入任何你想要的文本;我决定输入 "Goodbye."。保存文件。(记住你可以在命令行模式下使用 :x! 或 :wq 。)
在命令行模式下,输入 :split HelloWorld.java,看看会发生什么。

哇!看看那个! split 命令创建了水平分割的窗口,HelloWorld.java 在上方,GoodBye.java 在下方。你如何切换窗口?按住 Control(在 Mac 上)或 CTRL(在 PC 上),然后连续按两次 ww (即,连续按两次 w )。
作为最后的练习,尝试编辑 GoodBye.java,通过从 HelloWorld.java 复制和粘贴,使其与下面的屏幕截图匹配。

保存两个文件,你就完成了!
提示 1: 如果你想垂直排列文件,使用命令 :vsplit <FILE_NAME>(而不是 :split <FILE_NAME>,其中 <FILE_NAME> 是你想在分屏模式下打开的文件名)。
提示 2: 你可以通过调用任意多个额外的 split 或 vsplit 命令来打开两个以上的文件。尝试一下,看看是什么样子。
Vim 速查表
在本文中,你学习了如何使用 Vim 来满足工作或项目的需求。但这仅仅是你解锁 Vim 强大功能的旅程的开始。请务必查看 Opensource.com 上的其他优秀教程和提示。
为了让事情变得更容易,我已经将你学到的所有内容总结成一份方便的速查表。
6 条评论