当前位置: 首页 > news >正文

深入解析:UNIX下C语言编程与实践3-Vi 编辑器从入门到精通:快捷键使用与高效编辑技巧

一、Vi 编辑器核心:三种模式与切换方法

Vi 编辑器是 UNIX 及类 UNIX 系统(如 Linux、BSD)默认的文本编辑设备,其核心特点是通过三种模式实现不同编辑需求。初学者的核心难点在于熟练掌握模式切换逻辑,这是高效运用 Vi 的基础。

1. 命令模式(Command Mode)

进入方式:启动 Vi 后默认进入(如 vi test.c

核心功能:执行光标移动、文本删除、复制、粘贴等快捷运行,无法直接输入文本

常用操作

  • h/j/k/l:左/下/上/右移动光标
  • dd:删除当前行
  • yy:复制当前行
  • p:粘贴到光标后

2. 插入模式(Insert Mode)

进入方式:在命令模式下按 i/a/o 等插入命令

核心功能:直接输入和编辑文本,与记事本等可视化编辑器的编辑状态一致

切换回命令模式:按 Esc 键(建议按两次确认)

插入命令区别

  • i:在光标当前位置前插入
  • a:在光标当前位置后插入
  • o:在当前行下方新建一行并插入

3. 末行模式(Last Line Mode)

进入方式:在命令模式下按 :(冒号)

核心功能:执行文件保存、退出、查找替换、配置设置等执行

切换回命令模式:按 Esc 键或执行命令后自动返回

常用命令

  • :w:保存文件(Write)
  • :q:退出 Vi(Quit)
  • :wq:保存并退出
  • :q!:强制退出(不保存修改)
  • :%s/old/new/g:全局替换文本(old 替换为 new)

新手必记:模式切换的核心逻辑是「Esc 键返回命令模式」。无论在插入模式还是末行模式,遇到不确定的操作时,先按 Esc 回到命令模式,再重新执行操作,可避免绝大多数误操作。

二、Vi 常用快捷键对照表(按功能分类)

Vi 的高效性体现在命令模式快捷键末行模式命令的组合运用。以下是按编辑场景分类的常用快捷键,建议初学者先掌握「基础执行」部分,再逐步扩展到「高级操作」。

1. 基础操作:光标移动与文本编辑

快捷键/命令模式功能描述利用场景示例
h/j/k/l命令模式左/下/上/右移动光标(替代方向键,更高效)编辑代码时快速定位到错误行
0(数字零)命令模式光标移动到当前行开头修改行首的变量定义
$命令模式光标移动到当前行末尾补充行尾的分号(如 C 语言代码)
http://www.jsqmd.com/news/22334/

相关文章:

  • 科普报告:分子标记辅助选择(MAS)育种
  • 实用指南:【ansible/K8s】K8s的自动化部署源码分享
  • CF1896F
  • 作物遗传育种中的多亲本互交群体(MAGIC)
  • 联邦大型语言模型、多智能体大型语言模型是什么? - 详解
  • 50年的玉米育种改良,是如何应对气候变化的?
  • 刷题日记—洛谷数组题单—幻方
  • python爬虫进阶版练习(只说重点,selenium) - 指南
  • 基因组选择(GS)如何加速作物遗传增益?
  • AI巨头动态:从OpenAI收购到Meta裁员,我们看到了什么?
  • Nature Plants | 植物转录因子结合图谱,360个转录因子的近3000个全基因组结合位点图谱
  • 【大数据】水质数据可视化分析实用的系统 计算机工程 Hadoop+Spark环境配置 数据科学与大信息技术 附源码+文档+讲解
  • 【MyBatis】MyBatis 报错:Parameter ‘xxx‘ not found - 实践
  • xyd 2025 S 模拟赛
  • 标题:AI巨头动态:从OpenAI的野心到Meta的裁员潮
  • Plant Com | 将基因编辑与组学、人工智能和先进农业技术相结合以提高作物产量
  • Python 潮流周刊#74:创下吉尼斯世界记录的 Python 编程课
  • 10.26保养
  • 作品目录
  • CCPC2024济南个人题解
  • 推荐书籍 | 基因组遗传大数据分析方法
  • Python 潮流周刊#124:理性看待 GIL 的移除
  • 【笔记】在WPF中 BulletDecorator 的功能、采用方式并对比 HeaderedContentControl 与常见 Panel 布局的区别
  • OpenAI推出内置ChatGPT的Atlas浏览器:重新定义网页浏览体验
  • 数据清洗
  • 102302110高悦作业1
  • 2025.10.23 模拟赛
  • 刷题日记—洛谷循环题单 1.数学思想在算法题中的应用: 2.回文数的判定:
  • Day23-C:\Users\Lenovo\Desktop\note\code\JavaSE\Basic\src\com\InOut
  • U623471 暂未定题目(无数据)