【Linux】vim的使用及常用快捷键(不会使用vim?有这篇文章就够了)
🔥🔥 欢迎来到小林的博客!!
🛰️博客主页:✈️小林爱敲代码
🛰️欢迎关注:👍点赞🙌收藏✍️留言
目录
- 💖vim的基本概念
- vim常用的三种模式
- vim的基本操作
- 命令行模式的命令集
- 底行模式的命令集
💖vim的基本概念
简单来说,vim就是一个多模式的编辑器。
vim常用的三种模式
今天给大家讲解vim编辑最常用的三种模式:
1. 命令行模式
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode
2.插入模式
类似于编辑记事本。
3.底行模式
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入:help vim-modes
vim的基本操作
进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面:
我们输入vim.hello.c ,如果有文件,则会编辑该文件。没有,则会先创建再编辑。

然后我们可以看到左下角的NORMAL,意思是vim正处于命令模式。

那么我们此时可以按 i 进入插入模式。当左下角变成INSERT的时候,就是进入了插入模式。然后可以随意输入一些东西。

输入完之后要保存怎么办?那么我们需要按键盘上的esc回退到命令模式。

回退之后我们按shift + : 打出冒号,即可进入底行模式。

我们会发现左下角变成了COMMAND,也就是底行模式。然后输入wq!,即可保存退出,w是写的意思,q是退出的意思,!是强制操作的意思。

退出后我们再用cat命令查看一下hello.c的内容。

这就意味着刚刚保存成功了。
命令行模式的命令集
进入插入模式命令
按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
插入模式返回命令模式按esc即可。
以下带#的命令,#均表示自己输入的一个数字,且是在主键盘上输入
**光标的移动操作按键 **
vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母h(左)、j(下)、k(上)、l(右),分别控制光标左、下、上、右移一格。因为早期的键盘没有上下左右四个键。
而在命令模式下有很多命令,我们按下对应的键位也会有对应的操作,具体如下表:
| 按键 | 操作说明 |
|---|---|
| G | 移动到文章的最后 |
| $ (shift + 4) | 移动到光标所在行的“行尾” |
| ^ (shift+6) | 移动到光标所在行的“行首” |
| w | 光标跳到下个单词的开头 |
| e | 光标跳到下个单词的字尾 |
| b | 光标回到上个单词的开头 |
| #l | 光标移到该行的第#个位置,如:5l,56l(数字需要是主键盘,小键盘无效) |
| gg | 进入到文本开始 |
| shift+g | 进入文本末端 |
| ctrl+b | 屏幕往“后”移动一页 |
| ctrl+f | 屏幕往“前”移动一页 |
| ctrl+u | 屏幕往“后”移动半页 |
| ctrl+d | 屏幕往“前”移动半页 |
删除操作
| 按键 | 操作说明 |
|---|---|
| x | 每按一次,删除光标所在位置后的一个字符 |
| #x | 6x表示删除光标所在位置的“后面(包含自己在内)的6个字符(#代表主键盘的数字,小键盘无效) |
| X (shift + x) | 大写的X,每按一次,删除光标所在位置的前面一个字符 |
| #X(shift + x) | 20X表示删除光标所在位置的前面20个字符 |
| dd | 删除光标所在行 |
| #dd | 从光标所在行开始往下删除#行 |
复制操作
| 按键 | 操作说明 |
|---|---|
| yw | 将光标所在之处到字尾的字符复制到缓冲区中。 |
| #yw | 复制#个字到缓冲区 |
| yy | 复制光标所在行到缓冲区。 |
| #yy | 例如,6yy表示拷贝从光标所在的该行“往下数”6行文字。 |
| p | 将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。 |
替换操作
| 按键 | 操作说明 |
|---|---|
| r | 替换光标所在处的字符。 |
| R (shift + r) | 替换光标所到之处的字符,直到按下「ESC」键为止。 |
| u | 如果您误执行一个命令,可以马上按下u,回到上一个操作。按多次“u”可以执行多次回。 |
| ctrl + r | 撤销的恢复 |
| cw | 更改光标所在处的字到字尾处 |
| c#w | 例如,c3w表示更改3个字 |
| ctrl +g | 列出光标所在行的行号。 |
| #G | 例如,15G,表示移动光标至文章的第15行行首。 |
底行模式的命令集
在命令模式输入冒号(shift + :)即可进入底行模式。
底行模式的常用命令
| 命令 | 操作说明 |
|---|---|
| vs 文件名 | 输入vs 文件名 后,会分屏打开该文件,如果没有该文件会自动为你新建一个 |
| set nu | 输入set nu 后,会在文件中的每一行前面列出行号。 |
| # | #号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。 |
| /关键字 | 先按/键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按 |
| n | 会往后寻找到您要的关键字为止。 |
| ?关键字 | 先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。 |
| w | 在冒号输入字母w就可以将文件保存起来 |
| q | 按q 就是退出,如果无法离开vim,可以在q后跟一个!强制离开vim。 |
| wq | 一般建议离开时,搭配w一起使用,这样在退出的时候还可以保存文件。 |
相关文章:
【Linux】vim的使用及常用快捷键(不会使用vim?有这篇文章就够了)
🔥🔥 欢迎来到小林的博客!! 🛰️博客主页:✈️小林爱敲代码 🛰️欢迎关注:👍点赞🙌收藏✍️留言 目录💖vim的基本概念vi…...
刷完这19道leetcode二分查找算法,不信进不了大厂
对于二分题,其实就是设定一个中间值 mid, 然后通过这个值进行一个判断 check(mid), 通过这个函数的返回值,判断将不可能的一半剪切掉; 在刷题的时候需要注意主要是两部分,check 函数的定义以及边界的选择(…...
四、Plugin Request and Sometimes pads
Request and Sometimes pads 到目前为止,我们只处理了总是可用的pad。然而,也有一些pad仅在某些情况下创建,或者仅在应用程序请求pad时创建。第一个有时被称为a;第二个被称为请求pad。pad的可用性(always, sometimes or request)可以在pad的…...
唤醒手腕 Java 后端 Springboot 结合 Redis 数据库学习笔记(更新中)
Redis 基本介绍 Redis Introduction The open source, in-memory data store used by millions of developers as a database, cache, streaming engine, and message broker. 基本概念:redis 是一个开源的、使用 C 语言编写的、支持网络交互的、可基于内存也可持…...
robotiq 2f 140安装在UR3机械臂后面在gazebo仿真中散架、抖动
robotiq 2f 140安装在UR3机械臂后面在gazebo仿真中散架、抖动 搭建环境: ubuntu: 20.04 ros: Nonetic sensor: robotiq_ft300 gripper: robotiq_2f_140_gripper UR: UR3 通过上一篇博客配置好ur3、力传感器和robotiq夹爪的gazebo仿真环境后,夹爪看起来…...
坐标系概念 四元数 欧拉角
1、四个概念:“地理”坐标系、“机体”坐标系、他们之间换算公式、换算公式用的系数。地理坐标系:东、北、天,以下简称地理。在这个坐标系里有重力永远是(0,0,1g),地磁永远是(0,1,x)…...
从0开始写Vue项目-SpringBoot整合Mybatis-plus实现登录、注册功能
1.从0开始写Vue项目-环境和项目搭建_慕言要努力的博客-CSDN博客 2. 从0开始写Vue项目-Vue2集成Element-ui和后台主体框架搭建_慕言要努力的博客-CSDN博客 3. 从0开始写Vue项目-Vue页面主体布局和登录、注册页面_慕言要努力的博客-CSDN博客 一、前言 在之前我们以及搭建好了基…...
K8s中gRpc通信负载均衡失效
上篇文章在做 整合K8sSpringCloudK8sSpringBootgRpc 时,发现K8s中使用gRpc通信,负载均衡功能失效查了下gRpc的最佳实践,找到这里Load balancingSome load balancers dont work effectively with gRPC. L4 (transport) load balancers operate…...
第三届区块链服务网络(BSN)全球合作伙伴大会在杭州成功举办
为持续推动分布式技术和产业创新发展,2023年2月17日,由杭州市人民政府指导,杭州市拱墅区人民政府、国家信息中心主办,中国移动通信集团有限公司、区块链服务网络(BSN)发展联盟承办,中国移动通信…...
人工智能基础部分13-LSTM网络:预测上证指数走势
大家好,我是微学AI,今天给大家介绍一下LSTM网络,主要运用于解决序列问题。 一、LSTM网络简单介绍 LSTM又称为:长短期记忆网络,它是一种特殊的 RNN。LSTM网络主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题…...
内网穿透/组网/设备上云平台EasyNTS上云网关的安装操作指南
EasyNTS上云网关的主要作用是解决异地视频共享/组网/上云的需求,网页对域名进行添加映射时,添加成功后会生成一个外网访问地址,在浏览器中输入外网访问地址,即可查看内网应用。无需开放端口,EasyNTS上云网关平台会向Ea…...
易点天下基于 StarRocks 全面构建实时离线一体的湖仓方案
作者:易点天下数据平台团队易点天下是一家技术驱动发展的企业国际化智能营销服务公司,致力于为客户提供全球营销推广服务,通过效果营销、品牌塑造、垂直行业解决方案等一体化服务,帮助企业在全球范围内高效地获取用户、提升品牌知…...
Tomcat的类加载机制
不遵循双亲委托 在JVM中并不是一次性地把所有的文件都加载到,而是按需加载,加载机制采用 双亲委托原则,如下图所示: BootStrapClassLoader 引导类加载器ExtClassLoader 扩展类加载器AppClassLoader 应用类加载器CustomClassLoad…...
【shell 编程大全】数组,逻辑判断以及循环
数组,逻辑判断以及循环1. 概述 大家好,我又来了。今天呢我们继续学习shell相关的知识。还是老样子我们先回顾下上一次【脚本交互 以及表达式】学习到的知识 登录shell 关联配置文件什么是子shellumask 修改默认权限read 基础表达式 简单计算表达式expr 计…...
Android13 Bluetooth更新
目录 Android 13 版本说明 LE Audio 代码更新 Android 12代码路径 Android 13代码路径 Android 13 版本说明 里面对蓝牙更新的描述较少,一出提到蓝牙的一...
手工测试混了5年,年底接到了被裁员的消息....
大家都比较看好软件测试行业,只是因为表面上看起来:钱多事少加班少。其实这个都是针对个人运气好的童人才会有此待遇。在不同的阶段做好不同阶段的事情,才有可能离这个目标更近,作为一枚软件测试人员,也许下面才是我们…...
Umi框架
什么是 umi umi 是由 dva 的开发者 云谦 编写的一个新的 React 开发框架。umi 既是一个框架也是一个工具,可以将它简单的理解为一个专注性能的类 next.js 前端框架,并通过约定、自动生成和解析代码等方式来辅助开发,减少开发者的代码量。 u…...
教你学git
前言 git是一种用于多人合作写项目。详细说明如下 文章目录前言什么是版本控制?什么是 Git?它就属于人工版本控制器版本控制工具常见版本控制工具怎么工作的?git 文件生命周期状态区域安装配置-- global检查配置创建仓库工作流与基本操作查看…...
【工作笔记】syslog,kern.log大量写入invalid cookie错误信息问题
任务描述 错误出现出现过四五次,应该是诊断单元tf卡读写出问题导致下面这条告警一直高频写入到/var/log/下的syslog、kern.log、messages中 Nov 23 06:25:12 embest kernel: omap_hsmmc 48060000.mmc: [omap_hsmmc_pre_dma_transfer] invalid cookie: data->hos…...
【C++】多线程
多任务处理有两种形式,即:多进程和多线程。 基于进程的多任务处理是程序的并发执行。基于线程的多任务处理是同一程序的片段的并发执行 文章目录1. 多线程介绍2. Windows多线程1. 多线程介绍 每一个进程(可执行程序)都有一个主线…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
EasyRTC音视频实时通话功能在WebRTC与智能硬件整合中的应用与优势
一、WebRTC与智能硬件整合趋势 随着物联网和实时通信需求的爆发式增长,WebRTC作为开源实时通信技术,为浏览器与移动应用提供免插件的音视频通信能力,在智能硬件领域的融合应用已成必然趋势。智能硬件不再局限于单一功能,对实时…...
结构性-代理模式
动态代理主要是为了处理重复创建模板代码的场景。 使用示例 public interface MyInterface {String doSomething(); }public class MyInterfaceImpl implements MyInterface{Overridepublic String doSomething() {return "接口方法dosomething";} }public class M…...
大话软工笔记—需求调研的准备
需求调研前需做好充分的准备: 1. 背景资料来源 可以通过企业官网、宣传资料、人员沟通获取客户企业信息。 2. 背景资料汇总 根据获得的信息做出一份背景分析报告,主要包含以下内容: 2.1 企业基本信息 企业发展愿景&#…...
