网络安全快速入门(十一)vi/vim

news2024/7/6 18:40:48

11.1 了解vi

前面我i们已经在基础命令中大致了解了vi,本章我们针对vi来细讲一下,vi和vim

11.1.1 什么是vi/vim?

vi和vim,都是一个模块化的文本编辑工具,换句话讲,通过vi下的一系列的命令,可以实现对文本文件的大多数写入与更改。vimvi的增强版 功能一致,可视化效果更好一些。去鼠标化 编辑更加方便 可定制化同时,因为vi是一个模块,因此可大致分为以下三个模块

  • 查看模式
  • 插入模式·
  • 末行模式

还有一种不常用的模式:替换模式

我们一个一个来讲

11.2 进入vi

进入vi命令格式如下:

vi 文件名

(这里要注意的是,vi只能进入一般文件,不能进入目录,若目标没有文件名的文件,泽慧创建一个新的一般文件)

这里我们来看例子

现在根目录有上述文件:

1.txt  anaconda-ks.cfg    passwd (且都是一般文件)

我们现在进入passwd文件

vi passwd

看结果

我们退出,再vi一个2.txt

可以看到,这个文件什么都没有,这是新创建了一个普通文件,文件名为2.txt

我们查看一下

出现文件名2.txt。

小总结

(1)如果这个文件是存在的,而且是文本文件,那么vi就会直接打开这个文件

(2)如果这个文件是存在的,而且是目录文件,那么vi也可以打开这个文件,但是无法正常的保存

(3)这个文件不存在 ,vi会自动的创建一个新的空文件

        我们现在了解到了怎么进入vi模块了,接下来我们来详细了解vi的三个常用模式和一个不常用模式

11.3 vi模式

上面我们了解到,xi有三个模式,分别为编辑模式插入模式末行模式和一个不常用模式替换模式,四者关系如下:

我们先来说查看模式

11.3.1 查看模式

        这是进入文档后的默认模式,我们再执行vi或vim命令之后即可进入该模式。这个模式作用也很多,具体如下:

  •  删除 复制 剪切 黏贴 替换单个字符等一些列针对内容的操作
  • 查看模式也是其他模式的中转站,通过该模式可以进入其他模式
        (注意:其他模式不能互相切换,必须进入查看模式才可以进行切换)
复制内容
  • 单行复制 yy
  • p - 小:将剪切/复制的内容,粘贴到当前所在的行的下一行

    P - 大:将剪切/复制的内容,粘贴到当前所在的行的上一行

  • 多行复制 数字yy
  • 我们来看一下这个操作,如下图,普通文本文件下有以下内容
我们对五到七行内容进行粘贴,操作如下
光标移动至第五行,直接输入3yy;这是我们可以看到下面出现下图字样
说明复制成功,接下来我们光标移动至最后一行之后直接小写p
看结果
可以发现,我们下面加了三行,正是我们复制的那三行,完成!下一个内容
剪切内容(删除内容)
  • 单行剪切(删除) dd
  • 多行剪切(删除) 数字 dd
  • 光标之前的一个字符到行首的内容 d0
  • 光标到行尾的内容 d$
  • 删除光标所在位置的词组 dw
  • x 删除一个字符
剪切和复制本质上来说没有什么区别,唯一的区别是赋值内容保留了原来的文本文件,剪切内容并没有保留原来的文本文件,因此在执行剪切模式未进行粘贴时,就相当于进行删除操作了。
我们还是来看例子了解,
还是上述文件,我们删除第六行。操作如下:
光标移动至第六行,dd
看结果
      
第六行的I LOVE YOU消失,完成!
移动光标
  • h 左移光标
  • l 右移光标
  • j 下移光标
  • k 上移光标
  • H 移动到当前屏幕的第一行,注意不是文档的第一行
  • L 移动到当前屏幕的最后一行,注意不是文档的最后一行
  • M 移动到当前屏幕的中间行
移动光标,这里我们只提一下,小键盘的8,6,2,4也可以进行光标的移动,同时方向键也可以进行光标的移动!
翻页操作
  • ctrl+f 下翻一页
  • pgdn 下翻一页
  • ctrl+b 上翻一页
  • pgup 上翻一页
  • ctrl+d 上翻半页
  • ctrl+u 下翻半页

这里我们也不多赘述,大家可以在/etc/passwd玩一玩v-v

定位跳转操作
  • #G 数字+G ,定位到文档的指定行
  • G 定位到文档的最后一行
  • gg 定位到文档的第一行
  • w 跳转到后一个词组的词首字母
  • b 向前跳转一个单词
这些操作主要实现跳转功能,可以让光标快速跳转到你想要的地方,省的一页一页往下翻或者一条一条读,但前提是你需要知道他是哪一行!!
还是举个例子吧,还是passwd文件,我们进行操作
如上图,现在光标唯一第一行,我们需要让他快速跳转到第十行,需要进行以下操作:
直接输入10gg,我们看结果
可以看到,已经进行了跳转,命令完成!
撤销功能
u 撤销上一步操作
如果我们在实操中发现我们删错了,在未进行保存的情况下可使用上述命令进行撤销操作!!!
还是拿上面的passwd来举例,我们将第一行删除之后的结果如图
现在我们去撤销,需进行下面的操作:
查看模式下直接按u即可!
看结果
ok,下一步!
查询功能
  • 输入/ 想要查询的字段 搜索功能 
  • n 向下跳转一个搜索关键词
  • N 向上跳转一个搜素关键词
我们直接进行举例,还是passwd表,我们现在要查询sbin,则需要进行以下操作:
查看模式输入/sbin:
可以看到左下角有我们输入的内容,接下来我们看结果:
注:(查询功能仅仅在vim模式下有用!!!!)
另外需要注意:
  • cat、head、tail、more、less 和vi 都可以查看文件中的内容
  • 但是vi,主要是用于对文件内容进行修改
  • 而其他的命令是查看文件的内容
查询功能我们已经有了一个大概的了解,接下来我们来看插入模式

11.3.2 插入模式

插入模式,就是对文件里面的文本内容进行编辑和修改,那么我们先从进入插入模式开始了解。

进入插入模式·

在查看模式输入以下字符即可进入插入模式操作

  • a:在光标所在位置后输入
  • i:在光标所在位置前输入
  • o:换行进行输入
  • A:光标所在位置行尾进行输入
  • I:光标所在位置行首进行输入
  • O:在光标所在上一行进行输入

(注:必须是查看模式才可以进入此模式,另外如果想要退出输入模式按esc即可切换至查看模式)

这个模式实在不知道该咋演示,就不做演示了,直接进入下一个模块!!

11.3.3 末行模式

末行模式的功能:

  •  1. 主要是用于执行各种的命令
  • 2. 显示行号
  • 3. 保存、退出
  • 4. 行跳转

说白了,就是用于执行一些命令或者与bash进行交互,或者执行一系列自动化指令

进入末行模式:

shift+冒号”:“

(注意,冒号必须为英文冒号才可以进入末行模式!!!)

末行模式操作:
关于保存退出:
  • 保存 :w
  • 退出 :q
  • 保存退出:wq
  • 强制保存退出 :wq!
  • 强制退出 :q!
  • 保存退出快捷方式 :x ZZ shift+zz
vi在大部分情况下只能通过末行模式或者快捷方式才可以进行保存退出,这里不多进行赘述,也不举例讲解,各位可以自己实操一下!!
关于命令执行:
  • 命令执行 :!command [option] 参数
  • 读取命令执行结果 :r !command [option] 参数
  • 读取其他文件的内容: r /path/file
这里我们通过举例来大概看一下命令执行的具体操作,例子如下:
现有一个空文件1.txt,现在要求将passwd的内容复制至1.txt下,我们需要进行以下操作
在末行模式下输入以下内容
r ! cat passwd

我们来看结果

我们再来举一个例子,将当前时间放至文件最后一行

操作如下:

r ! date

我们来看结果

时间没毛病,ok了!!下一个

关于行号及高亮:
  • 行号:set nu
  • 取消行号:set nonu
  • 取消高亮: nohl
  • 显示高亮: hl

读者所用的一直是显示行号,如果不想显示行好的话,则需要进行以下操作

在末行模式输入以下内容:set nonu 即可取消行号

如下图:

范围替换内容:
指定范围替换
  • 1,3 s/bin/cin/g :起始行,结束行 s/查找内容/替换内容/g g表示全部替换

全文范围替换

  • :% s/nologin/login/g %表示全文

特殊的替换

  • :% s#/123#@123#g #作为替换命令格式分隔符

举个例子来结束末行模式,现有文件1.txt内容如下图:

将1.txt的sbin替换为225,需进行如下操作

末行模式下输入下面指令

% s/sbin/225/g

看结果

这里需要注意的是,如果内容中有"/"的情况下,分隔符可以使用其他符号进行替换,但不能使用空格进行替换!!!!

11.3.4 替换模式

因为不太常用,这里我们简单提一下,替换模式与插入模式的用法大致相同,不同的是,替换模式下在光标前输入一个字符时,光标后面会自动删除一个字符,以此来达到替换的效果!!!

替换模式的进入及退出方法:

  • 进入方法 R
  • 退出方法 esc

完成,下一个

11.4 vim配置文件的使用

通过修改配置文件,我们可以定义一些配置文件的命令。例如进入文件显示行号,显示高亮或者设置tab时的空格字数等操作,具体操作如下

配置文件的位置
  • 全局配置文件
    •  /etc/vimrc (作用范围是系统当中所有的用户 一般情况不建议使用)
  • 用户配置文件
    • 位置是在当前用户的家目录下 .vimrc ,(建议使用的文件。)
注意 : 用户 vim 配置文件有可能不存在需要手工创建。
添加内容如下:
set nu(显示行号)

11.5vi处理文件常见的错误情况

第一种:用vi打开文件后,发现文件是空白的

        原因1:路径错误

        原因2:文件名错误

        原因3:文件被删除

第二种:编辑的文件无法保存

        原因1:我们用vi打开的是一个目录,而不是一个文件

        原因2:没有权限进行写操作【主要是针对普通用户会有这个问题】

第三种:(如下图)

这里产生警告的原因:

1. 用vi打开文件后,写入了内容,但是这个文件被意外关闭了【例如 直接关闭终端】

2. 文件被意外关闭,会产生一个崩溃缓存文件,这个文件是一个隐藏文件,而且这个文件的后缀是 .sw

3. 就是由于这个崩溃缓存文件的存在,才导致每次打开文件的是有一个警告信息

产生第三种情况的解决方法:

删除所有的崩溃缓存文件,就不再产生警告了  

好了,今天的内容就到这里了,讲得不好还请各位见谅,如有疑问或错误请评论区联系作者,最后感谢各位的观看,再见!!

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

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

相关文章

群晖NAS本地搭建Bitwarden密码管理服务并实现远程同步密码托管

文章目录 1. 拉取Bitwarden镜像2. 运行Bitwarden镜像3. 本地访问4. 群晖安装Cpolar5. 配置公网地址6. 公网访问Bitwarden7. 固定公网地址8. 浏览器密码托管设置 Bitwarden是一个密码管理器应用程序,适用于在多个设备和浏览器之间同步密码。自建密码管理软件bitwarde…

如何用时尚新姿讲好中国品牌故事?

品牌建设在推动高质量发展中扮演了双重角色,既是高质量发展的重要“承载者”,也是强有力的“助推器”。5月10日-11日,中国时尚品牌URBAN REVIVO(以下简称UR)以中国品牌日为起点,联合天猫超级品牌日&#xf…

paddle ocr v4 2.6.1实战笔记

目录 效果图: 安装 模型权重是自动下载,如果提前下载会报错。 识别orc,并opencv可视化结果,支持中文可视化 官方原版预测可视化: 效果图: 安装 安装2.5.2识别结果为空 pip install paddlepaddle-gpu…

操作系统实战(三)(linux+C语言实现)

实验目的 加深对进程调度概念的理解,体验进程调度机制的功能,了解Linux系统中进程调度策略的使用方法。 练习进程调度算法的编程和调试技术。 实验说明 1.在linux系统中调度策略分为3种 SCHED_OTHER:默认的分时调度策略,值为0…

弹幕播放器源码

下 载 地 址 : runruncode.com/php/19761.html 1. 将弹幕播放器的源码上传到服务器。 2. 通过访问你的域名/dmku/install/index.php来进行弹幕库的安装。 3. 修改播放器后台的密码,配置文件为/config.php,并配置json接口。 4. 后台账号为…

国内环境也可以开发好玩的LLM应用 - 环境准备篇

在开发基于LLM(大语言模型)的AI应用前, 我们首先要准备好必要的环境. 主要就是Python环境以及大模型应用开发部署环境. 01 Python开发环境准备 Python开发环境有如下四种, 根据个人喜好选其一即可: 本地安装Python及IDE, 适合学习测试开发; 本地安装Python环境, 使用Jupyter …

享元模式详解

享元模式 1 概述 定义: ​ 运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似对象的开销,从而提高系统资源的利用率。 2 结构 享元(Flyweight )模式中存…

【卫星影像三维重建-全流程代码实现】点云Mesh重构

点云—>Mesh模型 1.介绍1.1 背景1.2 效果示意 2 算法实现2.1 依赖库2.2 实验数据2.3 代码实现2.4 实验效果 3.总结 1.介绍 1.1 背景 (1)本文主要内容是将三维点云(离散的三维点)进行表面重建生成Mesh网格,之前有篇…

UIKit常用API:Transform

需求 使用Transform系列的API,该API中提供了旋转、平移等功能。其中函数中带make的效果是只变化一次,不带make可变化多次。此外,还有恢复函数:CGAffineTransformIdentity。 代码实现 注意按钮绑定的是同一个响应事件&#xff0…

【AIGC】Mac Intel 本地 LLM 部署经验汇总(CPU Only)

书接上文,在《【AIGC】本地部署 ollama(gguf) 与项目整合》章节的最后,我在 ollama 中部署 qwen1_5-14b-chat-q4_k_m.gguf 预量化模型,在非 Stream 模式下需要 89 秒才完成一轮问答,响应速度实在是太慢,后续需要想办法…

Qt与QWebEngineView 交互-调试窗口-JS拓扑图完整示例参考

1:介绍: Qt与QWebEngineView的交互 简介之前文章解释过,链接在下面 传送门:Qt与QWebEngineView 交互完整示例参考_qt qwebview-CSDN博客 一般在使用这种方式时,可能会出现各种问题而不好调试,如果能够像…

【C++】继承相关(基类与派生类的继承关系以及细节整理)

目录 00.引言 01.继承的定义 02.基类和派生类对象 03.继承中的作用域 04.派生类的默认成员函数 05.友元、静态成员 00.引言 继承是面向对象编程中的一个重要概念,它的作用是创建一个新的类,该类可以从一个已存在的类(父类/基类&#x…

sipeed 的 MaixCam显示图片

WiFi联网后,把固件升级到最新 一根tpyc-c连接线为MaixCam供电,点击液晶屏settings 在WiFi中设置确保联网,在更新MaixPy中升级固件 可以选择国内源加速,将固件升级到最新版 MaixVision的操作 1,在MaixVision左下角…

谷歌Gboard应用的语言模型创新:提升打字体验的隐私保护技术

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

C语言 | Leetcode C语言题解之第87题扰乱字符串

题目: 题解: struct HashTable {int key;int val;UT_hash_handle hh; };void modifyHashTable(struct HashTable** hashTable, int x, int inc) {struct HashTable* tmp;HASH_FIND_INT(*hashTable, &x, tmp);if (tmp NULL) {tmp malloc(sizeof(st…

【数据结构与算法 刷题系列】合并两个有序链表

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:数据结构与算法刷题系列(C语言) 目录 一、问题描述 二、解题思路详解 合并两个有序链表的思路 解题的步…

HTML飘落的花瓣

目录 写在前面 HTML​​​​​​​简介 完整代码 代码分析 系列推荐 写在最后 写在前面 本期小编给大家推荐HTML实现的飘落的花瓣,无需安装软件,直接下载即可打开~ HTML​​​​​​​简介 HTML(Hypertext Markup Language&#xff…

【Linux】文件描述符和重定向

目录 一、回顾C文件 二、系统文件I/O 2.1 系统调用 open 2.2 标志位传参 2.3 系统调用 write 2.4 文件描述符fd 2.5 struct file 2.6 fd的分配规则 2.7 重定向 2.7.1 基本原理: 2.7.2 系统调用 dup2 2.8 标准错误 一、回顾C文件 文件 内容 属性 对…

阿里云OSS配置跨域及域名访问

1、配置跨域 进入对象存储OSS–>OSS存储桶–>数据安全–>跨域设置–>创建规则 2、配置跨域 Etag x-oss-request-id3、配置结果如下 4、数据源配置 切换到数据管理–>静态页面 配置根页面 保存结果如下 5、配置域名访问 绑定域名 添加txt记录 验证绑定 …

【CSP CCF记录】202109-2 非零段划分

题目 过程 思路 参考:http://t.csdnimg.cn/XRKTm STL库用法 unique用法 unique是STL中很实用的函数之一,需要#include(感谢各位提醒),下面来简单介绍一下它的作用。 unique的作用是“去掉”容器中相邻元素的重复…