Vim 入门:基础知识

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

Opensource.com

我记得第一次接触 Vim 的时候。我是一名大学生,计算机科学系实验室的电脑上安装了 Ubuntu Linux。虽然早在大学时代之前我就接触过不同的 Linux 变体(比如 RHEL)(Red Hat 在百思买出售其 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 模式,但普通、插入和命令行模式对我们来说已经足够了。

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

提示: Esc 切换到普通模式。即使你已经处于普通模式,也请按 Esc 进行练习。

现在,这将很有趣。按 : (冒号键)然后是 q!(即,:q!)。你的屏幕将如下所示

Editing Vim

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

一旦你按下 Enter,你就不应该再处于 Vim 中了。重复练习几次,只是为了掌握它。一旦你完成了,请转到下一节,学习如何对这个文件进行更改。

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

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

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

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,它代表 粘贴。这会将从第 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 上),然后连续按两次 w (即 ww)。

作为最后的练习,尝试通过从 HelloWorld.java 复制和粘贴来编辑 GoodBye.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 是一位 Octocat,虽然不是正式头衔,但他喜欢这样称呼自己。他在 GitHub 工作,GitHub 是一家因托管世界上大多数开源项目而广为人知的公司。在工作中,他探索不同的 git 技术、GitHub Actions、GitHub 安全等。 之前,他是 Red Hat 的高级顾问,Red Hat 是一家以其 Linux 服务器和开源贡献而闻名的技术公司。

6 条评论

对于新用户来说,最好使用 :q 而不是 :q!,因为前者会在你没有保存文件时发出警告。 同样,:w 会写入文件,但如果你要覆盖一些现有的文件(不是你打开的文件),它也会发出警告。

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

回复 作者:André Jaenisch (未验证)

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

干杯!

Creative Commons License 这项工作采用 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.