我记得第一次接触 Vim 的时候。我是一名大学生,计算机科学系实验室的电脑上安装了 Ubuntu Linux。虽然早在大学时代之前我就接触过不同的 Linux 变体(比如 RHEL)(Red Hat 在百思买出售其 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 模式,但普通、插入和命令行模式对我们来说已经足够了。
你现在处于普通模式。如果你有文本,你可以使用箭头键或其他导航键来移动(稍后你会看到)。为了确保你处于普通模式,只需按 Esc(Escape)键。
提示: Esc 切换到普通模式。即使你已经处于普通模式,也请按 Esc 进行练习。
现在,这将很有趣。按 : (冒号键)然后是 q!(即,:q!)。你的屏幕将如下所示

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

输入一些 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,它代表 粘贴。这会将从第 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 上),然后连续按两次 w (即 ww)。
作为最后的练习,尝试通过从 HelloWorld.java 复制和粘贴来编辑 GoodBye.java,使其与下面的屏幕匹配。

保存两个文件,你就完成了!
提示 1: 如果你想要垂直排列文件,请使用命令 :vsplit <FILE_NAME>(而不是 :split <FILE_NAME>,其中 <FILE_NAME> 是你想要在分屏模式下打开的文件名)。
提示 2: 你可以打开两个以上的文件,只需根据需要调用尽可能多的 split 或 vsplit 命令。 试试看,看看效果如何。
Vim 速查表
在本文中,你学习了如何使用 Vim,足以应付工作或项目。 但这仅仅是你解锁 Vim 强大功能的旅程的开始。 务必查看 Opensource.com 上的其他精彩教程和技巧。
为了让事情变得更容易,我将你所学的所有内容总结成 一个方便的速查表。
6 条评论