Linux命令进阶·vi\vim编辑器详细命令介绍

目录

1.  什么是 vim?

2.  vi\vim 模式介绍

2.1  命令模式(Command mode)

2.2  输入模式(Insert mode)

2.3  底线命令模式(Last line mode)

3.  vi\vim 的使用

4.  命令介绍


1.  什么是 vim?

        Vim 是从 vi 发展出来的一个文本编辑器。vim是vi的加强版本,兼容vi的所有指令,不仅能编辑文本,而且还具有shell程序编辑功能,可以不同颜色的字体来辨别语法的正确性。

        简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。

2.  vi\vim 模式介绍

        基本上 vi/vim 共分为三种模式,命令模式(Command Mode)、输入模式(Insert Mode)和命令行模式(Command-Line Mode)

        通过vi\vim命令编辑文件,会打开一个新的窗口,此时窗口就是命令模式,通过命令模式输入键盘指令,可以进入到输入模式,输入模式需要退回到命令模式,然后通过命令可以进入到底层命令模式:

2.1  命令模式(Command mode)

        命令模式下,所敲得按键编辑器都可以理解为命令,以命令驱动执行不同的功能,此模型下不能自由进行文本编辑。

        用户刚刚启动 vi/vim,便进入了命令模式。 此状态下敲击键盘动作会被 Vim 识别为命令,而非输入字符,比如我们此时按下 i,并不会输入一个字符,i 被当作了一个命令。

语法:vi 文件路径

           vim 文件路径

vim兼容全部vi的命令,后续全部使用vim命令

  • 如果文件路径表示的文件不存在,那么此命令会用于编辑新文件,例如下图输入命令vim test.txt会进入第二张图所示,保存退出,ls查看可以发现创建了一个文件test.txt:

  • 如果文件路径表示的文件存在,那么此命令会用于编辑已有文件

2.2  输入模式(Insert mode)

        也就是所谓的编辑模式,插入模式,此模式下对文本内容进行自由编辑。在命令模式下按下 i 就进入了输入模式,使用 Esc 键可以返回到普通模式。

2.3  底线命令模式(Last line mode)

        在命令模式下按下 :(英文冒号)就进入了底线命令模式。

        底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

3.  vi\vim 的使用

        使用vim test.txt编辑一个新文件:

        执行后进入的是命令模式

        在命令模式内,按键盘i,进入输入模式,输入Hello world!!!

        输入完成后,按Esc退回命令模式:

        在命令模式内,按键盘,进入底层命令模式:

        在底层命令模式内输入:wq,回车,保存文件并退出vi编辑器:

        输入cat test.txt命令查看刚刚输入的内容是否存在:

4.  命令介绍

模式命令描述
命令模式i在当前光标位置进入输入模式
命令模式a在当前光标位置之后进入输入模式
命令模式I在当前行开头进入输入模式
命令模式A在当前行结尾进入输入模式
命令模式o在当前光标下一行进入输入模式
命令模式O在当前光标上一行进入输入模式
命令模式键盘上(↑)、键盘K向上移动光标
命令模式键盘下(↓)、键盘K向下移动光标
命令模式键盘左(←)、键盘K向左移动光标
命令模式键盘右(→)、键盘K向右移动光标
命令模式0移动光标到当前行的开头
命令模式$移动光标到当前行的结尾
命令模式pageup(PgUp)向上翻页
命令模式pangdown(PgDn)向下翻页
命令模式/进入搜索模式
命令模式n向下继续搜索
命令模式N向上继续搜索
命令模式dd删除光标所在行的内容
命令模式nddn是数字,表示删除当前光标向下n行
命令模式yy复制当前行
命令模式nyyn是数字,表示复制当前光标和向下的n行
命令模式p粘贴复制的内容
命令模式u撤销修改
命令模式Ctrl+r反向撤销修改
命令模式gg跳到首行
命令模式G跳到行尾
命令模式dG从当前行开始,向下全部删除
命令模式dgg从当前行开始,向上全部删除
命令模式d$从当前光标开始,删除到本行的结尾
命令模式d0从当前光标开始,删除到本行的开头
输入模式Esc任何情况下输入Esc都能回到命令模式
底线命令模式:wq保存并退出
底线命令模式:q仅退出
底线命令模式:q!强制退出
底线命令模式:w仅保存
底线命令模式:set nu显示行号
底线命令模式:set paste设置粘贴模式

Linux学习_时光の尘的博客-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序-自定义组件

文章目录 微信小程序-自定义组件概述创建和使用数据、方法和属性slot 插槽默认插槽具名插槽 组件样式注意项样式隔离 数据监听组件间通信父传子子传父获取子组件实例 生命周期组件的生命周期组件所在页面的生命周期App、Page与Component生命周期对比冷启动保留当前页面和关闭当…

诺奖印证产业方向,AI先行者晶泰科技开拓黄金赛道

2024年诺贝尔奖揭晓的各奖项中,AI领域无疑成为“最大赢家”。 从诺贝尔物理学奖被授予两名AI科学家,到诺贝尔化学奖表彰三位科学家“用人工智能(AI)破译蛋白质的密码”,本届诺贝尔奖“含AI量”之高引起市场热议。 值…

如何将 Elasticsearch 与流行的 Ruby 工具结合使用

作者:来自 Elastic Fernando Briano 了解如何将 Elasticsearch 与一些流行的 Ruby 库一起使用。 在这篇博文中,我们将介绍如何将 Elasticsearch 与一些流行的 Ruby 工具结合使用。我们将实现 Ruby 客户端 “入门”指南 中介绍的常用 API。如果你点击该链…

【从零开发Mybatis】引入XNode和XPathParser

引言 在上文,我们发现直接使用 DOM库去解析XML 配置文件,非常复杂,也很不方便,需要编写大量的重复代码来处理 XML 文件的读取和解析,代码可读性以及可维护性相当差,使用起来非常不灵活。 因此&#xff0c…

深度学习:对评论信息的情感分析,建立模型,自动识别评论信息的情绪状态完整代码实现

评论 思考:向模型中传递数据时,需要提前处理好数据 1、目标:将评论内容转换为词向量。 2、每个词/字转换为词向量长度(维度)200 3、每一次传入的词/字的个数是否就是评论的长度? 应该是固定长度,每次传入数据与图像相似…

DIY我的世界磁力方块

引子 小朋友喜欢我的世界,就像当年我那代对俄罗斯方块的执着,考虑电子游戏伤眼睛,所以最近开始给小朋友买磁力方块。 一个将近1元多的价格,催生我DIY的念头。 正文 Freecad图,A,B,C,D处 放磁铁 5.14g 材料费 最后的成…

Axure中继器单选、多选和重置

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 课程主题:Axure中继器单选、多选和重置 主要内容:根据查询条件,通过单选、多选和重置,从中继器中得到数据 应用场景&…

DockerCompose快速部署Java项目、nginx前端和mysql数据库到centos虚拟机

简介:整理自:SpringCloud微服务开发与实战,java黑马商城项目微服务实战开发(涵盖MybatisPlus、Docker、MQ、ES、Redis高级等)课程的飞书文档。 DockerCompose介绍 大家可以看到,我们部署一个简单的java项…

stm32实现esp8266连接到TCP服务器(二)未完

1.2 连接到TCP Server 1.2.1 使用网络助手,设立TCP服务器 ​ 编辑 1.2.2 连接服务器 ATCIPSTART"TCP","192.168.1.18",8080 //指令,注意双引号逗号都要半角(英文)输入 CONNECT //结果:成功 OK //结果:成功 …

[C++]ecplise C++新建项目跑hello world

测试通过版本: ecplise-cpp 2024-09 ecplise-cpp 2020-09 【前提】 安装好MinGW环境,实际测试不需要下载什么CDT插件就可以运行了。 步骤: (1)打开ecplise,选择launch 选择File->New->C/C Project 选择C M…

Java_数组的使用

一、数组的介绍 数组可以存放多个同一类型的数据。数组也是一种数据类型,是引用类型。 即:数(数据)组(一组)就是一组数据 二、代码演示 public class Array01 {public static void main(String[] args) …

DMAIC赋能智能家居:解锁未来生活新篇章!

从清晨自动拉开的窗帘,到夜晚自动调暗的灯光,每一处细节都透露着科技的温度与智慧的光芒。而在这场智能革命的浪潮中,DMAIC(定义Define、测量Measure、分析Analyze、改进Improve、控制Control)作为六西格玛管理的核心方…

React之组件渲染性能优化

关键词: shouldComponentUpdate、PureComnent、React.memo、useMemo、useCallback shouldComponentUpdate 与 PureComnent shouldComponentUpdate 与 PureComnent 用于类组件。虽然官方推荐使用函数组件,但我们依然需要对类组件的渲染优化策略有所了解…

10 排序算法:冒泡排序与快速排序(算法原理、算法实现、时间和空间复杂度分析)

目录 1 十大常见的排序算法 1.1 算法的稳定性 2 冒泡排序 2.1 算法原理 2.2 算法实现 2.3 时间空间复杂度分析 2.3.1 时间复杂度分析 2.3.2 空间复杂度分析 3 快速排序 3.1 算法原理 3.1.1 排序思想 3.1.2 递归过程 3.2 示例 3.2.1 示例 1 3.2.2 示例 2 3.2.3 …

RHCE--网络服务

第一章 例行性工作 1、单一执行的例行性工作(at) 1.1 查看at命令 at的黑名单(deny)、白名单(allow);两个文件若都不存在则只有root用户能使用 at工作调度对应的系统服务 atd:at的…

N9305高品质mp3音频语音芯片ic在早教故事机的应用方案

随着人们对教育的重视程度不断提高,儿童早教机已经成为了很多家庭的教育必备品。N9305音乐芯片在早教故事机中的应用,不仅为孩子们带来了丰富多彩的故事世界,还以其卓越的音质表现和功能,进一步提升了早教体验。 九芯电子N9305高品…

单片机——ADC采样

1、什么是ADC采样? ADC是指将模拟信号转换成数字信号的过程。通俗理解ADC采样就是采集电路中的电压,通过数值的方式表现出来。以STM32F103系列为例,它可以反应0~4095,换句话说,它采集的电压数值上表现为0~4095&#xf…

前端文件流导出

1、前端代码 ​ /** 导出 */ const handleExport async () > {let config {responseType: blob,headers: {Content-Type: application/json,},};const res await getTargetExport(config);const blob new Blob([res]);const fileName PK目标跟进导出列表.xls;const li…

WEB前端作业1

<!DOCTYPE html> <html><head><meta charset"utf-8"><title>用户注册页面</title></head><style type"text/css">#center{text-align: center;background-color: #e9e9e9;}tr td,th{border:1px solid whi…

linux线程 | 同步与互斥 | 互斥(下)

前言&#xff1a;本篇文章主要讲述linux线程的互斥的知识。 讲解流程为先讲解锁的工作原理&#xff0c; 再自己封装一下锁并且使用一下。 做完这些就要输出一堆理论性的东西&#xff0c; 但博主会总结两条结论&#xff01;&#xff01;最后就是讲一下死锁。 那么&#xff0c; 废…