Linux_vim编辑器入门级详细教程
前言
(1)vim编辑器其实本质上就是对文本进行编辑,比如在.c文件中改写程序,在.txt文件写笔记什么的。一般来说,我们可以在windows上对文本进行编译,然后上传给Linux。但是有时候我们可能只是对文本进行简单的调整,或者说没有其他的编译器的时候,vim编译器就成了不得不使用的工具了。
(2)vim编辑器比较麻烦,不支持鼠标移动光标。对于文本的编辑,保存,复制,粘贴都需要命令行,不直观操作也没有Windows上的编辑器方便。所以我建议如果是需要大规模改动的文件,可以先使用Windows上的编辑器进行编辑,之后利用FileZilla软件将文件上传到Linux。但是,如果只需要进行微调,vim编辑器就是不错的选择。
vim的三种模式
三种模式简介
vim编辑器具有三个模式:一般模式,编辑模式,命令行模式。这三个模式的侧重点不同,如下。
一般模式:光标移动、复制、粘贴、删除
编辑模式:编辑文本
命令行模式:查找、替换
vim的三种模式切换
三种模式切换图
对于新手而言,下面这个你是大概率看不懂的。但是不要慌,哥来教你看懂。

终端命令行与一般模式的切换
终端命令行是什么
对于新手而言,可能还不是很清楚终端命令行是啥玩意。终端命令行就是我们日常操作的terminal(终端,如下)。

vim的一般模式
(1)从终端命令行进入vim的一般模式时,右下角会出现一行信息,里面包含 操作的文件文件名,文件行数,以及当前文件所含字符个数。
(2)如果是从其他模式进入vim的一般模式,右下角是没有信息的。
(3)在一般模式下,我们可以进行复制,粘贴,删除等操作。


终端命令行--->vim一般模式
如果我们使用vim编辑器对一个文件进行操作,只需要输入vi 文件名。

如果我们进入vim编辑器,不想从第一行开始编辑,而是想从其他行开始编辑,只需要输入:
vi 文件名 +n(n为行号)

vim一般模式--->终端命令行
当我们想从vim的一般模式转换到终端命令行时,需要输入“:命令”,命令有如下选择
命令 | 描述 |
x | 保存当前文档并且退出 |
q | 退出 |
w | 保存文档 |
q! | 退出 vi/vim,不保存文档 |
需要注意“:x”与“:wq”作用是一致的。

一般模式与编辑模式的转换
编辑模式是什么
在编辑模式下,我们可以对文件进行修改,可以一个字符一个字符的写入,但是不可以复制粘贴。

vim一般模式--->编辑模式
在一般模式下,我们输入字符‘i’在当前光标所在字符的前面,转为编辑模式。其实只要记住'i'这一个就可以了,但是有些骚年可能玩的花一点,想秀操作,学其他的命令也可以。只不过这些其他的指令,都可以用i来实现。
命令 | 描述 |
i | 在当前光标所在字符的前面,转为编辑模式 |
I | 在当前光标所在行的行首转换为编辑模式 |
a | 在当前光标所在字符的后面,转为编辑模式 |
A | 在光标所在行的行尾,转换为编辑模式 |
o | 在当前光标所在行的下方,新建一行,并转为编辑模式 |
O | 在当前光标所在行的上方,新建一行,并转为编辑模式 |

编辑模式--->vim一般模式
从编辑模式到vim的一般模式转换很简单,按一下ESC键即可。(多按几次也可以,不影响)

一般模式与命令行模式的转换
(1)看到下面这张图,有人可能会有疑惑了。按照上面的切换图,vim的一般模式转换到终端命令行模式不是也需要输入':'吗?那么,一般模式转换为终端命令行的过程,是不是经过了编辑模式呢?我认为是要经过的。
(2)按ESC键,就可以从编辑模式回到一般模式了。

在编辑模式下可进行的操作
vim的编辑模式下进行删除按Backspace,换行按Enter。和Windows的一样,只不过不可以用鼠标大范围的复制,只能一个字符一个字符的操作。
在命令行模式下可进行的操作
显示行号
我们发现,这个操作文本的时候,看不见行号,很麻烦。于是我们可以在命令行模式下,输入":set number"用于显示行号。

隐藏行号
有时候我们不需要看行号了,感觉行号有点麻烦,只需要输入":set nonumber"即可隐藏。

跳转光标
有时候我们想让光标跳转到指定行号,只需要输入":行号"即可跳转到指定行号。

替换
有的时候,我们会想将指定的字符全局替换掉。只需要输入":%s/p1/p2/g" 即可将文件中所有的 p1 均用 p2 替换。


删除
在编辑模式下删除麻烦了,只能一个一个字符的删除。在命令行模式下可以指定行进行删除。
格式:":起始行,结束行d "

一般模式下可进行的操作
光标移动
移动到第一行
在一般模式下,输入gg即可将跳转到第一行。

跳转到最后一行
输入“G”即可跳转到最后一行。但是一般都是小写输入状态,所以需要先按住shift键再输入g。
跳转到指定行
有时候我们想跳转到指定行数,输入“ngg”即可跳转到第n行。

翻页
有时,我们想一页一页的翻看。
Ctrl+F(PageDown) : 下翻一屏
Ctrl+B(PageUp) : 上翻一屏
光标上下左右移动
这个我觉得用键盘中的上下左右键就可以移动了。不过,还可以按HJKL键(个人感觉没必要,键盘的上下左右键有相同功能)。K: 向上移动;J: 向下移动;H: 向左移动;L: 向右移动
复制粘贴
方法1
先找到我们需要复制的字符字首,输入字符'v',移动光标(这里可使用"ngg"进行快速移动光标),按下字符'y'即可复制成功。

找到要粘贴的地方,按下字符'p',即可粘贴成功。

方法2
通过快捷键复制粘贴。如果我们想复制当前行输入"yy",如果我们想复制当前行及其以下的n-1行可以输入"nyy"。粘贴键按p。
yy | 复制当前行 |
nyy | 复制当前行及其后的 n-1 行 |
p | 粘贴 |

删除
输入"dd"删除当前行,"ndd"删除当前行及其下面的n-1行。

撤销
有时候我们会不小心删除误删需要撤销。只需要在一般模式下输入字符'u'即可。
查找
(1)在windows系统中,我们想在文本中查找指定文字,只需要输入Ctrl+F即可。而在vim编辑器中,在一般模式下,输入"/要查找的字符"就可以了。因为在一个文本中,不可能只有一个符合要查找的字符,所以按下回车键之后,输入n即可向下查找。
(2)但是有时候,我们想查找光标纸上的符合条件的字符,输入"?要查找的字符",然后按n即可向上查找。


相关文章:
Linux_vim编辑器入门级详细教程
前言(1)vim编辑器其实本质上就是对文本进行编辑,比如在.c文件中改写程序,在.txt文件写笔记什么的。一般来说,我们可以在windows上对文本进行编译,然后上传给Linux。但是有时候我们可能只是对文本进行简单的…...
TCP 的演化史-TCP 是一个过渡
TCP 诞生于 1970 年代早期,彼时没有分组交换网的大规模应用,彼时绝大多数通信都在使用电话,电报,电挂等电路交换技术。 诞生在这种环境下的技术不可能脱离时代的影响,如果一个孩子出生在一个父母关系冷漠的家庭&#x…...
Flask
Flask第三方组件非常全,适合小型 API服务类项目,但第三方组件运行稳定性相对Django差。 基础知识 Flask安装 pip install flask2.0.3Flask库文件 Jinjia2:模板渲染库Markupsafe:返回安全标签 只要Flask返回模板或者标签时都会…...
SAP系统与MES系统的数据协同技术方案
1.MES介绍 本文中提到的MES系统是在西门子公司的SIMATIC IT平台上开发完成。所有的应用子系统进行统一分析、统一设计、统一开发,利用统一的开发平台和数据库系统,保证了管理系统的集成性、高效性。 2.数据协同接口包含的…...
2018年蓝桥杯省赛试题-5道(Python)
文章目录一、日志统计思考二、递增三元组思考三、螺旋折线思考四、乘积最大思考五、全球变暖思考尾声提示:以下是本篇文章正文内容,下面案例可供参考 一、日志统计 题目描述 小明维护着一个程序员论坛。 现在他收集了一份"点赞"日志…...
Python稀疏矩阵最小二乘法
文章目录最小二乘法返回值测试最小二乘法 scipy.sparse.linalg实现了两种稀疏矩阵最小二乘法lsqr和lsmr,前者是经典算法,后者来自斯坦福优化实验室,据称可以比lsqr更快收敛。 这两个函数可以求解AxbAxbAxb,或arg minx∥Ax−b…...
mac本前端Homebrew下载,操作
1、打开电脑终端 2、下载Homebrew,在终端中输入 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"开始下载Homebrew,因为这个地址是国外网站,下载失败的话,输入…...
Linux系统之查看进程监听端口方法
Linux系统之查看进程监听端口方法一、端口监听介绍二、使用netstat命令1.netstat命令介绍2.netstat帮助3.安装netstat工具4.列出所有监听 tcp 端口5.显示TCP端口的统计信息6.查看某个服务监听端口三、使用ss命令1.ss命令介绍2.ss命令帮助3.查看某个服务监听端口四、使用lsof命令…...
使用命令别名一键启动arthas
1. 使用命令别名启动arthas 确保单板上有jdk和arthas jdk目录:/home/xinliushijian/arthas/jdk arthas目录;/home/xinliushijian/arthas su xinliushijian编写脚本messi.sh cd /home/xinliushijian/arthas vi messi.sh 内容如下: #!/bin/ba…...
python+pytest接口自动化(2)-HTTP协议基础
HTTP协议简介HTTP 即 HyperText Transfer Protocol(超文本传输协议),是互联网上应用最为广泛的一种网络协议。所有的 WWW 文件都必须遵守这个标准。设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法。HTTP 协议在 OSI 模型中属…...
操作系统权限提升(十五)之绕过UAC提权-基于白名单DLL劫持绕过UAC提权
系列文章 操作系统权限提升(十二)之绕过UAC提权-Windows UAC概述 操作系统权限提升(十三)之绕过UAC提权-MSF和CS绕过UAC提权 操作系统权限提升(十四)之绕过UAC提权-基于白名单AutoElevate绕过UAC提权 注:阅读本编文章前,请先阅读系列文章,以…...
非常好看的html网页个人简历
一. 前言 文末获取gitee链接 在前几天逛b站的时候,发现了个比较实用的东西-----个人简介网页版,相当于网页版的个人简历,相较于PDF形式的,网页版所能呈现内容更加丰富,而且更加美观,在BOOS上被HR小姐姐要…...
轻量级网络模型ShuffleNet V2
在学习ShuffleNet V2内容前需要简单了解卷积神经网络和MobileNet,以及Shuffnet V1的相关内容,大家可以出门左转,去看我之前的几篇博客MobileNet发展脉络(V1-V2-V3),轻量级网络模型ShuffleNet V1🆗ÿ…...
分享美容美发会员管理系统功能的特点_美容美发会员管理系统怎么做
人们越来越关心美发,美发行业发展迅速,小程序可以连接在线场景,许多美发院也开发了会员卡管理系统。那么一个实用的美发会员管理系统怎么制作呢?它有什么功能?我们一起来看看~(干货满满,耐心看完…...
Oracle-05-DCL篇
🏆一、简介 Oracle的DCL代表数据库控制语言,用于管理数据库对象的访问和安全性。DCL的两个主要命令是GRANT和REVOKE。 GRANT命令用于授予用户或角色对数据库对象的访问权限,例如表、视图或存储过程。GRANT命令的语法如下: GRANT privilege_name [, privilege_name]... …...
tess4j简单使用入门
tess4j下载 下载地址: https://sourceforge.net/projects/tess4j/ 不要直接下载,点击files,然后下载最新版 下载解压后放到指定的目录即可,这里放到d:\jar目录下 tess4j根目录: d:\jar\tess4j tess4j使用 把test4j项目目录中dist和lib目录下的所有jar包导入到需要的项目中…...
WebGPU学习(4)---使用 UniformBuffer
接下来让我们使用 UniformBuffer。UniformBuffer 是一个只读内存区域,可以在着色器上访问。 这次,我们将传递给着色器的矩阵存储在 UniformBuffer 中。演示示例 1.在顶点着色器中的 UniformBuffer 这次我们在顶点着色器里定义一个名为Uniforms的新结构体…...
Http客户端Feign-远程调用
Feign的使用步骤 引入依赖添加EnableFeignClients注解编写FeignClient接口使用FeignClient中定义的方法代替RestTemplate Feign的日志配置 1.方式一是配置文件,feign.client.config.xxx.loggerLevel 如果xxx是default则代表全局如果xxx是服务名称,例如userservi…...
RK3568镜像的拆包和打包
文章目录 前言一、window上分包和打包分包打包二、Linux上分包和打包分包打包总结前言 本文记录在win10上利用瑞芯微提供的工具进行分包和打包,同样也有Linux教程 提示:以下是本篇文章正文内容,下面案例可供参考 一、window上分包和打包 分包 window下一般直接利用工具即…...
《设计模式》适配器模式
《设计模式》适配器模式 适配器(Adapter)是一种结构型设计模式,它允许我们将一个类的接口转换成另一个类的接口,从而使得原本由于接口不兼容而无法合作的类能够一起工作。适配器模式通常用于以下情况: 在已有的类中添…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
算术操作符与类型转换:从基础到精通
目录 前言:从基础到实践——探索运算符与类型转换的奥秘 算术操作符超级详解 算术操作符:、-、*、/、% 赋值操作符:和复合赋值 单⽬操作符:、--、、- 前言:从基础到实践——探索运算符与类型转换的奥秘 在先前的文…...
2025 后端自学UNIAPP【项目实战:旅游项目】7、景点详情页面【完结】
1、获取景点详情的请求【my_api.js】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http(/login/getWXSessionKey, {code,avatar}); };//…...
