您现在的位置是:网站首页>技术百科技术百科
Vim教程
小大寒2024-01-01[技术百科]博学多闻
Vim教程本文介绍了Vim中的宏操作、可视化选择和分屏功能。通过录制和重放宏,用户可以高效地重复操作;可视化模式下,支持批量编辑和缩进;分屏功能帮助用户在多个视图中同时工作。学习Vim需要不断实践和训练。《原文》
Vim教程
您想以最快的方式自学 vim(人类已知最好的文本编辑器)。这是我的学习方法:您可以先学习最基础的生存技能,然后慢慢地整合所有技巧。
Vim——六百万美元的编辑器
更好、更强、更快。
学习 vim,它将成为您最后一个文本编辑器。我不知道有比它更好的编辑器。学习它很难,但使用它令人难以置信。
我建议您按照以下四个步骤自学 Vim:
- 生存
- 感到舒适
- 变得更好、更强、更快
- 使用 vim 的超级能力
完成这段旅程后,您将成为一名 vim 的超级明星。
但在开始之前,有一个警告:学习 vim 起初会很痛苦。这需要时间。这很像学习一件乐器。不要期望在不到三天内使用 vim 比其他编辑器更高效。实际上,这肯定需要两周而不是三天。
第一阶段 – 生存
- 安装 vim
- 启动 vim
- 什么都不要做!先阅读。
在普通编辑器中,键盘输入就足以写点东西并在屏幕上显示。而这次不一样。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>。
第二阶段 – 感到舒适
你已经掌握了生存所需的命令。现在是时候学习更多命令了。这是我的建议:
-
插入模式的变体:
a→ 在光标之后插入o→ 在当前行之后插入新行O→ 在当前行之前插入新行cw→ 替换从光标到单词末尾的内容
-
基本移动命令:
0→ 跳转到行首^→ 跳转到行中第一个非空字符$→ 跳转到行尾g_→ 跳转到行中最后一个非空字符/pattern→ 搜索pattern
-
复制/粘贴:
P→ 在当前位置之前粘贴,注意p是粘贴到当前位置之后。yy→ 复制当前行,更简单但等同于ddP
-
撤销/重做:
u→ 撤销<C-r>→ 重做
-
加载/保存/退出/切换文件(缓冲区):
:e <path/to/file>→ 打开文件:w→ 保存:saveas <path/to/file>→ 保存为<path/to/file>:x,ZZ或:wq→ 保存并退出(:x仅在必要时保存):q!→ 不保存直接退出,另外::qa!可以退出即使有修改过的隐藏缓冲区。:bn(或:bp)→ 显示下一个(或上一个)文件(缓冲区)
花点时间学习这些命令。一旦掌握了这些命令,你应该能够完成其他编辑器中能够完成的所有操作。你可能仍然会觉得有点别扭,但跟随我进入下一个阶段,你会明白为什么 vim 值得额外付出努力。
第三阶段 – 更好、更强、更快
恭喜你走到这里!现在我们可以开始有趣的内容了。在第三阶段,我们只讨论与旧版 vi 编辑器兼容的命令。
更好
让我们看看 vim 如何帮助你重复操作:
.→ (点号)将重复上一个命令。- N<command> → 将重复执行该命令 N 次。
一些示例,打开文件并输入:
2dd→ 将删除 2 行。3p→ 将粘贴文本 3 次。100idesu [ESC]→ 将写入 “desu” 100 次。.→ 紧接着上一个命令后输入,将再次写入 100 次 “desu”。3.→ 将写入 3 次 “desu”(而不是 300,真是聪明)。
更强
掌握如何高效移动光标是使用 vim 的非常重要的一部分。不要跳过这一节。
- N
G→ 跳转到第 N 行。 gg→1G的快捷方式 - 跳转到文件的开头。G→ 跳转到文件的最后一行。单词移动:
w→ 跳转到下一个单词的开头。e→ 跳转到当前单词的结尾。
默认情况下,单词由字母和下划线字符组成。我们称 WORD 为以空白字符分隔的一组字母。如果你想以 WORD 为单位移动,只需使用大写字母:
W→ 跳转到下一个 WORD 的开头。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。F和T→ 类似于f和t,但方向相反。![]()
一个有用的小技巧是: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> 的示例。还有 v 和 V。一旦进行了选择,你可以:
J→ 将所有行合并为一行。<(或>)→ 将选中的内容向左(或右)缩进。=→ 自动缩进。
在所有选中的行末尾添加内容:
<C-v>- 移动到目标行(
jjj或<C-d>或/pattern或%等…) $移动到行尾A,输入文本,ESC。
分屏: :split 和 vsplit
这些是最重要的命令,但你应该查看 :help split。
:split→ 创建一个水平分屏(:vsplit创建一个垂直分屏)。<C-w><dir>: 其中dir是hjkl或 ←↓↑→,用于切换分屏。<C-w>_(或<C-w>|): 最大化当前分屏(或垂直分屏)。<C-w>+(或<C-w>-): 增大(或缩小)分屏。
总结
这些是我每天使用的90%的命令。我建议你每天只学习一到两个新命令。两到三周后,你会开始感受到vim的强大。
学习Vim更多的是通过训练,而不仅仅是单纯的记忆。幸运的是,vim自带了一些非常好的工具和优秀的文档。运行vimtutor,直到你熟悉大多数基本命令。
然后,你将学到关于 !、折叠、寄存器、插件和许多其他功能的知识。像学习钢琴一样学习vim,一切都会顺利的。
阅读完毕,很棒哦!



