news 2026/7/14 3:54:22

Vim编辑器全套教程:嵌入式开发高效编码必备

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vim编辑器全套教程:嵌入式开发高效编码必备

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跳到文件最后一行
:1010G跳到第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粘贴到下方
撤销uundo
重做Ctrl+rredo
删除到行尾Dd$快速删除
改写一个词cw删除单词并进入插入模式
交换上下行ddp删除行后粘贴到下方
在行尾追加A等同于$a
新建下一行o下方开新行并进入插入模式

十、总结

Vim的学习曲线确实陡峭,前三天你会怀疑人生,但坚持一周后效率就会质变。关键是理解模式化编辑操作符+动作两大核心理念。把~/.vimrc配好,日常编辑完全不需要鼠标。在嵌入式开发中,SSH到远程设备写代码、改配置文件,Vim是唯一可靠的选择。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 3:54:21

多维聚合实战:从pandas groupby到业务驱动的分析契约

1. 项目概述&#xff1a;为什么多维聚合不是“加个groupby”就能搞定的事我在银行数据平台组干了八年&#xff0c;从最早用SQL写几十行嵌套子查询做客户分层&#xff0c;到后来带团队搭实时风险计算引擎&#xff0c;踩过的坑比跑过的ETL任务还多。今天聊的这个主题——“Part 2…

作者头像 李华
网站建设 2026/7/14 3:49:22

Tushare接口文档:A股日线行情(daily)

官方文档&#xff1a;https://tushare.pro/document/2?doc_id27功能描述&#xff1a;获取股票日行情数据&#xff0c;包括高开低收、成交量、成交额等数据返回限量&#xff1a;单次请求最大返回6000行&#xff0c;足够获取某天所有A股上市公司的日行情。如果单次请求一支股票的…

作者头像 李华
网站建设 2026/7/14 3:48:24

Makefile快速上手笔记

一、为什么需要 Makefile&#xff1f; 在linux开发过程中&#xff0c;当项目只有一两个 .c 文件时&#xff0c;手动执行 gcc 命令并不麻烦&#xff1a; gcc main.c hello.c -o app但随着项目规模增长&#xff0c;源文件越来越多&#xff0c;手动编译变得难以维护&#xff0c;特…

作者头像 李华
网站建设 2026/7/14 3:47:02

数字绘画与AI绘画流程全解析:从工具配置到作品输出

这次我们来看一个名为"命运的双鱼-绘画过程"的技术项目。从标题来看&#xff0c;这应该是一个与数字绘画、AI绘画或绘画教程相关的技术内容&#xff0c;可能涉及绘画软件使用、AI绘画工具操作或绘画流程展示。对于这类绘画过程展示项目&#xff0c;我们需要重点关注几…

作者头像 李华
网站建设 2026/7/14 3:45:47

大模型技术演进:从Prompt工程到多模态应用实战

1. 大模型技术全景图&#xff1a;从Prompt到多模态的演进脉络2017年Transformer架构的诞生&#xff0c;标志着大模型技术进入快车道。作为从业者&#xff0c;我们见证了从单一文本处理到多模态理解的范式迁移。这种演进不是简单的功能叠加&#xff0c;而是AI认知能力的质变——…

作者头像 李华
网站建设 2026/7/14 3:44:43

2026年全面的兼容性测试平台推荐:适配全行业场景的选型指南

在软件产品迭代提速、终端生态趋于碎片化的行业背景下&#xff0c;兼容性测试是保障APP、网页、客户端、智能终端产品跨设备、跨系统稳定运行的基础质量环节。各类终端系统、内核版本、硬件参数的差异&#xff0c;容易引发界面错乱、功能异常、闪退卡顿、数据同步失败等线上质量…

作者头像 李华