news 2026/9/17 14:01:33

Linux vi编辑器实战入门:模式切换与终端编辑核心技能

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux vi编辑器实战入门:模式切换与终端编辑核心技能

简介:本资源是一份面向Linux初学者与计算机专业学生的Vi编辑器实践教学材料,聚焦命令行文本编辑核心技能训练,解决新手在系统配置、代码编写及日常文件处理中因不熟悉Vi操作而效率低下的问题。资源为单文件PDF文档(422KB),完整涵盖实验目的、三种工作模式详解(一般/编辑/命令模式)、光标移动、文本增删改查、撤销恢复、多行替换及C程序编译调试等典型任务的操作步骤与原理说明,并附有实验总结与学习建议。内容结构清晰,从基础概念到综合应用层层递进,特别适合课堂实验、课后复盘或自学巩固。目前已有1379人学习下载,可直接用于Linux环境实操训练,帮助读者快速建立Vi/Vim使用直觉,夯实Linux系统管理与开发必备的底层编辑能力。

1. 为什么一份《Linux实验报告:vi编辑器的使用》至今仍是运维新人绕不开的实操门槛?

很多刚接触Linux的学员拿到这份PDF实验报告时,第一反应是“不就是个文本编辑器?用nano或者图形界面不更简单?”——但真正部署过生产环境的工程师都清楚:当SSH连进一台无GUI的CentOS服务器、容器内调试日志、或Kubernetes Pod里临时修改配置时,vi(及其现代实现vim)不是可选项,而是唯一能立即响应的编辑器。它不依赖X11、不占用额外内存、启动毫秒级,且所有主流发行版默认预装。这份实验报告表面教的是iEsc:wq这些按键组合,底层训练的是Linux命令行空间的肌肉记忆与状态思维:模式切换(普通/插入/命令行)、动作组合(d$删到行尾)、寄存器操作("ayy复制到a寄存器)——这些能力直接决定你排查故障的速度。适合对象很明确:正在准备Linux认证考试的学生、刚入职需要接手线上服务的运维助理、以及需要在嵌入式设备上现场调试的开发人员。它不教理论,只锤炼在真实终端里“活下去”的基本功。

2. vi编辑器核心模式与基础操作:从按下vi filename那一刻开始

vi的高效源于其严格的状态分离设计。新手常误以为“按了i就能写”,却在保存时因忘记退出插入模式而反复失败。理解三种基础模式的触发逻辑与切换路径,是避免卡死的第一步。

2.1 普通模式(Normal Mode):所有操作的指挥中心

vi启动后默认进入普通模式,此时键盘输入不产生字符,而是执行命令。这是vi区别于其他编辑器的根本特征。

  • 进入方式:启动vi后自动进入;或从插入/命令行模式按Esc键强制返回。
  • 关键作用:移动光标、删除、复制、粘贴、查找、跳转等原子操作均在此模式下完成。
  • 典型命令
    • h/j/k/l:左/下/上/右移动(比方向键更快,手指无需离开主键盘区)
    • w:跳到下一个单词开头;b:跳到上一个单词开头;e:跳到当前单词结尾
    • 0(数字零):行首;$:行尾;gg:文件首行;G:文件末行
    • dd:删除整行;dw:删除当前单词;d$:删除从光标到行尾

提示:普通模式下所有命令都是“动词+宾语”结构。d是删除动词,$是“到行尾”宾语,组合成d$即“删除到行尾”。掌握这个逻辑,就能推导出c$(修改到行尾)、y$(复制到行尾)等变体。

2.2 插入模式(Insert Mode):唯一输入文本的入口

插入模式是唯一允许键盘输入字符的状态,但必须通过普通模式指令主动进入,且无法直接保存退出。

  • 进入方式(全部在普通模式下执行):
    • i:在光标插入(最常用)
    • a:在光标插入(适合补全单词)
    • o:在当前行下方新开一行并插入
    • O:在当前行上方新开一行并插入
  • 退出方式只能按Esc返回普通模式。这是初学者最大陷阱——习惯性按Ctrl+S保存或Ctrl+Q退出,结果在终端里输出乱码或挂起进程。

2.3 命令行模式(Command-line Mode):执行文件级操作的控制台

在普通模式下输入:(冒号)进入命令行模式,用于保存、退出、搜索替换、设置选项等全局操作。

  • 基础命令
    • :w:保存文件(write)
    • :q:退出编辑器(quit)
    • :wq:x:保存并退出(x更安全,仅当文件有修改时才写入)
    • :q!:不保存强制退出(放弃所有更改)
    • :/pattern:向前搜索pattern字符串(如:/error查找第一个error)
    • :s/old/new/:替换当前行第一个oldnew
    • :%s/old/new/g:全局替换(%代表全文,g代表每行所有匹配)
# 在普通模式下输入以下命令,效果立竿见影: :wq # 保存退出——这是实验报告要求的最终动作 :q! # 放弃修改退出——避免误操作污染源文件 :set number # 显示行号(实验报告中常要求截图带行号)

注意:命令行模式的命令以回车结束,输入错误可用Backspace删除。若输错命令(如:qw),vi会提示E492: Not an editor command,此时按Enter清除错误提示即可重新输入。

3. 实验报告必做任务拆解:从创建文件到精准修改的完整链路

《Linux实验报告:vi编辑器的使用》通常包含6–8个递进式任务,覆盖从新建文件到结构化编辑的全流程。我们按实际操作顺序还原每个步骤的vi命令链,并指出学生高频出错点。

3.1 创建新文件并输入基础内容:vi report.txtiEsc:wq

这是实验第一步,也是最容易被忽略细节的环节。

  • 正确流程
    $ vi report.txt # 启动vi,创建空文件report.txt # 此时处于普通模式,屏幕显示空白,底部提示"report.txt" [New File] i # 进入插入模式,开始输入 Linux实验报告:vi编辑器的使用 作者:张三 日期:2024-06-15 Esc # 按Esc退出插入模式,回到普通模式 :wq # 保存并退出
  • 常见错误
    • 输入完内容后直接按Ctrl+C,导致vi未保存退出,文件为空;
    • 忘记按Esc就输入:wq,结果在文件中插入了:wq三个字符;
    • 误用Shift+:(即:)后未输入命令直接回车,vi报错E37: No write since last change(未修改过文件,无需保存)。

3.2 在指定行插入新段落:GoEsc:w

实验常要求“在文件末尾添加‘实验总结’段落”。这里涉及行定位与插入位置的精确控制。

  • 操作链
    $ vi report.txt G # 跳转到文件最后一行(普通模式) o # 在最后一行下方新开一行并插入(普通模式指令) 实验总结: 1. 掌握了vi的三种基本模式 2. 熟悉了移动、删除、复制等快捷键 Esc # 退出插入模式 :w # 仅保存,不退出(继续后续操作)
  • 为什么不用/搜索?因为末尾位置固定,G比搜索更可靠。若要求“在‘日期’行后插入”,则用/日期定位后按o

3.3 替换指定字符串并验证::%s/张三/李四/gn/N循环确认

实验报告常要求“将所有‘张三’替换为‘李四’”,这考验对替换范围与确认机制的理解。

  • 安全替换步骤
    :%s/张三/李四/gc # c参数表示confirm(确认每一处替换) # vi会逐个高亮匹配项,提示: # replace with "李四" (y/n/a/q/l/^E/^Y)? # y=是, n=否, a=全部替换, q=退出, l=仅本次, ^E/^Y=上下翻页 y # 对第一个匹配确认 n # 跳过第二个(若存在误匹配) a # 对剩余所有匹配一次性替换
  • 参数说明
    • %:全文范围(等价于1,$
    • g:global,替换每行所有匹配(缺省只替换第一个)
    • c:confirm,强制人工确认,避免误替换系统关键词

提示:生产环境中严禁直接用:%s/old/new/g!必须加c参数或先用/old搜索验证匹配范围。实验报告虽为练习,但养成此习惯可避免线上事故。

3.4 删除特定行并保存::5,8d:w

要求“删除第5至8行”,这是vi行地址操作的典型应用。

  • 命令解析
    :5,8d # 在命令行模式输入,d为delete动词,5,8为行地址范围 # 效果:删除第5、6、7、8共四行 :10d # 删除第10行(单行简写) :.,+2d # 删除当前行及后两行(`.`代表当前行,`+2`代表向下偏移2行)
  • 验证方法
    执行后按Ctrl+G(普通模式)查看当前行号与总行数,或输入:set number显示行号确认删除是否准确。

4. vi高级技巧与实验报告提分关键:让操作可追溯、可复现、可验证

实验报告评分不仅看结果,更看重操作过程的规范性与可验证性。掌握以下技巧,能让报告截图更具专业说服力,也符合企业级运维对操作留痕的要求。

4.1 行号显示与光标位置记录::set numberCtrl+G

实验报告常要求截图包含行号,便于教师核对操作位置。但更重要的是,行号是调试和协作的基础。

  • 启用行号
    :set number # 显示绝对行号(1,2,3...) :set relativenumber # 显示相对行号(当前行为0,上下行分别为1,2...),移动更直观 :set nonumber # 关闭行号
  • 实时定位
    Ctrl+G(普通模式)显示当前光标位置:
    "report.txt" 12L, 345C --12%-- col 15
    其中12L表示12行,345C表示345字符,col 15表示第15列。实验报告中若需描述“在第7行第3列插入”,此信息比肉眼估算更精准。

4.2 多文件编辑与缓冲区切换::e filename:bn/:bp

实验可能要求对比两个文件(如report.txtreport_backup.txt)。vi支持单实例多文件编辑,避免频繁启停。

  • 操作流程
    $ vi report.txt # 主文件 :e report_backup.txt # 在同一vi会话中打开新文件(edit) :bn # 切换到next buffer(下一个缓冲区) :bp # 切换到previous buffer(上一个缓冲区) :ls # 列出所有打开的缓冲区(显示编号、文件名、状态) :q! # 退出当前缓冲区(不保存)
  • 缓冲区编号应用
    :ls输出类似:
    1 %a + "report.txt" line 12 2 # "report_backup.txt" line 1
    可直接用:b1切换到编号1的缓冲区,比bn更精准。

4.3 宏录制与批量操作:qa→ 操作序列 →q@a

当实验要求“对10行相同格式的数据统一修改”,手动重复效率极低。vi宏机制可一键复现操作。

  • 录制与执行示例(将每行开头的[ ]替换为[x]):
    qa # 开始录制宏,存入寄存器a ^ # 普通模式,跳到行首(^) f] # 查找下一个']'字符 i # 进入插入模式 x # 输入x Esc # 退出插入模式 j # 下移一行(为下次录制准备) q # 结束录制 @a # 执行宏一次 9@a # 连续执行宏9次(共处理10行)

提示:宏的本质是记录按键流,因此录制时务必确保光标起始位置一致(如都用^定位行首)。实验报告中若展示宏操作,需注明录制步骤与执行次数,体现自动化思维。

5. 实验报告常见失分点与终端环境避坑指南

学生提交的vi实验报告,约60%的扣分源于终端环境配置差异或操作细节疏漏,而非命令本身错误。以下是基于历年教学反馈整理的硬性避坑清单。

5.1 终端编码与中文显示问题:locale检查与vimrc基础配置

实验报告中若含中文标题,部分Linux终端(尤其最小化安装的CentOS)默认UTF-8支持不全,导致vi report.txt打开后中文显示为方块或乱码。

  • 诊断命令
    locale | grep LANG # 检查语言环境,正常应为LANG="zh_CN.UTF-8" echo $LANG # 直接输出LANG变量值
  • 修复方案(临时生效):
    export LANG=zh_CN.UTF-8 export LC_ALL=zh_CN.UTF-8
  • 永久配置(写入~/.bashrc):
    echo 'export LANG=zh_CN.UTF-8' >> ~/.bashrc echo 'export LC_ALL=zh_CN.UTF-8' >> ~/.bashrc source ~/.bashrc

注意:此问题与“linux解压文件乱码”同源,本质是终端字符集与文件编码不匹配。vi本身不处理编码转换,依赖系统locale设置。

5.2 vim与vi兼容性差异:/usr/bin/vi指向问题

现代Linux发行版中,vi命令通常链接到vim.tinyvim.basic,功能受限。实验报告要求的:%s全局替换在vim.tiny中可能不可用。

  • 检查vi真实身份
    ls -l /usr/bin/vi # 查看软链接指向 # 输出示例:/usr/bin/vi -> /etc/alternatives/vi ls -l /etc/alternatives/vi # 输出示例:/etc/alternatives/vi -> /usr/bin/vim.basic
  • 强制使用完整版vim
    vim report.txt # 直接调用vim,避免vi别名限制 # 或在~/.vimrc中添加: set nocompatible # 禁用vi兼容模式,启用全部vim特性

5.3 实验报告截图规范:必须包含的4个视觉要素

教师批阅时,仅凭文字描述无法验证操作真实性。合格截图需同时呈现:

要素说明验证方法
终端标题栏显示用户名、主机名、当前路径(如user@ubuntu:~/lab$pwd命令输出路径需与标题一致
vi状态栏底部显示文件名、行号、模式提示(如report.txt23L, 567C-- INSERT --模式提示必须与操作阶段匹配
命令历史上方可见最近执行的shell命令(如vi report.txtls -l证明操作在真实终端中完成
时间戳终端右下角或截图右下角标注日期时间(建议用date "+%Y-%m-%d %H:%M"避免提交过期作业

最后一步:在普通模式下输入:set showmode,确保底部始终显示当前模式(-- INSERT ---- VISUAL --等),这是vi操作规范性的最直接证据。

本文还有配套的精品资源,点击获取

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

SSM动漫之家论坛系统实战:数据建模、分页查询与事务管理

简介:面向Java Web课程设计、毕业设计与SSM框架入门者的《基于Java动漫之家系统设计与实现》文档,围绕动漫资讯平台这一典型场景,完整呈现从选题背景、技术选型到功能实现与测试的成体系方案。内容以SSM(Spring、SpringMVC、MyBat…

作者头像 李华
网站建设 2026/9/17 13:59:44

从PDF到LaTeX:数学公式提取与知识库构建实战

简介:这是一份面向考研学子的数学公式速查手册,专为应对研究生入学考试中的高等数学、线性代数、概率论等科目而整理,帮助考生解决公式繁多、易混淆、不会运用等痛点。资源包内为一份PDF电子文档,压缩包整体大小约3.16MB&#xff…

作者头像 李华
网站建设 2026/9/17 13:59:15

Ubuntu下无root导出微信聊天记录:SQLCipher解密与CSV分析

1. 这不是“破解”,而是一场标准的数据主权实践你有没有过这样的时刻:换新手机前夜,盯着微信里几千条聊天记录发呆——那些和家人确认年夜饭菜单的语音、和同事敲定项目节点的文字、甚至自己随手发的备忘录图片,全被锁在一台设备里…

作者头像 李华
网站建设 2026/9/17 13:58:23

Cursor 的 @Codebase 还在胡诌 jQuery 方案?TaoToken 这样改 Base URL

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/17 13:57:15

自动售货机PLC控制系统设计:可靠性、I/O映射与梯形图时序控制

简介:本资源是一份面向自动化、电气工程及相关专业初学者与课程设计学生的PLC控制系统实践文档,聚焦基于西门子S7-200系列PLC的自动售货机整套设计方案,解决从控制逻辑建模到硬件落地的关键问题。文档完整覆盖系统设计原理、I/O点分配、顺序功…

作者头像 李华
网站建设 2026/9/17 13:56:01

AI-ISP不是升级,而是图像处理范式的重构

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华