Linux操作系统实验报告单(3)文本编辑器vi/vim
一、实验目的
- 掌握vi/vim编辑器的进入和退出方式
- 了解vi/vim的三种模式
- 熟练vi/vim的操作命令
二、实验内容
1.在家目录下新建一个名为“vitest_name”(“name”为学生姓名拼音)的目录。
●创建用户目录命令:sudo mkdir /home/vitest_lw3613
●原理:mkdir命令用于创建目录,\~表示当前用户的家目录路径。若需递归创建多级目录,需添加-p参数。
●验证:通过ls \~确认目录存在。
2.执行复制命令,将文件/etc/rsyslog.conf复制到vitest_name目录下。
●复制系统配置文件命令:sudo cp /etc/rsyslog.conf /home/vitest_lw3613/
●原理:cp命令实现文件复制,需指定源文件路径和目标目录。
●权限说明:普通用户需对/etc/rsyslog.conf有读取权限,否则需使用sudo提权。
3.使用vi/vim打开vitest_lw3613 目录下的rsyslog.conf文件,并完成以下操作:
(1)指出该文件中设置imklog的所在行
●命令模式输入/imklog,按Enter启动正向搜索。
●使用n跳转到下一个匹配项,N返回上一个。
●注意:若需记录行号,可在命令模式输入:set nu显示行号。
(2)将光标移到该行,并复制该行内容
●光标定位到目标行后,输入yy复制整行。
●扩展:3yy可复制从当前行开始的3行内容(下面是复制三行的示例)。

(3)将复制内容粘贴到最后一行
●输入G跳转至文件末尾,按p将内容粘贴到下一行(默认行为)
(4)撤销上一步的粘贴动作
●按u撤销最后一次操作。
●重做:若误撤销,可通过Ctrl + r恢复。
(5)将光标移到“#Everybody gets……”,删除该行
●定位到#Everybody gets...所在行,按dd删除整行。
●替代方案:使用:g/^#Everybody/d全局删除所有匹配行。
(6)存盘但不退出
●命令模式输入:w,文件即时保存但保持编辑状态
:●注意输入命令:wq的话是保存然后退出,不能保持编辑状态
(7)将光标移至首行,并输入你的学号姓名等信息
●输入gg跳转至首行,按i在首行上方插入新行,如下图。
●输入学号、姓名等信息后,按Esc返回命令模式
(8)向下查找字符串“Directory”
●向下查找Directory:输入:/Directory并回车,具体操作结果如下图

(9)向上查找刚才新添加的姓名学号字符串
●向上查找姓名学号:输入:?姓名学号并回车,使用N反向遍历,具体操作结果如下图。

●高亮优化:通过:set hls启用搜索结果高亮显示。
(10)强制退出vi/vim,不存盘
●输入:!q忽略所有修改并强制退出编辑器
●输入:!wq是强制保存并且退出
●如果你不想加!来强制退出vi/vim,那么你在进入vim编辑时要以root权限编辑:例如命令:sudo vim rsyslog.conf
三、实验总结
1. 核心技能掌握与认知提升
(1)Linux命令行操作逻辑的深化理解:
通过mkdir和cp命令的实践,理解了路径参数的重要性。例如:
●绝对路径与相对路径:\~/vitest_zhangsan中的\~表示用户家目录,而/etc/syslog.conf为绝对路径,需注意路径符号的适用场景。
●权限管理意识:普通用户复制系统文件时可能因权限不足失败,需主动使用sudo提权或检查文件所有权(ls -l)。
(2)vim编辑器核心能力的突破:
●多模式切换:深刻体会命令模式(移动、复制)、插入模式(编辑文本)、末行模式(保存退出)的差异。例如,在插入学号信息时,需先通过O或i进入插入模式,完成后必须按Esc返回命令模式才能执行保存操作。
●高效导航技巧:gg(跳转首行)、G(跳转末行)、/和?(双向搜索)大幅提升文件浏览速度,尤其适用于大型配置文件。
●撤销与重做机制:u(撤销)和Ctrl+r(重做)的灵活使用,降低了误操作风险。例如,误粘贴后迅速撤销,避免错误留存。
2. 操作难点与问题剖析
(1)权限管理与提权操作:
●问题场景:初次执行cp /etc/syslog.conf时因权限不足报错Permission denied。
●解决方案:通过sudo cp提权,并理解/etc目录的系统保护性质。
●反思:需养成检查文件权限的习惯(ls -l),区分用户权限与系统保护文件。
(2)vim模式切换的误操作:
●典型错误:在插入模式下尝试执行yy复制命令,导致输入字符yy而非触发复制操作。
●改进方法:强化模式意识,通过状态栏(-- INSERT -- 提示)或光标形状(如块状与线状)快速识别当前模式。
(3)字符串搜索的精准性:
●问题场景:搜索mail时可能匹配到EMAIL等无关内容(若未区分大小写)。
●优化技巧:
①使用/\Cmail强制区分大小写(\C表示Case-sensitive)。
②通过:set hls(高亮搜索)直观定位所有匹配项。
3. 技能应用与未来学习方向
(1)运维场景的实战价值:
●配置文件编辑:掌握vim操作后,可快速修改Nginx、Apache等服务的配置文件,例如调整日志路径或注释无用模块。
●日志分析基础:通过本实验对syslog.conf中mail、authpriv等日志规则的理解,为后续分析/var/log日志文件奠定基础。
(2)进阶学习计划:
●vim高阶功能:
①宏录制(Macro) :通过qa开始录制宏,q结束,@a执行,用于重复性编辑任务。
②分屏编辑::vsp(垂直分屏)、:sp(水平分屏),同时编辑多个文件。
●Shell脚本整合:将vim操作写入脚本,例如自动插入文件头注释:
| #!/bin/bash vim -c "normal ggO// 作者:张三" -c "wq" file.txt |
●正则表达式应用:结合:%s/old/new/g实现批量替换,例如将文件中所有error替换为ERROR。
4. 对Linux系统设计的思考
●“一切皆文件”理念的实践印证:
从syslog.conf的配置中看到,Linux将日志分类(mail、authpriv等)抽象为文件路径,体现了通过文件接口统一管理资源的哲学。
●命令行与GUI工具的取舍:
在高效运维场景下,命令行操作(如vim)的速度远超GUI工具,尤其在远程服务器管理中不可或缺。
5. 实验对个人能力的长期影响
●自主解决问题能力的提升:
通过查阅man vim、在线文档(如vimtutor)解决操作疑惑,培养了技术自学能力。
●细节把控意识的增强:
例如,在插入个人信息时需精确到行首,避免因空格错位导致配置语法错误。
●跨平台技能迁移:
vim的快捷键逻辑(如dd删除行)与VS Code、IntelliJ等编辑器的Vim插件兼容,未来可无缝衔接开发环境。
总结:本次实验不仅强化了Linux基础操作和vim核心技能,更培养了系统化思维与问题拆解能力。未来将持续探索自动化脚本编写、正则表达式优化等方向,向高效运维和开发的全栈能力迈进。
相关文章:
Linux操作系统实验报告单(3)文本编辑器vi/vim
一、实验目的 掌握vi/vim编辑器的进入和退出方式了解vi/vim的三种模式熟练vi/vim的操作命令 二、实验内容 1.在家目录下新建一个名为“vitest_name”(“name”为学生姓名拼音)的目录。 ●创建用户目录命令:sudo mkdir /home/vitest_lw3613 …...
linux(centos8)下编译ffmpeg
必要依赖 # centos8有些找不到依赖包,需要手动下载源码编译 sudo dnf install -y epel-release sudo dnf install -y git gcc gcc-c make nasm yasm \libtool autoconf automake cmake \bzip2 bzip2-devel zlib-devel \xz xz-devel x264-devel x265-devel \openssl…...
Centos固定IP配置
虚拟机安装 安装vmware 网盘链接 安装centos7.5 网盘链接 安装教程自行查找 固定IP配置 对安装好的VMware进行网络配置,方便虚拟机连接网络,本次设置建议选择NAT模式,需要宿主机的Windows和虚拟机的Linux能够进行网络连接,…...
AI自动获客系统源码
一、AI自动获客的显著优势 在当今商业环境中,AI自动获客技术正逐渐成为企业获客的新宠。相较于传统的获客方式,它展现出诸多显著优势。首先,AI技术能够通过智能分析和精准匹配,快速找到潜在客户,从而大大提高获客效率…...
3.17[Q]CV Bézier curve
我是计算机视觉学生,?详细解释,越细节越好 我是计算机视觉学生,如何使用de Casteljau 算法来绘制由 4 个控制点表示的 Bzier 曲线?原理是什么?工作流程是什么?详细解释,越细节越好…...
K8S学习之基础三十一:k8s中RBAC 的核心概念
Kubernetes (k8s) 中的 RBAC(Role-Based Access Control,基于角色的访问控制)是一种用于管理用户和服务账户对集群资源访问权限的机制。RBAC 允许管理员通过定义角色(Role)和角色绑定(RoleBindingÿ…...
二叉树算法题实战:从遍历到子树判断
目录 一、引言 二、判断两棵二叉树是否相同 思路 代码实现 注意点 三、二叉树的中序遍历 思路 代码实现 注意点 四、判断一棵树是否为另一棵树的子树 思路 代码实现 注意点 编辑 五、补充 一、引言 作者主页:共享家9527-CSDN博客 作者代码仓库&am…...
第8章 信息安全工程(一)
8.1 信息安全管理 8.1.1 保障要求 网络与信息安全保障体系中的安全管理建设,通常需要满足以下 5 项原则: (1)网络与信息安全管理要做到总体策划,确保安全的总体目标和所遵循的原则。 (2)建立相关组织机构,要明确责任部门&…...
学习threejs,使用MeshFaceMaterial面材质容器
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.MeshFaceMaterial 二…...
Git 实战指南:本地客户端连接 Gitee 全流程
本文将以 Gitee(码云)、系统Windows 11 为例,详细介绍从本地仓库初始化到远程协作的全流程操作 目录 1. 前期准备1.1 注册与配置 Gitee1.2 下载、安装、配置客户端1.3 配置公钥到 Gitee2. 本地仓库操作(PowerShell/Git Bash)2.1 初始化本地仓库2.2 关联 Gitee 远程仓库3. …...
Spring Cloud 中的服务注册与发现: Eureka详解
1. 背景 1.1 问题描述 我们如果通过 RestTamplate 进行远程调用时,URL 是写死的,例如: String url "http://127.0.0.1:9090/product/" orderInfo.getProductId(); 当机器更换或者新增机器时,这个 URL 就需要相应地变…...
通过 SVG 使用 AI 生成理想图片:技术实现与实践指南
文章目录 1. SVG 与 AI 的结合:技术价值2. 技术原理:AI 如何生成 SVG?3. 实现步骤:从需求到图形3.1 定义需求3.2 使用 AI 生成 SVG3.3 验证与调整 4. 代码解析:实现科技感的关键4.1 渐变背景4.2 网格线条4.3 发光六边形…...
【AI学习从零至壹】Pytorch神经⽹络
Pytorch神经⽹络 神经网络简介神经元激活函数 神经网络神经⽹络的⼯作过程前向传播(forward) 反向传播(backward)训练神经⽹络 Pytorch搭建并训练神经⽹络神经⽹络构建和训练过程数据预处理构建模型优化器&提取训练数据训练样本 神经网络简介 神经元 在深度学习中&#x…...
设计模式-对象创建
对象创建 前言1. Factory Method1.1 模式介绍1.2 模式代码1.2.1 问题代码1.2.2 重构代码 1.3 模式类图1.4 要点总结 2. Abstract Factory2.1 模式介绍2.2 模式代码2.2.1 问题代码2.2.2 重构代码 2.3 模式类图2.4 要点总结 3. Prototype3.1 模式介绍3.2 模式代码3.3 模式类图3.4…...
谈谈你对前端工程化的理解,它包含哪些方面
大白话谈谈你对前端工程化的理解,它包含哪些方面 前端工程化其实就是把前端开发变得更规范、更高效、更易于维护的一套方法和流程。就好比你盖房子,不能随便瞎盖,得有设计图纸、施工标准、分工合作,前端工程化也是类似的道理。 项…...
JSON数据格式介绍
2.5 JSON 2.5.1.JSON格式的用途 在开发中凡是涉及到『跨平台数据传输』,JSON格式一定是首选 2.5.2.JSON格式的说明 1.JSON数据两端要么是{},要么是[] {}定义JSON对象[]定义JSON数组 2.JSON对象的格式是:json {key:value,key:value,...,ke…...
java的WeakHashMap可以用来做缓存使用?强软弱虚四种引用对比
在 Java 中,引用(Reference)机制用于管理对象的生命周期和垃圾回收。Java 提供了四种类型的引用:强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Refer…...
【AVRCP】Notification PDUs 深入解析与应用
目录 一、Notification PDUs 概述 二、GetPlayStatus:同步查询播放状态 2.1 命令功能与应用场景 2.2 请求格式(CT → TG) 2.3 响应格式(TG → CT) 2.4 注意事项 2.5 协议实现示例(伪代码) 三、RegisterNotification:异步事件订阅 3.1 命令概述 3.2 命令格式 …...
从过拟合到强化学习:机器学习核心知识全解析
Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...
【MySQL基础-9】深入理解MySQL中的聚合函数
在数据库操作中,聚合函数是一类非常重要的函数,它们用于对一组值执行计算并返回单个值。MySQL提供了多种聚合函数,如COUNT、SUM、AVG、MIN和MAX等。这些函数在数据分析和报表生成中扮演着关键角色。本文将深入探讨这些聚合函数的使用方法、注…...
Lora 中 怎么 实现 矩阵压缩
Lora 中 怎么 实现 矩阵压缩 1. 导入必要的库 import torch import re from datasets import Dataset from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments, Trainer, \get_cosine_schedule_with_warmup, EarlyStoppingCallback from peft...
MATLAB 控制系统设计与仿真 - 27
状态空间的标准型 传递函数和状态空间可以相互转换,接下来会举例如何有传递函数转成状态空间标准型。 对角标准型 当 G(s)可以写成: 即: 根据上图可知: 约当标准型 当 G(s)可以写成: 即: 根据上图…...
linux 命令 cp
cp 是 Linux 中用于复制文件和目录的命令,基本功能是将源文件或目录复制到目标位置 基本语法 cp [选项] 源文件 目标文件 cp [选项] 源文件1 源文件2 ... 目标目录 常用选项 选项说明-i交互模式(覆盖前询问确认)-r 或 -R递归复制目录&#…...
从FFmpeg命令行到Rust:多场景实战指南
FFmpeg作为功能强大的多媒体处理工具,被广泛应用于视频编辑、格式转换等领域。然而,直接使用FFmpeg的命令行界面(CLI)可能会遇到以下挑战: 命令复杂度高:FFmpeg的命令行参数众多且复杂,初学者可…...
蓝桥杯高频考点——进制转换
进制转换 二进制转十进制代码演示 十六进制转十进制代码演示 十进制转K进制代码演示 任意进制之间的转换代码演示 二进制转十进制 代码演示 // 定义函数 calc,用于将字符转换为对应的数值 int calc(char c) {// 若字符 c 大于等于 9(注:此处…...
【算法百题】专题七_分治快排_专题八_分治归并
文章目录 前言分治快排题:043. [颜⾊分类(medium)](https://leetcode.cn/problems/sort-colors/description/)分析 044. [快速排序(medium)](https://leetcode.cn/problems/sort-an-array/description/)分析 045. [快速…...
DOM4J解析XML, 修改xml的值
1. 引入pom依赖 <dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.3</version> </dependency> 2. 解析xml, 修改xml节点的值 import org.apache.commons.io.IOUtils; import org.dom4…...
3.16[A]FPGA
FPGA的工作原理是通过配置存储器中的数据来控制可编程逻辑单元和互连资源,从而实现用户定义的逻辑功能。用户可以通过硬件描述语言(HDL)编写代码,然后通过综合、映射、布局布线等步骤生成配置数据,最后将这些数据加载到…...
ssh转发笔记
工作中又学到了,大脑转不过来 现有主机A,主机B,主机C A能访问B,B能访问C,A不能访问C C上80端口有个服务,现在A想访问这个服务,领导让用ssh转发,研究半天没找到理想的语句…...
使用OBS进行webRTC推流参考
参考腾讯云官方文档: 云直播 OBS WebRTC 推流_腾讯云 说明非常详细,分为通过WHIP和OBS插件的形式进行推流。 注意:通过OBS插件的形式进行推流需要使用较低的版本,文档里有说明,需要仔细阅读。...
