当前位置: 首页 > news >正文

探索 Linux vim/vi 编辑器:介绍、模式以及基本操作演示

💐作者:insist--

💐个人主页:insist-- 的个人主页

理想主义的花,最终会盛开在浪漫主义的土壤里,我们的热情永远不会熄灭,在现实平凡中,我们终将上岸,阳光万里

❤️欢迎点赞👍收藏📁评论📒

前言

本文将介绍vim / vi编辑器是什么并详细讲解它的三种工作模式以及基本命令

目录

一、Vim编译器介绍

1. Vim是什么

2. Vim的三种工作模式

①命令模式

②输入模式

③底线命令模式

二、基本操作演示

1. 打开文件

2. 进入插入模式

3. 保存并退出文件


一、Vim编译器介绍

a2f6dbc747e547b1ab5187661745128c.webp

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”

二、基本操作演示

 613cca19537e43a8a746d6c0305f191a.jpg


1. 打开文件

一句话概括:命令行中输入vim 文件名。

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

19f51f9631354c13b765913fc7e57f8d.jpg


2. 进入插入模式

一句话概述:在命令模式下,按键盘上的i、a或o即可进入。

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

f59ea3a64d2f4b62aa060bc8c01d674c.jpg


3. 保存并退出文件

一句话概述:进入底线命令模式输入wq(进入方法看流程图或下方解释)

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

1c3c86bbb172498cb457bc3ee272c590.jpg

相关文章:

探索 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语言模板引擎的一些简单知识和使用 基础语法 重要!!!: 模板在写动态页面的网站的时候,我们常常将不变的部分提出成为模板,可变部分通过后端程序的渲染来生成动态网页&#xff0…...

我们为什么要进行敏捷开发培训

敏捷开发是一种以人为核心、迭代、循序渐进的软件开发方法。它强调团队合作、客户需求和适应变化。进行敏捷开发培训其实有多种原因,我整理了一些,可以作为参考: 理解敏捷原则和实践: 敏捷开发不仅是一种方法论,更是一…...

【算法萌新闯力扣】:合并两个有序链表

力扣题目:合并两个有序链表 开篇 今天是备战蓝桥杯的第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和各种游戏开发技巧,以及各种资源分…...

golang循环变量捕获问题​​

在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下: 问题背景 看这个代码片段: fo…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...

反射获取方法和属性

Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

Android15默认授权浮窗权限

我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...