Vim编辑器全套教程:嵌入式开发高效编码必备
Linux下没有VS Code、没有Sublime,服务器上更没有图形界面。当你SSH到开发板调试,唯一的编辑器可能就是Vim。学会它,到哪里都能写代码。
一、Vim是什么?
Vim(Vi Improved)是从经典的Vi编辑器发展而来的文本编辑器。它的特点是:纯键盘操作、模式化编辑、无处不在(几乎所有Linux系统都预装)。
新手第一次打开Vim通常会经历:进去出不来→按键乱跳→强制关闭终端。别慌,跟着本文一步步来。
二、安装与启动
# Ubuntu预装了vi,但建议安装完整版vimsudoaptinstallvim# 启动vimvim# 打开空白界面vimmain.c# 打开(或创建)main.c文件vim+10 main.c# 打开文件并跳转到第10行vim+/main main.c# 打开文件并跳转到第一个匹配"main"的位置三、Vim三种核心模式
Vim最大的特点就是模式化,这也是新手最大的门槛。理解了模式,Vim就入门了一半。
三种模式的关系
┌─────────────────────────────────────────────────────┐ │ 正常模式 │ │ (Normal Mode - 打开Vim默认进入) │ │ │ │ ┌─── i/I/a/A/o/O ───→ ┌──────────────┐ │ │ │ │ 插入模式 │ │ │ │ │ (Insert Mode) │ │ │ │ ←─── Esc ────────── │ 在这里输入文字 │ │ │ │ └──────────────┘ │ │ │ │ │ ├─── : ──────────→ ┌──────────────┐ │ │ │ │ 命令行模式 │ │ │ │ │(Command Mode) │ │ │ │ ←─── Esc ─────── │ 保存、退出等 │ │ │ │ └──────────────┘ │ │ │ │ │ └─── v/V/Ctrl+v → ┌──────────────┐ │ │ │ 可视模式 │ │ │ │(Visual Mode) │ │ │ ←── Esc ─────── │ 选中文本操作 │ │ │ └──────────────┘ │ └─────────────────────────────────────────────────────┘3.1 正常模式(Normal Mode)
打开Vim默认进入的就是正常模式。在这个模式下,键盘上的按键不是输入文字,而是操作命令。比如按x不是输入字母x,而是删除光标处的一个字符。
3.2 插入模式(Insert Mode)
在正常模式下按以下键进入插入模式,开始输入文字:
| 按键 | 功能 |
|---|---|
i | 在光标前插入 |
I | 在行首插入 |
a | 在光标后插入 |
A | 在行末插入 |
o | 在下方新开一行插入 |
O | 在上方新开一行插入 |
区别记忆:
i= insert(插入),a= append(追加),o= open(新开一行)。
按Esc键回到正常模式。
3.3 命令行模式(Command Mode)
在正常模式下输入:进入命令行模式,光标移到屏幕底部,可以输入命令:
:w " 保存 :q " 退出 :wq " 保存并退出 :q! " 强制退出(不保存) :w new_name.c " 另存为 :x " 保存并退出(等同于:wq)小白救命锦囊:如果不知道自己在什么模式,连按两下
Esc回到正常模式,再输入:q!强制退出,从头再来。
四、正常模式下的光标移动
4.1 基本移动
| 按键 | 功能 | 助记 |
|---|---|---|
h | 左 | ← |
j | 下 | ↓(j像向下的钩) |
k | 上 | ↑ |
l | 右 | → |
你的右手就在这四个键上,这就是Vim高效的原因——手指不需要离开主键盘区去够方向键。
4.2 快速移动
| 按键 | 功能 |
|---|---|
w | 跳到下一个单词开头 |
b | 跳到上一个单词开头 |
e | 跳到单词末尾 |
0 | 跳到行首 |
^ | 跳到行首第一个非空字符 |
$ | 跳到行末 |
gg | 跳到文件第一行 |
G | 跳到文件最后一行 |
:10或10G | 跳到第10行 |
Ctrl+d | 向下翻半页 |
Ctrl+u | 向上翻半页 |
Ctrl+f | 向下翻整页 |
Ctrl+b | 向上翻整页 |
五、编辑操作命令
5.1 删除操作
| 按键 | 功能 |
|---|---|
x | 删除光标处字符 |
dd | 删除(剪切)整行 |
dw | 删除一个单词 |
d$ | 删除到行末 |
d0 | 删除到行首 |
5dd | 删除5行 |
dG | 删除到文件末尾 |
核心概念:
d是删除操作符,后面跟一个"动作"组成完整命令。d+w(单词)= 删除单词,d+$(行末)= 删到行末。这个"操作符+动作"的模式是Vim的精髓。
5.2 复制与粘贴
| 按键 | 功能 |
|---|---|
yy | 复制整行(yank) |
yw | 复制一个单词 |
y$ | 复制到行末 |
p | 在光标后粘贴 |
P | 在光标前粘贴 |
5yy | 复制5行 |
注意:
dd删除的内容实际是"剪切"到了Vim的寄存器中,按p可以粘贴出来。
5.3 替换与撤销
| 按键 | 功能 |
|---|---|
r | 替换光标处一个字符 |
R | 进入替换模式(连续替换) |
u | 撤销(undo) |
Ctrl+r | 恢复撤销(redo) |
. | 重复上一次操作(超实用!) |
~ | 反转光标处字符大小写 |
5.4 查找与替换
" 正常模式下查找 /hello " 向下查找hello ?hello " 向上查找hello n " 跳到下一个匹配 N " 跳到上一个匹配 * " 查找光标所在的单词 " 命令行模式下替换 :s/old/new/ " 替换当前行第一个old为new :s/old/new/g " 替换当前行所有old为new :%s/old/new/g " 全文替换old为new :%s/old/new/gc " 全文替换,每次确认(c=confirm) :10,20s/old/new/g " 替换第10-20行的old为new六、可视模式
可视模式用于选中文本块,然后对选中区域执行操作。
| 按键 | 模式 | 功能 |
|---|---|---|
v | 字符可视模式 | 按字符选择 |
V | 行可视模式 | 按整行选择 |
Ctrl+v | 块可视模式 | 按矩形块选择(列编辑) |
选中后可以执行的常用操作:
d 删除选中内容 y 复制选中内容 > 选中内容右缩进 < 选中内容左缩进 ~ 反转大小写块可视模式的经典应用——批量注释:
1. Ctrl+v 进入块可视模式 2. 用 j/k 选中要注释的行 3. 按 I(大写i) 4. 输入 // 5. 按 Esc,所有选中行都会被注释七、多窗口与多文件
7.1 分屏操作
:split 或 :sp " 水平分屏 :vsplit 或 :vs " 垂直分屏 :sp main.c " 水平分屏打开main.c Ctrl+w w " 在窗口间切换 Ctrl+w h/j/k/l " 切换到左/下/上/右窗口 :close 或 :q " 关闭当前窗口 :only " 关闭其他所有窗口7.2 多标签页
:tabnew config.h " 新标签页打开文件 :tabnext 或 gt " 下一个标签页 :tabprev 或 gT " 上一个标签页 :tabclose " 关闭当前标签页八、Vim配置优化
默认的Vim配置比较朴素,做好以下配置后体验提升巨大。
创建或编辑~/.vimrc文件:
" ===== 基础配置 ===== set number " 显示行号 set relativenumber " 显示相对行号(方便用数字+命令跳转) set tabstop=4 " Tab键显示为4个空格宽 set shiftwidth=4 " 自动缩进为4个空格 set expandtab " Tab键转为空格 set autoindent " 自动缩进 set smartindent " 智能缩进 set cursorline " 高亮当前行 set showmatch " 高亮匹配的括号 set incsearch " 实时高亮搜索 set hlsearch " 高亮搜索结果 set ignorecase " 搜索忽略大小写 set smartcase " 智能大小写(有大写时不忽略) set wildmenu " 命令行补全增强菜单 set encoding=utf-8 " 编码设为UTF-8 set fileencodings=utf-8,gbk " 文件编码自动检测 set wrap " 自动换行 set scrolloff=5 " 光标距边缘5行时滚动 set backspace=indent,eol,start " Backspace键正常工作 set noswapfile " 不生成swap文件 " ===== 快捷键映射 ===== " 将leader键改为空格 let mapleader = " " " 快速保存 nnoremap <leader>w :w<CR> " 快速退出 nnoremap <leader>q :q<CR> " 取消搜索高亮 nnoremap <leader><space> :nohlsearch<CR> " ===== 状态栏 ===== set laststatus=2 " 始终显示状态栏 set statusline=%F%m%r%h%w\ [%Y]\ [%l/%L,\ %c]\ %{&fileencoding}配置后重启Vim即可生效,写代码体验直线上升。
九、实用技巧合集
9.1 快速跳转配对括号
在正常模式下按%,光标会在匹配的括号对之间跳转:()→()、{}→{}、[]→[]。
9.2 自动格式化代码
" 选中代码后按 = 自动缩进 gg=G " 全文自动缩进9.3 录制宏(批量操作)
qa " 开始录制宏,存入寄存器a (执行一系列操作) q " 停止录制 @a " 执行寄存器a中的宏 10@a " 执行10次9.4 常用组合操作速查
| 操作 | 按键序列 | 说明 |
|---|---|---|
| 删除一行 | dd | 剪切整行 |
| 复制一行 | yy | 复制整行 |
| 粘贴 | p | 粘贴到下方 |
| 撤销 | u | undo |
| 重做 | Ctrl+r | redo |
| 删除到行尾 | D或d$ | 快速删除 |
| 改写一个词 | cw | 删除单词并进入插入模式 |
| 交换上下行 | ddp | 删除行后粘贴到下方 |
| 在行尾追加 | A | 等同于$a |
| 新建下一行 | o | 下方开新行并进入插入模式 |
十、总结
Vim的学习曲线确实陡峭,前三天你会怀疑人生,但坚持一周后效率就会质变。关键是理解模式化编辑和操作符+动作两大核心理念。把~/.vimrc配好,日常编辑完全不需要鼠标。在嵌入式开发中,SSH到远程设备写代码、改配置文件,Vim是唯一可靠的选择。