探索 Linux vim/vi 编辑器:介绍、模式以及基本操作演示
💐作者:insist--
💐个人主页:insist-- 的个人主页
理想主义的花,最终会盛开在浪漫主义的土壤里,我们的热情永远不会熄灭,在现实平凡中,我们终将上岸,阳光万里
❤️欢迎点赞👍收藏📁评论📒
前言
本文将介绍vim / vi编辑器是什么并详细讲解它的三种工作模式以及基本命令
目录
一、Vim编译器介绍
1. Vim是什么
2. Vim的三种工作模式
①命令模式
②输入模式
③底线命令模式
二、基本操作演示
1. 打开文件
2. 进入插入模式
3. 保存并退出文件
一、Vim编译器介绍

1. Vim是什么
Vim是一款在Linux中常用的文本编辑器,它从vi发展而来,具有代码补全、编译及错误跳转等功能,可以主动以字体颜色标识语法的正确性,方便代码编写。Vim能运行于unix、windows、mac等多个操作平台。
vim是vi的加强版本,兼容vi的所有指令,不仅能编辑文本,而且还具有shell程序编辑的功能,可以不同颜色的字体来辨别语法的正确性,极大方便了程序的设计和编辑性。
2. Vim的三种工作模式
Vim的三种工作模式分别是命令模式、输入模式和底线命令模式。
①命令模式
用户刚刚启动vi/vim,就进入了命令模式。此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。
命令模式下常用的命令:
h:左移光标j:下移光标k:上移光标l:右移光标w:移动到下一个单词的开头b:移动到当前单词或前一个单词的开头e:移动到当前单词或下一个单词的结尾gg:移动到文件开头G:移动到文件结尾dd:删除当前行yy:复制当前行p:粘贴到光标之后u:撤销上一次操作Ctrl + r:重做上一次撤销的操作/:查找文本,例如输入“/example”将查找“example”这个单词n:查找下一个匹配项N:查找上一个匹配项:%s/old/new/g:将文件中的所有“old”替换为“new”
②输入模式
在命令模式下,通过输入“i”、“a”或“o”命令可以进入输入模式。在这个模式下,用户可以像在普通文本编辑器中那样输入文本。
命令模式下常用的命令:
i:进入插入模式,在当前位置插入文本a:进入插入模式,在光标后插入文本o:进入插入模式,在光标前插入文本Esc:退出插入模式,返回到命令模式
③底线命令模式
在命令模式下,按下shift➕冒号(:)进入末行模式。在这个模式下,你可以输入保存、退出等命令。
命令模式下常用的命令:
w:保存文件q:退出vimwq:保存并退出vimq!:强制退出vim,不保存修改set number:显示行号set nonumber:不显示行号set colorscheme:设置颜色主题set background=dark:设置背景色为暗色系set background=light:设置背景色为亮色系%s/old/new/g:将文件中的所有“old”替换为“new”
二、基本操作演示

1. 打开文件
一句话概括:命令行中输入vim 文件名。
详细解释:使用命令vim 文件名来打开一个文件。如果文件不存在,Vim将创建一个新文件;如果文件已经存在,则Vim会打开该文件并显示其内容。当我们想打开一个名为“hello.txt”的文件可以使用命令:vim hello.txt,如果出现下图这个样子,证明已经打开文件。

2. 进入插入模式
一句话概述:在命令模式下,按键盘上的i、a或o即可进入。
详细解释:在命令模式下,通过输入“i”、“a”或“o”命令可以进入插入模式,如下图,进入插入模式后,在命令行界面的左下角会显示“插入”字样,在此模式我们就可以像Windows中的文本文档一样直接写入内容。

3. 保存并退出文件
一句话概述:进入底线命令模式输入wq(进入方法看流程图或下方解释)
详细解释:写入内容后,我们需要进行保存并退回命令行界面,如上方流程图,我们要退出并保存文件时,需要在 底线命令模式 输入 wq,进入底线命令模式之前,我们需要先退回命令模式(按ESC键),然后再进入底线命令模式(shift➕:组合键),如下图,看到冒号以后就证明已经进入到了底线命令模式。在冒号的后面输入wq即可保存并退出文件。

相关文章:
探索 Linux vim/vi 编辑器:介绍、模式以及基本操作演示
💐作者:insist-- 💐个人主页:insist-- 的个人主页 理想主义的花,最终会盛开在浪漫主义的土壤里,我们的热情永远不会熄灭,在现实平凡中,我们终将上岸,阳光万里 ❤️欢迎点…...
Centos 7 在线安装(RPM) PostgreSQL 14 15 16
目录 一、官网下载地址二、检查系统是否安装其他版本PostgreSQL数据库三、安装数据库四、配置数据库(默认方式一)4.1初始化用户密码4.2修改postgresql.conf文件4.3修改pg_hba.conf文件五、修改默认存储路径六、配置防火墙七、生产环境优化(待完善)八、启用SSL加密(待验证)九…...
如何在gitlab上使用hooks
参考链接:gitlab git hooks 1. Git Hook 介绍 与许多其他版本控制系统一样,Git 有一种方法可以在发生某些重要操作时,触发自定义脚本,即 Git Hook(Git 钩子)。 当我们初始化一个项目之后,.git…...
【点云surface】 凹包重构
1 处理过程可视化 原始数据 直通滤波过滤后 pcl::ProjectInliers结果 pcl::ExtractIndices结果 凹包结果 凸包结果 2 处理过程分析: 原始点云 ---> 直通滤波 --> pcl::SACSegmentation分割出平面 -->pcl::ProjectInliers投影 --> pcl::ConcaveHull凹包…...
Linux sed命令
目录 一. 去除单个指定文本的换行符二. 去除多个指定文本的换行符三. 抽取出指定数据3.1 分别抽取SPLREQUEST和SPLEND的数据3.2 通过join命令将文件合并3.3 抽取出指定的数据3.4 去除换行符,整合数据为一行 一. 去除单个指定文本的换行符 👉 info.txt …...
Nginx反向代理实现负载均衡+Keepalive实现高可用
目录 实现负载均衡 实现高可用 实现负载均衡 Nginx的几种负载均衡算法: 1.轮询(默认) 每个请求按照时间顺序逐一分配到下游的服务节点,如果其中某一节点故障,nginx 会自动剔除故障系统使用户使用不受影响。 2.权重…...
实用高效 无人机光伏巡检系统助力电站可持续发展
近年来,我国光伏发电行业规模日益壮大,全球领先地位愈发巩固。为解决光伏电站运维中的难题,浙江某光伏电站与复亚智能达成战略合作,共同推出全自动无人机光伏巡检系统,旨在提高发电效率、降低运维成本,最大…...
Django框架之csrf跨站请求
目录 一、csrf跨站请求伪造详解 二、csrf跨域请求伪造 【1】正常服务端 【2】钓鱼服务端 三、csrf校验 【介绍】 form表单中进行csrf校验: 【1】form表单如何校验 【2】ajax如何校验 四、csrf相关装饰器 【1】csrf_protect装饰器: 【…...
[系统移植] 移植主线Buildroot(2023.02-rc3)到RK3399
文章目录 一、编译环境二、Git环境三、克隆源代码四、编译源代码五、烧录固件六、系统启动一、编译环境 PC 机用的是 Ubuntu 18.04,执行以下命令安装必要工具: sudo apt install gcc build-essential bison flex gettext tcl sharutils libncurses-dev zlib1g-dev \ exube…...
自动语音识别 支持86种语言 Dragon Professional 16 Crack
从个体从业者到全球组织,文档密集型行业的专业人士长期以来一直依靠 Dragon 语音识别来更快、更高效地创建高质量文档,减少管理开销,以便他们能够专注于客户。了解 Dragon Professional v16 如何通过单一解决方案提高标准,为各个业…...
i社为什么不出游戏了?
I社,即国际知名的游戏公司,近来为何鲜有新游问世?曾经风靡一时的游戏开发者,如今为何陷入了沉寂?这其中的种种原因,值得我们深入剖析。 首先,I社近期的沉寂可能与其内部管理层的调整和战略规划…...
Harmony开发 eTs公共样式抽取
Harmony系统开发使用eTs开发过程中对于样式相同且重复使用的样式可以抽取成公共样式循环利用,类似于android的style样式。 import router from ohos.router import cryptoFramework from ohos.security.cryptoFramework; import prompt from system.prompt class L…...
Java中的方法
在Java中,方法是一个重要的概念,它用于组织和执行可重复使用的代码块。本文将详细介绍Java中方法的概念、定义和使用方法,以及一些常见的编程技巧和注意事项。 一、方法的概念 在Java中,方法是用来执行特定任务的代码块。它封装了…...
存算一体还是存算分离?谈谈数据库基础设施的架构选择
从一则用户案例说起 某金融用户问,数据库用服务器本地盘性能好还是外置存储好?直觉上,本地盘路径短性能应该更好。然而测试结果却出乎意料:同等中等并发压力,混合随机读写模型,服务器本地SSD盘合计4万 IOPS…...
go模版引擎的使用~~
go模板语句 以下是一些go语言模板引擎的一些简单知识和使用 基础语法 重要!!!: 模板在写动态页面的网站的时候,我们常常将不变的部分提出成为模板,可变部分通过后端程序的渲染来生成动态网页࿰…...
我们为什么要进行敏捷开发培训
敏捷开发是一种以人为核心、迭代、循序渐进的软件开发方法。它强调团队合作、客户需求和适应变化。进行敏捷开发培训其实有多种原因,我整理了一些,可以作为参考: 理解敏捷原则和实践: 敏捷开发不仅是一种方法论,更是一…...
【算法萌新闯力扣】:合并两个有序链表
力扣题目:合并两个有序链表 开篇 今天是备战蓝桥杯的第24天及算法村开营第2天。根据算法村的讲义,来刷链表的相关题目。今天要分享的是合并两个有序链表。 题目链接: 21.合并两个有序链表 题目描述 代码思路 通过创建一个新链表,然后遍历…...
BEV+Transformer架构加速“上车”,智能驾驶市场变革开启
BEVTransformer成为了高阶智能驾驶领域最为火热的技术趋势。 近日,在2023年广州车展期间,不少车企及智能驾驶厂商都发布了BEVTransformer方案。其中,极越01已经实现了“BEVTransformer”的“纯视觉”方案的量产,成为国内唯一量产…...
Java中的jvm——面试题+答案(JVM的一些高级概念、调优技巧、垃圾回收算法等)——第13期
当涉及到Java虚拟机(JVM)时,面试官可能涉及更深入的问题,涵盖性能调优、垃圾回收算法、类加载机制等方面。 什么是类加载机制?请解释类加载的过程。 答案: 类加载是将类的.class文件加载到内存中的过程&…...
Android修行手册-ViewPager定制页面切换以及实现原理剖析
Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
