您现在的位置是:网站首页>技术百科技术百科

Vim教程

小大寒2024-01-01[技术百科]博学多闻

Vim教程本文介绍了Vim中的宏操作、可视化选择和分屏功能。通过录制和重放宏,用户可以高效地重复操作;可视化模式下,支持批量编辑和缩进;分屏功能帮助用户在多个视图中同时工作。学习Vim需要不断实践和训练。《原文

Vim教程

您想以最快的方式自学 vim(人类已知最好的文本编辑器)。这是我的学习方法:您可以先学习最基础的生存技能,然后慢慢地整合所有技巧。

Vim——六百万美元的编辑器

更好、更强、更快。

学习 vim,它将成为您最后一个文本编辑器。我不知道有比它更好的编辑器。学习它很难,但使用它令人难以置信。

我建议您按照以下四个步骤自学 Vim:

  1. 生存
  2. 感到舒适
  3. 变得更好、更强、更快
  4. 使用 vim 的超级能力

完成这段旅程后,您将成为一名 vim 的超级明星。

但在开始之前,有一个警告:学习 vim 起初会很痛苦。这需要时间。这很像学习一件乐器。不要期望在不到三天内使用 vim 比其他编辑器更高效。实际上,这肯定需要两周而不是三天。

第一阶段 – 生存

  1. 安装 vim
  2. 启动 vim
  3. 什么都不要做!先阅读。

在普通编辑器中,键盘输入就足以写点东西并在屏幕上显示。而这次不一样。Vim 是处于普通模式的。我们需要切换到插入模式。按下字母 i

您应该感觉好一些了。现在可以像普通编辑器一样输入字母了。要回到普通模式,只需按下 ESC 键。

现在,您已经知道如何在插入模式普通模式之间切换。以下是在普通模式中生存所需的命令:

  • i → 进入插入模式。按下 ESC 回到普通模式。
  • x → 删除光标下的字符
  • :wq → 保存并退出(:w 保存,:q 退出)
  • dd → 删除(并复制)当前行
  • p → 粘贴

推荐:

  • hjkl(强烈推荐,但非必需)→ 基本光标移动(←↓↑→)。提示:j 看起来像向下的箭头。
  • :help <command> → 显示关于 <command> 的帮助。您也可以直接使用 :help 查看通用帮助。

仅需 5 个命令。这就是您开始的全部所需。当这些命令变得自然(可能一天左右),您就可以进入第二阶段了。

不过首先,关于普通模式的一个小备注。在普通编辑器中,要复制通常需要使用 Ctrl 键(通常是 Ctrl-c)。实际上,当您按下 Ctrl 键时,所有键的意义似乎都发生了变化。而在 vim 的普通模式中,就像编辑器自动为您按下 Ctrl 键一样。

最后关于符号的说明:

  • 代替写 Ctrl-λ,我会写成 <C-λ>
  • : 开头的命令需要以 <enter> 结束。例如,当我写 :q 时,我的意思是 :q<enter>

第二阶段 – 感到舒适

你已经掌握了生存所需的命令。现在是时候学习更多命令了。这是我的建议:

  1. 插入模式的变体:

    • a → 在光标之后插入
    • o → 在当前行之后插入新行
    • O → 在当前行之前插入新行
    • cw → 替换从光标到单词末尾的内容
  2. 基本移动命令:

    • 0 → 跳转到行首
    • ^ → 跳转到行中第一个非空字符
    • $ → 跳转到行尾
    • g_ → 跳转到行中最后一个非空字符
    • /pattern → 搜索pattern
  3. 复制/粘贴:

    • P → 在当前位置之前粘贴,注意p是粘贴到当前位置之后。
    • yy → 复制当前行,更简单但等同于ddP
  4. 撤销/重做:

    • u → 撤销
    • <C-r> → 重做
  5. 加载/保存/退出/切换文件(缓冲区):

    • :e <path/to/file> → 打开文件
    • :w → 保存
    • :saveas <path/to/file> → 保存为<path/to/file>
    • :xZZ:wq → 保存并退出(:x仅在必要时保存)
    • :q! → 不保存直接退出,另外::qa! 可以退出即使有修改过的隐藏缓冲区。
    • :bn(或 :bp)→ 显示下一个(或上一个)文件(缓冲区)

花点时间学习这些命令。一旦掌握了这些命令,你应该能够完成其他编辑器中能够完成的所有操作。你可能仍然会觉得有点别扭,但跟随我进入下一个阶段,你会明白为什么 vim 值得额外付出努力。

第三阶段 – 更好、更强、更快

恭喜你走到这里!现在我们可以开始有趣的内容了。在第三阶段,我们只讨论与旧版 vi 编辑器兼容的命令。

更好

让我们看看 vim 如何帮助你重复操作:

  1. . → (点号)将重复上一个命令。
  2. N<command> → 将重复执行该命令 N 次。

一些示例,打开文件并输入:

  • 2dd → 将删除 2 行。
  • 3p → 将粘贴文本 3 次。
  • 100idesu [ESC] → 将写入 “desu” 100 次。
  • . → 紧接着上一个命令后输入,将再次写入 100 次 “desu”。
  • 3. → 将写入 3 次 “desu”(而不是 300,真是聪明)。

更强

掌握如何高效移动光标是使用 vim 的非常重要的一部分。不要跳过这一节。

  1. NG → 跳转到第 N 行。
  2. gg1G 的快捷方式 - 跳转到文件的开头。
  3. G → 跳转到文件的最后一行。
  4. 单词移动:

    1. w → 跳转到下一个单词的开头。
    2. e → 跳转到当前单词的结尾。

    默认情况下,单词由字母和下划线字符组成。我们称 WORD 为以空白字符分隔的一组字母。如果你想以 WORD 为单位移动,只需使用大写字母:

    1. W → 跳转到下一个 WORD 的开头。
    2. E → 跳转到当前 WORD 的结尾。

现在让我们谈谈非常高效的移动命令:

  • % :跳转到对应的 (, {, [
  • *(或 #):跳转到光标下单词的下一个(或上一个)匹配位置。

相信我,最后这几个命令非常有用。

更快

还记得 vi 移动的重要性吗?这就是原因所在。大多数命令都可以按照以下通用格式使用:

<起始位置><命令><结束位置>

例如:0y$ 的含义是:

  • 0 → 跳转到当前行的开头。
  • y → 从当前位置开始复制。
  • $ → 直到当前行的末尾。

我们还可以执行类似 ye 的操作,从当前位置复制到单词的结尾。还可以使用 y2/foo,复制到第二次出现 “foo” 的位置。

但这一点不仅适用于 y(复制),也适用于 d(删除)、v(可视选择)、gU(转为大写)、gu(转为小写)等命令。

第4级 – Vim 超能力

通过之前的所有命令,你应该已经能熟练使用 Vim。但现在,来看看这些杀手级功能吧。这些功能中的一些正是我开始使用 Vim 的原因。

在当前行移动:0 ^ $ g_ f F t T , ;

  • 0 → 移动到第0列
  • ^ → 移动到行首的第一个字符
  • $ → 移动到行尾的最后一列
  • g_ → 移动到行尾的最后一个字符
  • fa → 移动到当前行下一个出现的字母 a,(上一个)和;(下一个)用于查找下一个或上一个出现位置。
  • t, → 移动到字符,的前一个位置。
  • 3fa → 在当前行查找第3个出现的a
  • FT → 类似于 ft,但方向相反。

一个有用的小技巧是:dt" → 删除直到字符 " 之前的所有内容。

区域选择:<action>a<object><action>i<object>

这些命令只能在可视模式中用于操作符之后,但它们非常强大。其主要模式是:

<action>a<object><action>i<object>

其中,action 表示任何操作,例如 d(删除),y(复制),v(在可视模式中选择)。object 可以是:w 表示一个单词,W 表示一个扩展单词,s 表示一个句子,p 表示一个段落,还可以是自然字符,例如 ", ', ), }, ]

假设光标在(map (+) ("foo"))中的第一个o上。

  • vi" → 选择 foo
  • va" → 选择 "foo"
  • vi) → 选择 "foo"
  • va) → 选择 ("foo")
  • v2i) → 选择 map (+) ("foo")
  • v2a) → 选择 (map (+) ("foo"))

选择矩形块:<C-v>

矩形块在注释多行代码时非常有用。通常的用法是:0<C-v><C-d>I-- [ESC]

  • ^ → 移动到行首的第一个非空字符
  • <C-v> → 开始块选择
  • <C-d> → 向下移动(也可以用jjj%等)
  • I-- [ESC] → 在每行前写入--以注释

注意:在 Windows 系统中,如果剪贴板非空,可能需要使用<C-q>替代<C-v>

补全:<C-n><C-p>

在插入模式下,只需输入单词的开头,然后按 <C-p>,就会看到魔法效果…

宏操作 : qa 执行某操作 q, @a, @@

qa 在寄存器 a 中录制你的操作。然后 @a 会像你手动输入一样,重新执行保存到寄存器 a 中的宏。@@ 是一个快捷方式,用来重新执行最后一次执行的宏。

示例

在只包含数字1的一行中,输入以下命令:

  • qaYp<C-a>q
    • qa 开始录制。
    • Yp 复制这一行。
    • <C-a> 增加数字。
    • q 停止录制。
  • @a → 在1下方写2。
  • @@ → 在2下方写3。
  • 现在执行 100@@ 会创建一个递增的数字列表,直到103。

可视化选择: v,V,<C-v>

我们已经看到了使用 <C-v> 的示例。还有 vV。一旦进行了选择,你可以:

  • J → 将所有行合并为一行。
  • <(或 >)→ 将选中的内容向左(或右)缩进。
  • = → 自动缩进。

在所有选中的行末尾添加内容:

  • <C-v>
  • 移动到目标行(jjj<C-d>/pattern% 等…)
  • $ 移动到行尾
  • A,输入文本,ESC

分屏: :splitvsplit

这些是最重要的命令,但你应该查看 :help split

  • :split → 创建一个水平分屏(:vsplit 创建一个垂直分屏)。
  • <C-w><dir> : 其中 dirhjkl 或 ←↓↑→,用于切换分屏。
  • <C-w>_(或 <C-w>|): 最大化当前分屏(或垂直分屏)。
  • <C-w>+(或 <C-w>-): 增大(或缩小)分屏。

总结

这些是我每天使用的90%的命令。我建议你每天只学习一到两个新命令。两到三周后,你会开始感受到vim的强大。

学习Vim更多的是通过训练,而不仅仅是单纯的记忆。幸运的是,vim自带了一些非常好的工具和优秀的文档。运行vimtutor,直到你熟悉大多数基本命令。

然后,你将学到关于 !、折叠、寄存器、插件和许多其他功能的知识。像学习钢琴一样学习vim,一切都会顺利的。

阅读完毕,很棒哦!

文章评论

站点信息

  • 网站地址:www.xiaodahan.com
  • 我的QQ: 3306916637