Linux操作系统实验报告单(3)文本编辑器vi/vim

news2025/3/18 10:38:46

一、实验目的

  1. 掌握vi/vim编辑器的进入和退出方式
  2. 了解vi/vim的三种模式
  3. 熟练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核心技能,更培养了系统化思维与问题拆解能力。未来将持续探索自动化脚本编写、正则表达式优化等方向,向高效运维和开发的全栈能力迈进。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2317164.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Centos固定IP配置

虚拟机安装 安装vmware 网盘链接 安装centos7.5 网盘链接 安装教程自行查找 固定IP配置 对安装好的VMware进行网络配置,方便虚拟机连接网络,本次设置建议选择NAT模式,需要宿主机的Windows和虚拟机的Linux能够进行网络连接,…

二叉树算法题实战:从遍历到子树判断

目录 一、引言 二、判断两棵二叉树是否相同 思路 代码实现 注意点 三、二叉树的中序遍历 思路 代码实现 注意点 四、判断一棵树是否为另一棵树的子树 思路 代码实现 注意点 ​编辑 五、补充 一、引言 作者主页:共享家9527-CSDN博客 作者代码仓库&am…

学习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…

【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 命令格式 …

MATLAB 控制系统设计与仿真 - 27

状态空间的标准型 传递函数和状态空间可以相互转换,接下来会举例如何有传递函数转成状态空间标准型。 对角标准型 当 G(s)可以写成: 即: 根据上图可知: 约当标准型 当 G(s)可以写成: 即: 根据上图…

linux 命令 cp

cp 是 Linux 中用于复制文件和目录的命令,基本功能是将源文件或目录复制到目标位置 基本语法 cp [选项] 源文件 目标文件 cp [选项] 源文件1 源文件2 ... 目标目录 常用选项 选项说明-i交互模式(覆盖前询问确认)-r 或 -R递归复制目录&#…

蓝桥杯高频考点——进制转换

进制转换 二进制转十进制代码演示 十六进制转十进制代码演示 十进制转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. [快速…

使用OBS进行webRTC推流参考

参考腾讯云官方文档: 云直播 OBS WebRTC 推流_腾讯云 说明非常详细,分为通过WHIP和OBS插件的形式进行推流。 注意:通过OBS插件的形式进行推流需要使用较低的版本,文档里有说明,需要仔细阅读。

(链表)面试题 02.07. 链表相交

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后&#xff…

Python----数据可视化(Pyecharts三:绘图二:涟漪散点图,K线图,漏斗图,雷达图,词云图,地图,柱状图折线图组合,时间线轮廓图)

1、涟漪特效散点图 from pyecharts.globals import SymbolType from pyecharts.charts import EffectScatter from pyecharts.faker import Faker from pyecharts import options as opts from pyecharts.globals import ThemeType # 绘制图表 es (EffectScatter(init_optsop…

IP风险度自检,互联网的安全“指南针”

IP地址就像我们的网络“身份证”,而IP风险度则是衡量这个“身份证”安全性的重要指标。它关乎着我们的隐私保护、账号安全以及网络体验,今天就让我们一起深入了解一下IP风险度。 什么是IP风险度 IP风险度是指一个IP地址可能暴露用户真实身份或被网络平台…

数据结构与算法-图论-拓扑排序

前置芝士 概念 拓扑排序(Topological Sorting)是对有向无环图(DAG,Directed Acyclic Graph)的顶点进行排序的一种算法。它将图中的所有顶点排成一个线性序列,使得对于图中的任意一条有向边 (u, v)&#x…

Gan网络公式了解

Gan网络 生成器和判别器是亦敌亦友的关系 对于生成模型,损失函数很难定义->所以我们可以将生成模型的输出交给判别模型进行处理,来分辨好坏。 生成器的损失是通过判别器的输出来计算的,而判别器的输出是一个概率值,我们可以通过…

解决linux mysql命令 bash: mysql: command not found 的方法

首先得知道mysql命令或mysqladmin命令的完整路径 比如mysql的路径是: /usr/local/mysql/bin/mysql,我们则可以这样执行命令: ln -s /usr/local/mysql/bin/mysql /usr/bin © 著作权归作者所有,转载或内容合作请联系作者 喜欢的朋友记得点…