网站首页 > 技术文章 正文
核心工作模式
- 命令模式(默认模式)
- 功能:执行光标移动、复制、删除等操作,所有命令无需回车
- 进入方式:启动vim或按Esc退出其他模式
- 插入模式
- 功能:自由编辑文本内容
- 进入命令:
i:光标前插入
a:光标后插入
o:下方新建行
O:上方新建行
- 底线命令模式
- 功能:保存、退出、替换等高级操作,命令以:开头
- 进入方式:命令模式下按:
模式切换流程:命令模式 <-> 插入模式(i/a/o) <-> 底线命令模式(:)
必备命令速查
文件操作
命令 | 功能 |
:w | 保存文件 |
:q | 退出 |
:wq 或 :x | 保存并退出 |
:q! | 强制退出(不保存) |
光标移动
- h/j/k/l:左/下/上/右
- 0 和 $:行首/行尾
- gg 和 G:文件开头/结尾
- :10:跳转到第10行
编辑操作
命令 | 功能 |
dd | 删除当前行 |
yy | 复制当前行 |
p | 粘贴 |
u | 撤销 |
Ctrl + r | 重做 |
x | 删除当前字符 |
J | 合并当前行和下一行 |
查找替换
- /keyword:向下搜索
- ?keyword:向上搜索
- :%s/old/new/g:全局替换
实战高效技巧
- 分屏操作
- :vsp file:垂直分屏
- :sp file:水平分屏
- Ctrl + w + 方向键:切换窗口
- 块编辑(Vim特有)
- Ctrl + v:进入块选择模式
- 选中后按I输入文本 → Esc:多行同时插入
- 选中后按d:删除块内容
- 宏录制
- qa:开始录制宏(保存到寄存器a)
- q:停止录制
- @a:执行宏
- 自动补全
- Ctrl + n:向下补全
- Ctrl + p:向上补全
- 外部命令集成
- :r !date:插入当前日期(替换date为其他命令)
- 配置优化
- :set nu:显示行号
- :set paste:粘贴时禁用自动缩进(避免格式错乱)
高频场景示例
- 批量替换注释:
:%s/^/#/g " 每行行首添加#(注释)
:%s/^#//g " 删除行首的#
- 多文件编辑:
vim -O file1.txt file2.txt " 垂直分屏打开
:bn " 切换下一个文件
:bp " 切换上一个文件
- 快速合并行:
- 命令模式下按Shift + J(大写J)合并当前行与下一行
猜你喜欢
- 2025-07-06 这个办法能够让家里的旧手机安装docker并成功运行!免root安装!
- 2025-07-06 2022年即将生效的防止空气污染规定,请查收
- 2025-07-06 纯干货 | 四六级核心词500词第七组50词
- 2025-07-06 群晖 Container Manager 无法通过代理拉取镜像的完整解决流程
- 2025-07-06 Centos7修改网卡固定IP地址(centos7修改网卡配置文件)
- 2025-07-06 # linux 中使用 visudo 命令,怎么保存退出?
- 2025-07-06 驰为Vi8 双12全球首发(驰为vi8 hi8)
- 2025-07-06 Hadoop集群搭建及Hive的安装与使用
- 2025-07-06 学习数据结构--第五章:图(图的存储方法)
- 2025-07-06 成功安装 Magento2.4.3最新版教程「技术干货」
- 1509℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 530℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 494℃MySQL service启动脚本浅析(r12笔记第59天)
- 473℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 470℃启用MySQL查询缓存(mysql8.0查询缓存)
- 451℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 430℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 427℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)