实践 3:Vim 编辑器的使用
1. 引言
本实践任务旨在培养学生对 Vim 编辑器的全面掌握和实际应用能力。通过系统化的实践,学生将从基础操作逐步过渡到高级功能,建立起对 Vim 的肌肉记忆和操作直觉。这种能力不仅能显著提高文本编辑效率,还能在远程服务器管理、代码编写和配置文件修改等场景中发挥关键作用。特别是在没有图形界面的服务器环境中,熟练掌握 Vim 是系统管理和问题排查的重要技能。
本次实践的重点与难点在于:
- 模式化编辑:Vim 编辑器与传统文本编辑工具有着根本性的差异,需要适应 Vim 的多模式操作体系,包括普通模式、插入模式和可视化模式。
- 命令组合:Vim 强调命令的组合而非单一按键。例如,
d
(删除) +w
(单词) 组合成dw
(删除一个单词)。
2. 创建、编辑与保存文件
首先,我们从最基础的文件操作开始。请在用户根目录(~
)中创建一个名为 learn_vim.txt
的文件,并输入以下内容。
Learn Vim.
Vim Example Line 1.
Vim Example Line 2.
Vim Example Line 3.
Vim Example Line 4.
Vim Example Line 5.
操作步骤详解:
- 打开/创建文件:在终端输入
vim learn_vim.txt
命令。Vim 将会启动并打开文件,如果文件不存在,则会创建一个新的空文件。 - 进入插入模式:Vim 启动后默认处于普通模式 (Normal Mode),你无法直接输入文本。按下
i
键,注意观察 Vim 左下角会出现-- INSERT --
字样,这表示你已成功进入插入模式 (Insert Mode)。 - 输入文本:现在,你可以像在普通编辑器中一样,直接输入上述所有文本。
- 返回普通模式:输入完成后,按下
Esc
键。这是 Vim 中至关重要的一个按键,它将带你从任何模式返回到普通模式。你会发现左下角的-- INSERT --
字样消失了。 - 保存并退出:在普通模式下,输入冒号
:
,光标会立即跳转到底部命令行,这标志着进入了命令模式 (Command Mode)。接着输入wq
(w
代表写入/保存,q
代表退出),然后按下回车键。文件即被保存,Vim 随之关闭。
3. 理解并切换 Vim 模式
Vim 的强大之处在于其独特的模式化编辑思想。掌握模式的切换是精通 Vim 的第一步。
- 普通模式 (Normal Mode):这是 Vim 的默认和核心模式。所有导航、删除、复制、粘贴等高效的编辑命令都在此模式下执行。可以把它理解为命令的“指挥中心”。
- 插入模式 (Insert Mode):这是专门用于文本输入的模式。在此模式下,你输入的所有字符都会直接呈现在文件中。
- 命令模式 (Command Mode):在普通模式下输入
:
进入,用于执行保存、退出、搜索、替换、设置 Vim 环境等全局性或功能性的操作。
请务必熟练掌握 Esc
键,它是从插入模式返回普通模式的唯一途径,也是你使用频率最高的按键之一。
4. 普通模式下的光标导航
高效编辑的前提是快速、精确地移动光标,而无需依赖鼠标。请在普通模式下,忘掉鼠标,练习以下命令。
首先是基础的字符级移动,请优先使用 h
、j
、k
、l
来分别实现光标的左、下、上、右移动,这是 Vim 用户需要形成肌肉记忆的核心操作。
接着是单词级的快速跳转。使用 w
可以将光标向前移动到下一个单词的词首,而 b
则可以向后移动到上一个单词的词首。
对于行内移动,0
可以将光标直接移动到当前行的绝对行首,而 $
则会移动到行尾。如果你想移动到行内第一个非空白字符,可以使用 ^
。
在文件间的长距离跳转也同样轻松。gg
可以让你瞬间回到文件的第一行,而 G
则会跳转到文件的最后一行。如果你想跳转到指定的行号,比如第 3 行,只需输入 3G
即可。
5. 插入模式与文本编辑
进入插入模式不仅仅只有 i
一种方式。Vim 提供了多种命令,让你可以在进入插入模式的同时,将光标定位到最需要的位置。
- 在光标当前位置之前插入,使用
i
;若想在当前行的行首插入,使用I
。 - 在光標当前位置之后追加,使用
a
;若想在当前行的行尾追加,使用A
。 - 在当前行的下方新建一个空行并进入插入模式,使用
o
;若想在上方新建,则使用O
。
文本编辑实践:
在 learn_vim.txt
文件中,高效完成以下编辑任务。
任务 | 推荐命令序列 | 说明 |
---|---|---|
① 在第3行末尾添加文本 (Modified) | 3GA(Modified)<Esc> | 3G 跳转到第3行,A 直接在行尾进入插入模式并追加,输入文本后按 Esc 返回。 |
② 在第5行之后插入新行 This is a new line. | 5GoThis is a new line.<Esc> | 5G 跳转到第5行,o 在其下方新建一行并进入插入模式,输入文本后按 Esc 返回。 |
③ 将第2行整行替换为 Vim is awesome! | 2GccVim is awesome!<Esc> | 2G 跳转到第2行,cc 命令会删除整行并立即进入插入模式,输入新文本后按 Esc 返回。 |
④ 删除第4行 | 4Gdd | 4G 跳转到第4行,dd 命令删除整行。 |
6. 撤销与重做
在编辑过程中,误操作在所难免。Vim 提供了强大而简单的撤销机制,让你敢于大胆尝试各种命令。在普通模式下,按下 u
键 (undo),即可撤销上一次的修改操作。Vim 会将一次完整的修改(例如,从进入插入模式到退出插入模式之间的所有输入)视为“一次操作”。你可以连续按 u
来回溯之前的多个操作状态。
如果你撤销过度了,想要恢复刚才被撤销的操作,可以使用 Ctrl + r
(redo)。它会重做被 u
命令撤销掉的操作。u
和 Ctrl + r
就像一对孪生兄弟,为你提供了穿梭于编辑历史的能力,是保障你放心编辑的坚实后盾。
7. 可视化模式:所选即所得
除了普通模式和插入模式,Vim 还有一个极其重要的核心模式——可视化模式 (Visual Mode)。它彻底解决了“如何精确选择一段文本”的问题,是 Vim 用键盘模拟鼠标拖拽选中的完美实现。
在普通模式下,你可以通过以下按键进入不同的可视化模式:
- 按下
v
,进入字符可视化模式。此时,你可以像使用鼠标一样,通过移动光标(h,j,k,l,w,b
等)来自由选择文本,小到一个字符,大到数个段落。 - 按下
V
(大写),进入行可视化模式。这个模式下,你的选择单位是整行,非常适合对多行代码或文本进行批量操作。 - 按下
Ctrl + v
,进入块可视化模式。这是一个非常强大的模式,它允许你选择一个矩形的文本块。这在批量为多行添加或删除行首注释、修改表格的某一列时,能发挥出惊人的效率。
一旦进入可视化模式并选中了文本,你就可以对这块选区执行各种操作,例如复制、剪切、替换等,我们将在下一节详细讲解。
8. 复制、剪切与粘贴:可视化模式的威力
掌握了可视化模式后,复制、剪切和粘贴操作将变得无比灵活。这些操作的核心命令依然是 y
(yank/复制) 和 d
(delete/剪切)。
现在,操作逻辑变得更加清晰:先选择,后操作。进入任意一种可视化模式(v
, V
, Ctrl+v
),用光标移动命令选中你想要的文本区域,然后:
- 按下
y
,即可将选中的内容复制到 Vim 的剪贴板中。 - 按下
d
,即可将选中的内容剪切(删除并复制)到剪贴板中。
当然,Vim 依然保留了高效的行操作快捷方式:在普通模式下,yy
可以快速复制当前整行,而 dd
可以快速剪切当前整行。{n}yy
和 {n}dd
分别代表复制或剪切从当前行开始的 n
行。
无论是通过何种方式复制或剪切,内容都会被存放在 Vim 的寄存器中。之后,你可以移动光标到任意位置,在普通模式下使用 p
(paste) 将内容粘贴到光标之后,或者使用 P
(大写) 将内容粘贴到光标之前。
9. 重复的艺术:小数点 .
的魔力
Vim 哲学中有一个极其重要的思想:能重复的,绝不手动操作第二次。实现这一思想的精髓,就是普通模式下的 .
命令。
这个点 .
命令的功能非常简单:重复上一次的修改操作。“修改操作”涵盖了你在插入模式下的输入、一次删除、一次替换等等。比如,你使用 dw
删除了一个单词。现在,你只需将光标移动到另一个你想删除的单词上,然后轻轻按下 .
,那个单词也会被应声删除,无需再次输入 dw
。这个技巧在处理具有重复格式的文本时,能极大地提升你的编辑效率。
10. 搜索与替换
当文件内容庞大时,快速定位和修改信息就显得尤为重要。
要在文件中进行搜索,在普通模式下输入 /
,后面跟上你想要查找的关键词(pattern),然后按回车。Vim 会从光标当前位置向下查找并跳转到第一个匹配项。输入 ?
加关键词则是向上查找。一旦开始搜索,你可以使用 n
跳转到下一个匹配项,使用 N
跳转到上一个匹配项。一个更快捷的方式是,将光标移动到一个单词上,按下 *
即可向下搜索该单词,按下 #
则是向上搜索。
对于替换操作,Vim 提供了强大的 substitute
命令。在命令模式下,其基本格式为 :[range]s/old/new/[flags]
。
:s/old/new/
:将当前行的第一个old
替换为new
。:s/old/new/g
:将当前行的所有old
替换为new
(g
代表 global)。:%s/old/new/g
:将整个文件(%
代表所有行)中的所有old
替换为new
。:%s/old/new/gc
:在全局替换的基础上,每次替换前都会征求你的确认 (c
代表 confirm),给予你更多的控制权。
11. 窗口管理:一屏掌握全局
在实际工作中,我们常常需要同时查看或编辑多个文件,或者对照一个文件的不同部分。Vim 强大的窗口管理功能(分屏)让你无需离开终端即可实现这一切。
在命令模式下:
- 输入
:sp [filename]
可以水平分屏 (split)。如果省略文件名,则会打开一个当前文件的新窗口。 - 输入
:vsp [filename]
可以垂直分屏 (vertical split)。
创建分屏后,你的屏幕会被分割成多个窗口。要在这些窗口之间进行切换,请在普通模式下,先按下组合键 Ctrl + w
,然后迅速按下方向键 h, j, k, l
中的一个,即可切换到对应方向的窗口。关闭一个窗口就像关闭一个文件一样,只需在目标窗口中执行 :q
或 :wq
即可。
12. Vim 的个性化配置
要让 Vim 真正成为顺手的利器,你需要根据自己的习惯对其进行配置。Vim 的配置信息存储在一个名为 .vimrc
的文件中。
- 配置文件位置:用户专属的配置文件位于主目录下,即
~/.vimrc
。这是一个隐藏文件,如果不存在,你可以手动创建它。在此文件中的配置仅对当前用户生效。 - 配置文件的作用:通过在
.vimrc
文件中添加命令,你可以定制 Vim 的方方面面。例如,添加set number
可以默认显示行号,syntax on
可以开启语法高亮,set tabstop=4
可以设定 Tab 键的宽度。你还可以定义自己的快捷键映射,甚至安装各种强大的插件,将 Vim 打造成一个功能完备的集成开发环境(IDE)。