我记得第一次接触 Vim 的情景。那时我还是个大学生,计算机科学系实验室里的电脑都安装了 Ubuntu Linux。虽然早在大学之前我就接触过不同的 Linux 版本(比如 RHEL),甚至在大学之前(红帽在百思买卖它的 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 还有其他模式,如可视模式、选择模式和 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。这称为复制模式,它会将文本复制到剪贴板。接下来,通过输入 o 在下面创建一个新行。请注意,这将使您进入插入模式。按 Esc 退出插入模式,然后按 p,代表粘贴。这会将从第 3 行复制的文本粘贴到第 4 行。

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

但是,一个关键字可能会出现多次,而这可能不是您想要的那个。那么,您如何导航以找到下一个匹配项?您只需按 n 键,代表下一个。确保在执行此操作时您没有处于插入模式!
奖励步骤:在 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)。
作为最后的练习,尝试通过从 HelloWorld.java 复制和粘贴来编辑 GoodBye.java 以匹配下图。

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