Linux-- vi / vim 编辑器

news2024/9/23 15:28:17

       

目录

vi \ vim 编辑器的三种编辑模式

vi \ vim 的使用

        模式的切换

         命令模式下的命令

        底线模式


vi \ vim 是visual interface 的简称, 是linux中的经典文本编辑器, 同图形化界面中的文本编辑器一样, 但是vi是使用命令行来对文本进行编辑的最好选择

        vim是vi的加强版本, 兼容vi的所有指令, 不仅可以编辑文本, 而且还具有shell 程序编辑的功能, 可以不同颜色的字体来辨别语法的正确性, 极大地方便了程序的设计和编辑性

         简单来说, vi是老师的文字处理器, 不过功能已经非常齐全了, 但是还是有可以进步的地方, vim则可以说是程序开发的一项很好用的工具, 连vim的官方网站自己也说vim是一个程序开发工具, 而不是文字处理软件

vi里面有很多命令, 下面是他的键盘图:

vi \ vim 编辑器的三种编辑模式

  • 命令模式: 此模式下所敲的按键编辑器都理解为命令, 此模式下不能自由进行文本编辑
  • 输入模式: 也就是文本编辑模式, 插入模式, 此模式下可以自由对文件内容进行编辑
  • 底线命令模式: 以: 开始, 通常用于文件的保存 和 退出

vi \ vim 的使用

        模式的切换

我们首先在/Home/niceff目录中创建一个hello.txt文本文件:

然后使用vi 来打开这个文件:

        使用命令: vi hello.txt (如果这个文件存在, 那么就直接打开这个文件 , 如果没有这个文件 , 就创建一个新的文件)

下面是我们刚开始使用vi打开这个文件的样式, 他刚开始是处于命令模式:

此时我们按下键盘上的i键:
 此时我们进入了输入模式, 此时我们就可以编辑文件内容了

例如我们输入: hello world

此时可以通过键盘上的esc键, 退出输入模式, 回到命令模式:
 接下来进入底线命令模式:
在命令模式下, 按下 shift + ;键, 也就是输入冒号:, 就会进入底线命令模式:

 此时我们输入wq (w表示保存, q表示退出)

 于是就保存退出了, 同时我们使用cat命令来查看这个文件的内容是否被修改:

 可以看见成功修改了

         命令模式下的命令

         命令模式下, 敲击键盘的动作会被vi 或者vim是被为目录, 而不是输入字符, 比如我们在目录模式下按下i键, 就会进入输入模式, 而不是输入一个字符, 这个i就被当做了一个命令

        以下是命令模式下一些常用命令:

模式命令描述
命令模式i在当前光标位置进入输入模式
命令模式a在当前光标位置之后进入输入模式
命令模式I在当前行的开头进入输入模式
命令模式A在当前行的结尾进入输入模式
命令模式o在当前光标下一行进入输入模式
命令模式O在当前光标上一行进入输入模式
输入模式esc任何情况下输入esc都能会到命令模式

一个案例:

我们在Desktop目录下面创建一个test.txt文件, 并写入以下内容:

 使用vim + 文件, 使用vim打开文件:

打开的文件内容如下:
 当前进入的是命令模式, 在命令模式下, 可以使用键盘的↑↓←→, 也就是上下左右键来控制光标的移动.

当然也可以使用命令模式下的命令键来使光标移动:

  • j : 向下移动光标
  • k : 向上移动光标
  • l: 向右移动光标
  • h: 向左移动光标

在命令模式下输入i进入输入模式:

(或者使用下面这些命令)

还有如下命令 

 

 对于文本中的内容:

如果我们想搜索里面的内容, 可以在命令模式下点击斜杠 / 进入搜索模式:

 例如我们现在要搜索you这个单词:

在finalShell中会以黄色背景来高亮显示, 在CentOS中也是如此:

我们下次打开这个文件的时候, you还是高亮显示, 这个时候就可以键入:noh就可以消除高亮

在命令模式下的小n和大n, 也就是n和N对应着我们平时使用ctrl + f里面的上下箭头: 

 

 除了这些命令, 还有这些:

  •  dd: 删除当前行
  • ndd: 删除n行,例如:

上面的命令不一一介绍, 请读者自己实验

删除之后, 可以在命令模式下按下u, 进行撤销(按下u可以切换命令模式)

        底线模式

 在命令状态, 输入" : " 冒号, 就可以进入底线模式

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

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

相关文章

15-2.自定义组件的数据

目录 1 data与method 2 properties 2.1 基本使用 2.2 properties在小程序中可读可写 2.3 对properties使用setData() 3 数据监听器 observers 3.1 基本使用 3.2 同时监听多个变量 3.3 监听对象中属性某个属性的变化 3.4 监听对象中所有属性 4 纯数据字段…

【CSS】属性书写顺序

1.布局定位属性: display(元素类型建议第一个) position float(浮动) clear visibility overflow 2.自身属性: width height margin(外边距) …

我的内网渗透-Empire进阶(会话转移和剪贴板攻击)

剪贴版攻击 安装 下载网址 https://github.com/D4Vinci/PasteJacker 下载的两种方式 ①直接在windows中下载,然后解压完把文件夹传到kali中进行安装 ②只接在kali中下载 git clone https://github.com/D4Vinci/PasteJacker #下载压缩包unzip PasteJacker-maste…

C语言之运算符

C语言运算符 文末附运算符的优先表和ASCII表 一、算术运算符 加()减(—)乘(*)除(/)模(余)运算符(%):不允许出现浮点型,…

这是一颗经过计划生育的树?

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 &#x1f…

Hadoop的shuffle过程及调优

MapReduce 中的Shuffle 发生在 map 输出到 reduce 输入的过程,它的中文解释是 “洗牌”,顾名思义该过程涉及数据的重新分配,主要分为两部分: map 任务输出的数据分组、排序,写入本地磁盘。reduce 任务拉取排序。 由于…

基于Java+Swing+Mysql实现人事管理信息系统

基于JavaSwingMysql实现人事管理信息系统 一、系统介绍二、功能展示1.用户登陆2.用户注册3.员工信息添加、删除4.员工信息查询、修改5.部门管理6、员工考核 三、数据库四、其它1.其他系统实现五.获取源码 一、系统介绍 系统功能:用户登陆、用户注册、员工信息添加、…

6.8object类equals tostring

2 什么是API API(Application Programming Interface,应用程序接口)是一些预先定义的函数。目的是提供应用程序与开发人员基于某软件可以访问的一些功能集,但又无需访问源码或理解内部工作机制的细节. API是一种通用功能集,有时公…

基于Java+Swing+Mysql实现旅游管理信息系统

基于JavaSwingMysql实现旅游管理信息系统 一、系统介绍二、功能展示1.登陆2.注册3.旅游信息查询4.查看游行团信息5.报名6、报名信息管理 三、数据库四、其它1.其他系统实现五.获取源码 一、系统介绍 用户:登陆、注册、旅游信息查询、查看游行团信息、报名 管理员&a…

【ARIMA-SSA-LSTM】合差分自回归移动平均方法-麻雀优化-长短期记忆神经网络研究(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

数据库约束、表的关系

数据库约束、表的关系 数据库约束、表的关系 1. 数据库约束1.1 约束类型1.2 NULL约束1.3 UNIQUE:唯一约束1.4 DEFAULT:默认值约束1.5 PRIMARY KEY:主键约束1.6 FOREIGN KEY:外键约束 2. 表的设计2.1 一对一2.2 一对多2.3 多对多 …

ODOO16 ERP如何做标准的研发费用归集?

目前国家大力鼓励企业研发投入,并且给予很多鼓励。如《中共中央关于制定国民经济和社会发展第十四个五年规划和二〇三五年远景目标的建议》中明确提出:“发挥企业家在技术创新中的重要作用,鼓励企业加大研发投入,对企业投入基础研…

2023洗发护发市场分析(头皮清洁护理等新兴品类销售数据分析)

如今,随着人们消费观念的转变,对洗发护发相关用品的要求也逐渐提高,由原来单一的清洁功能到更注重洗发护发用品的功能及护理效果。因此,洗发护发产品的品类不断增加,洗发护发产品的市场规模也不断扩大,整体…

JAVA实现一个工作流引擎

介绍 工作流是一种将一系列相关的任务和活动组织起来的技术,以便在企业或组织中自动化或半自动化地管理业务流程。工作流技术可以帮助企业或组织更好地管理和优化业务流程,提高生产效率和质量,降低成本和风险。 JAVA作为一种面向对象编程语…

线程池与CompletableFuture 异步编排

使用线程池的好处: 1、降低资源的消耗 通过重复利用已经创建好的线程降低线程的创建和销毁带来的损耗 2、提高响应速度 因为线程池中的线程数没有超过线程池的最大上限时,有的线程处于等待分配任务 的状态,当任务来时无需创建新的线程就能执行…

STM32启动详细流程分析(一)

问题提出 大家不妨设想一下,cpu 的工作是什么,cpu 是没有主观意识的,它只会按照特定的指令执行相应的操作,用专业术语来说就是:取指 -> 译码 -> 执行,译码和执行肯定是在 cpu 内部进行操作的&#x…

MySQL数据库增删改查及聚合查询SQL语句学习汇总

目录 数据库增删改查SQL语句 MySQL数据库指令 1.查询数据库 2.创建数据库 3.删除数据库 4.选择数据库 创建表table 查看所有表 创建表 查看指定表的结构 删除表 数据库命令进行注释 增删改查(CRUD)详细说明 增加 SQL库提供了关于时间的…

Python 查询 DynamoDB

文章目录 DynamoDB 简介Boto3简介安装和导入 Boto3将 Boto3 连接到 DynamoDB 使用 Boto3 在 DynamoDB 中创建表通过 Boto3 删除 DynamoDB 中的表通过 Boto3 列出 DynamoDB 中的表通过 Boto3 在 DynamoDB 中分页通过 Boto3 在 DynamoDB 中排序通过 Boto3 在 DynamoDB 中获取项目…

【设计模式与范式:行为型】63 | 职责链模式(下):框架中常用的过滤器、拦截器是如何实现的?

上一节课,我们学习职责链模式的原理与实现,并且通过一个敏感词过滤框架的例子,展示了职责链模式的设计意图。本质上来说,它跟大部分设计模式一样,都是为了解耦代码,应对代码的复杂性,让代码满足…

Ribbon LoadBalanced底层机制源码探秘

🍊 Java学习:社区快速通道 🍊 深入浅出RocketMQ设计思想:深入浅出RocketMQ设计思想 🍊 绝对不一样的职场干货:大厂最佳实践经验指南 📆 最近更新:2023年6月18日 🍊 点…