
简介这份PDF实验报告面向Linux初学者与高校学生聚焦Vi编辑器这一系统管理必备技能帮助读者从零掌握命令行环境下的文本编辑操作。报告围绕进入退出Vi、插入方式建文件、光标移动以及删除、复原、修改、替换等核心操作展开并系统讲解一般模式、编辑模式与命令模式三种状态的切换逻辑配合C程序编译纠错、检索替换等实验步骤加深理解。资源包内含1个PDF文件大小约422KB内容紧凑、结构完整适合作为课堂实验参考或自学练习材料。目前已有1381人学习下载读者可借此熟悉Vi/Vim的基本用法与常见命令为后续Linux配置文件修改和脚本编写打下基础也便于对照实验步骤反复练习、查漏补缺。1. 从一份实验报告说起vi 编辑器到底该练到什么程度很多人第一次接触 Linux 命令行编辑器都是从一份实验报告任务开始的老师要求把操作过程写成文档里面必须包含 vi 编辑器的启动、三种模式切换、保存退出这些步骤。任务本身不难但真正动手时你会发现卡住新手的从来不是「vi 是什么」而是「为什么我按了i还是打不了字」「为什么:wq敲进去没反应」「为什么退出来文件内容全乱了」。vi 编辑器是 Linux 系统里几乎必然存在的文本编辑工具服务器上没有图形界面时改配置、写脚本、看日志都绕不开它。这份实验报告类任务的价值不在于抄一遍模式说明而在于把 vi 练成肌肉记忆能盲切模式、能精准定位、能安全保存。下面我按「先立住原理、再动手复现、最后讲坑」的顺序把 vi 从实验报告里那几行步骤拆成一套真正能用的操作路径。2. vi 的三种模式与最小可用操作闭环vi 的设计核心是「模式」——同一个按键在不同模式下含义完全不同。新手翻车九成是因为没搞清楚当前处于哪个模式。这一章先把模式讲透再给出一套从打开文件到保存退出的最小闭环让你第一次就能完整跑通。2.1 命令模式、插入模式、末行模式各自负责什么启动 vi 后默认进入命令模式。这个模式下按键被当作「指令」而不是「文字」比如h j k l是移动光标x是删除当前字符dd是删除整行。你敲的字母不会出现在文件里这是新手最容易懵的地方——明明按了键屏幕却没变化。插入模式才是真正输入文字的地方。从命令模式按i在光标前插入、a在光标后插入、o在下一行新开一行插入都能进入。进入后屏幕底部通常会出现-- INSERT --或-- 插入 --提示看到这个提示才说明你可以打字了。按Esc退回命令模式。末行模式是从命令模式按:进入的光标会跳到屏幕最下方等你输入命令。:w保存、:q退出、:wq保存并退出、:q!强制退出不保存都是在这里执行的。注意:本身也是命令模式下的一个指令不是插入模式里打的冒号。三种模式的关系可以记成一句话命令模式是中枢插入模式管输入末行模式管文件级操作。任何模式下按Esc都能回到命令模式这是你的「后悔药」。2.2 用一条完整命令跑通「打开—编辑—保存—退出」先准备一个测试文件避免拿系统配置练手# 在用户目录下建一个练习文件写入两行初始内容 cd ~ printf line one\nline two\n vi_practice.txt # 用 vi 打开它 vi vi_practice.txt打开后你处于命令模式。按顺序执行下面这套动作每一步都对应一个明确目标1. 按 i - 进入插入模式底部出现 INSERT 2. 输入 hello vi - 光标前插入文字 3. 按 Esc - 回到命令模式 4. 按 o - 在当前行下方新开一行并进入插入模式 5. 输入 second line 6. 按 Esc - 回到命令模式 7. 输入 :wq 回车 - 保存并退出退出后用cat vi_practice.txt验证内容。如果看到你输入的文字都在说明整个闭环跑通了。这里的关键参数和动作含义i是 insert插入点在光标前o是 open line会在下方新建一行适合追加内容:wq是 write and quit 的缩写等价于先:w再:q。如果你只想保存不退出用:w只想退出且没改过文件用:q改乱了不想保存用:q!。提示练习阶段永远用:q!兜底。只要没保存文件内容不会变这是最安全的退出方式。2.3 光标移动与删除把「手不离主键区」练成习惯vi 的效率来自手不离开主键区。方向键虽然能用但很多终端环境下方向键会输出乱码所以老老实实练h j k lh左、l右、j下、k上。移动单位还有几个高频的w跳到下一个单词开头b回到上一个单词开头0跳到行首$跳到行尾gg到文件第一行G到文件最后一行数字G跳到指定行比如5G到第 5 行。删除操作里x删当前字符dd删整行数字dd删多行比如3dd删三行。删除后内容会进寄存器按p可以粘贴到光标后。这套「删除—粘贴」组合在调整配置行顺序时特别顺手。练习序列在命令模式下依次执行 gg - 回到第一行 dd - 删掉第一行 G - 到文件末尾 p - 把刚删的行粘贴到当前行下方 u - 撤销上一步 Ctrl r - 重做被撤销的操作u是 undoCtrl r是 redo这两个是编辑时的后悔药。很多人不知道 vi 支持多级撤销改错了连按u就能一路退回去。3. 把实验报告里的操作步骤变成可复现的练习脚本实验报告通常只列步骤不解释为什么。这一章把常见实验任务拆成可重复执行的练习让你不依赖报告也能自己练。核心思路是用脚本生成测试文件用固定操作序列验证结果把「凭感觉」变成「可对比」。3.1 用 bash 脚本批量生成练习文件手工建文件太慢写个小脚本一次生成多个测试样本#!/bin/bash # gen_practice.sh - 生成 vi 练习用的测试文件 mkdir -p ~/vi_lab cd ~/vi_lab # 生成一个 20 行的文本文件每行带行号 for i in $(seq 1 20); do echo this is line $i for vi practice sample.txt done # 生成一个简单的配置文件样本 cat app.conf EOF # app config sample port8080 debugfalse timeout30 EOF echo 生成完成 ls -l ~/vi_lab脚本逻辑说明mkdir -p保证目录存在且不报错seq 1 20生成 1 到 20 的序列是追加写入避免每次覆盖cat app.conf EOF用 heredoc 写入多行内容EOF加引号是为了防止变量被提前展开。运行bash gen_practice.sh后~/vi_lab下会有sample.txt和app.conf两个文件后续练习都基于它们。参数上行数20可以按需改大练跳转时文件越长越有感觉app.conf这种键值对格式贴近真实配置场景改起来比纯文本更有代入感。3.2 用固定操作序列验证「查找替换」是否生效查找替换是实验报告里常考的点。vi 的替换命令在末行模式执行格式是:范围s/原内容/新内容/标志。先看一个可验证的例子打开文件vi ~/vi_lab/sample.txt 操作序列 1. 输入 :%s/line/LINE/g 回车 - 把全文所有 line 替换成 LINE 2. 输入 :wq 回车 - 保存退出 3. 在 shell 里执行 grep -c LINE sample.txt - 统计替换后的行数: %s/line/LINE/g里%表示全文范围s是 substituteg是 global 表示一行内所有匹配都替换。如果只替换当前行去掉%如果只替换每行第一个匹配去掉g。替换前想确认匹配数量可以用:%s/line/LINE/gcc是 confirm会逐个询问是否替换按y确认、n跳过。验证环节很重要。很多人替换完直接:wq结果发现替换范围写错了文件已经改乱。稳妥做法是先:w保存再用grep或cat检查确认无误再:q。如果改错了只要没保存:q!就能全身而退。3.3 用可视模式做块选择与批量缩进实验报告里常要求「调整格式」可视模式就是干这个的。命令模式下按v进入字符可视模式按V进入行可视模式按Ctrl v进入块可视模式。选中内容后可以执行删除、复制、缩进等操作。练习给 sample.txt 前 5 行统一加两个空格缩进 1. vi ~/vi_lab/sample.txt 2. gg - 到第一行 3. V - 进入行可视模式 4. 4j - 向下选中 5 行含当前行 5. - 向右缩进一次 6. :wq - 保存退出是缩进是反缩进按一次缩进一个shiftwidth。默认shiftwidth是 8 个空格如果想改成 4在末行模式执行:set shiftwidth4。这个设置只对当前会话有效想永久生效需要写进~/.vimrc但很多服务器上装的是 vi 而非 vim~/.vimrc不一定被读取这点后面避坑章节会细说。块可视模式Ctrl v适合给多行同一列位置插入相同字符选中一个矩形区域后按I大写 i输入内容再按Esc内容会插入到每一行的选中位置。这个技巧在批量注释配置行时非常实用。4. 避坑与排查vi 新手最常翻车的 5 个场景vi 的坑大多和「模式状态」以及「终端环境」有关。下面 5 条是我见过频率最高的每条按现象、原因、解决三步写照着排查基本能覆盖大部分问题。4.1 按了 i 却打不了字或者打出来的是命令现象进入 vi 后按字母键光标乱跳或者执行了删除文字没输进去。原因你还在命令模式。命令模式下字母是指令不是输入内容。很多人以为打开文件就能直接打字忽略了要先按i。解决先按i、a或o进入插入模式确认屏幕底部出现-- INSERT --再打字。如果底部没提示可能是终端没显示状态行按Esc后重新按i然后直接输入观察字符是否出现在光标位置。养成「打字前先看模式提示」的习惯。4.2 输入 :wq 没反应或者提示 E492现象在插入模式下敲:wq结果这些字符被当成正文写进了文件或者在命令模式敲:wq后底部报错E492: Not an editor command。原因第一种是没退出插入模式:被当普通字符输入了。第二种通常是命令拼写错误比如把wq写成了wqa之外的东西或者中间多了空格。解决先按Esc确保回到命令模式再输入:wq。如果报E492检查冒号后有没有多余字符。实在退不出去按Esc后输入:q!强制退出重新打开文件检查内容。记住Esc是万能回退键连按几次总没错。4.3 方向键输出 A B C D 乱码现象在插入模式下按方向键屏幕上出现A、B、C、D之类的字符光标不动。原因这是终端类型和 vi 版本不匹配导致的。某些精简版 vi 不识别方向键的转义序列把按键拆成了单个字符。解决改用h j k l移动光标这是最稳的方式。如果一定要用方向键可以尝试在 shell 里执行export TERMxterm再打开 vi但不同环境效果不一。长期看练熟hjkl比折腾终端配置更省事。4.4 改完配置保存后服务起不来现象用 vi 改了某个配置文件:wq保存后重启服务失败报语法错误。原因vi 默认不会做语法检查多删了一个引号、少了一个括号保存时毫无提示。另外如果文件原本是只读的用:wq!强制保存可能覆盖了权限或内容。解决改配置前先备份cp app.conf app.conf.bak。改完不要急着:wq先:w保存然后用对应工具的语法检查命令验证比如很多配置可以用nginx -t、sshd -t这类方式检查。确认无误再退出。如果已经改坏用备份恢复别在错误文件上继续改。4.5 多人协作时文件被锁定或提示 swap 文件已存在现象打开文件时提示E325: ATTENTION说存在.swp文件或者提示文件正在被另一个进程编辑。原因vi 在编辑时会生成一个隐藏的交换文件如.app.conf.swp用于崩溃恢复。如果上次编辑异常退出比如终端断开swap 文件会残留下次打开就会警告。解决先确认没有其他人在编辑这个文件。如果确认安全按提示选择删除 swap 文件或者手动rm .app.conf.swp后再打开。如果确实有未保存的内容想恢复可以用vi -r app.conf尝试恢复。日常习惯是编辑完正常:wq退出减少 swap 残留。5. 从「会退出」到「用得顺」vi 进阶技巧与验证方法把基本操作跑通后真正拉开差距的是几个高频技巧和一套自我验证方法。这一章不讲大而全的命令表只挑我实际工作中用得最多、且能立刻验证效果的几招。第一招是「用标记跳转」。在命令模式下按m加一个字母比如ma就在当前位置设了一个名为a的标记。之后按a反引号加 a就能跳回这个位置按a单引号加 a跳到标记所在行的行首。读长配置文件时在关键段落设两三个标记来回跳转比翻页快得多。验证方法设完标记后按gg到文件头再按a看光标是否回到原处。第二招是「用寄存器做跨文件复制」。vi 里删除或复制的内容会进寄存器a表示使用名为a的寄存器。比如a3yy是把 3 行复制到寄存器 a然后在另一个文件里按ap粘贴。这个技巧在从一份配置抄片段到另一份时特别省事。验证方法复制后执行:reg查看所有寄存器内容确认目标寄存器里有你要的文本。第三招是「用:set临时调参」。常用参数包括:set nu显示行号、:set nonu关闭行号、:set ic搜索忽略大小写、:set noic区分大小写、:set list显示不可见字符排查多余空格和制表符时很有用。这些设置只对当前会话有效退出即失效。验证方法执行:set nu后看左侧是否出现行号执行:set list后看行尾是否出现$符号。第四招是「用:%!调用外部命令处理全文」。比如:%!sort对全文排序:%!grep -v ^#删掉所有注释行。这个能力让 vi 和 shell 工具链打通处理日志和清单时效率很高。验证方法先:w保存再执行过滤命令用u撤销对比前后差异。最后说验证习惯。我自己的做法是任何批量替换或删除操作前先:w存一次盘操作后立刻用grep或diff对比确认结果符合预期再继续。vi 没有自动保存也没有操作历史面板唯一的后悔药就是「没保存前用:q!」和「保存后用备份对比」。把这两个习惯固定下来比背一百条命令都管用。希望帮到你。本文还有配套的精品资源点击获取