人人都会AI编程

30.2 Vim 编辑器:常用操作、配置、高效编辑技巧

更新时间:2026-07-12

Vim(Vi Improved)是绝大多数 Linux 发行版默认安装的文本编辑器。它最大的特点是模态编辑——在不同的模式下,同样的按键会产生不同的行为,这能在双手不离开键盘核心区域的前提下大幅提升编辑效率。对初学者而言,刚开始最需要记住的是如何切换模式以及安全退出。

一、常用操作

1. 模式切换与最基础的存活命令

  • 启动 Vim:vim 文件名(若文件不存在则新建)。
  • 刚进入 Vim 时处于普通模式,此时按 i 进入插入模式(左下角显示 -- INSERT --),就可以正常输入文字。
  • 在插入模式下按 EscCtrl+[ 回到普通模式。
  • 普通模式下输入 :w 保存,:q 退出,:wq 保存并退出;若改坏了想不保存强制退出,用 :q!

2. 移动光标(普通模式下)
| 按键 | 功能 |
|------|------|
| h j k l | 左、下、上、右移动(替代方向键) |
| w / b | 跳到下一个/上一个单词开头 |
| 0 / $ | 跳到行首 / 行尾 |
| gg / G | 跳到文件开头 / 文件末尾 |
| Ctrl+f / Ctrl+b | 向下翻页 / 向上翻页 |
| :n | 跳到第 n 行,例如 :42 |

3. 基本编辑(普通模式下)
| 操作 | 说明 |
|------|------|
| x | 删除光标处的一个字符 |
| dd | 删除(剪切)一整行 |
| yy | 复制一整行 |
| p / P | 粘贴到光标后 / 前 |
| u | 撤销上一步操作 |
| Ctrl+r | 重做(反撤销) |
| o / O | 在当前行下方/上方新开一行并进入插入模式 |
| cw | 删除从光标处到当前单词结尾的字符并进入插入模式 |

4. 搜索与替换

  • 普通模式下按 / 输入关键词,回车后按 n 跳到下一处,N 跳到上一处。
  • ? 可向上搜索。
  • 全局替换::s/旧文本/新文本/g 替换当前行的所有匹配;
  • 整个文件替换::%s/旧文本/新文本/g,加 c 可逐个确认::%s/旧文本/新文本/gc

5. 可视模式
v 进入字符可视模式,移动光标会选择文本;然后可以按 d 删除、y 复制或 > 缩进等。按 V 整行选择,Ctrl+v 进入块选择模式(非常实用)。

二、配置:让 Vim 更顺手

Vim 的配置文件是用户主目录下的 .vimrc(或 ~/.vim/vimrc)。每次启动 Vim 都会自动读取,可以存放你习惯的设置。

一个简洁实用的 .vimrc 示例:

" 显示行号
set number

" 语法高亮
syntax on

" 自动缩进:用空格代替制表符
set expandtab
set tabstop=4
set shiftwidth=4

" 高亮搜索结果,并实时跟随输入
set hlsearch
set incsearch

" 允许跨行退格和方向键
set backspace=indent,eol,start

" 鼠标支持(在终端里可以点击定位)
set mouse=a

" 将 leader 键改为逗号(方便自定义快捷键)
let mapleader = ","

" 快速保存:在普通模式下按逗号 w
nnoremap <leader>w :w<CR>

" 快速退出:逗号 q
nnoremap <leader>q :q<CR>

保存后重新打开 Vim 或执行 :source ~/.vimrc 即可生效。这些基础设置能消除大部分“用着别扭”的体验。

如果后续需要代码补全、文件浏览等高级功能,可以考虑安装插件管理器(如 vim-plug)并按需添加插件,但入门阶段先熟悉原生功能更为重要。

三、高效编辑技巧

1. 重复与宏

  • .(点号):重复上一次修改操作。例如用 dd 删除一行后,移动到另一行按 . 会再次删除。这可能是效率提升最直观的命令。
  • 宏录制:按 q 后跟一个字母(如 a)开始录制,状态栏显示 recording @a,然后做一整套复杂编辑操作。完成后按 q 停止。用 @a 重放这个宏,10@a 重复 10 次。它可以批量处理重复性极高的格式化任务。

2. 块操作(列编辑)
普通模式下按 Ctrl+v 进入块选择模式,用 j/k 上下选中多行的同一列区域。然后:

  • I 进入插入模式,输入内容,再按 Esc——所输内容会出现在每一行的相同列位置(批量添加注释 //# 极为方便)。
  • dx 删除选中的列块。

3. 多窗口与标签页

  • 横向分割窗口::split:sp,上下显示同一文件或不同文件。
  • 纵向分割窗口::vsplit:vsp
  • 窗口间跳转:按住 Ctrl 再按 w 两次,或 Ctrl+wh/j/k/l 方向移动。
  • 关闭当前窗口::q
  • 打开新标签页::tabnew 文件名,用 gt / gT 切换。

4. 标记与快速跳转

  • m 加一个小写字母(如 ma)可在当前行设置标记,之后用 'a 跳回该行行首,` a `` 跳回精确列位置。
  • '' 两个单引号回到上次跳转前的位置,在代码和文档之间来回切换非常高效。
  • gd 跳转到光标下变量的局部定义(需配合语言识别,不装插件对 C 代码基本有效)。

5. 善用外部命令与过滤

  • 在命令模式下 :!命令 可执行外部 shell 命令,如 :!ls -lh 查看文件。
  • 更强大的是将文本区域交给外部命令处理:在可视模式下选中几行,按 ! 然后输入命令(如 sort),回车后所选行就会被 sort 的输出替换。这相当于把 Linux 管道的一部分拉进了编辑器。

以上内容覆盖了 Vim 日常使用 90% 的场景。重点不在于一次记住所有按键,而是先掌握 模式切换、基本移动、.u 撤销、/ 搜索和 :wq 保存退出,然后在实际编辑中刻意练习,每次只增加两三个新操作。用上几天后,Vim 的高效就会自然显现。