【Linux】vim的使用及常用快捷键(不会使用vim?有这篇文章就够了)

news2025/2/26 17:21:17

       🔥🔥 欢迎来到小林的博客!!
      🛰️博客主页:✈️小林爱敲代码
      🛰️欢迎关注:👍点赞🙌收藏✍️留言

目录

  • 💖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每按一次,删除光标所在位置后的一个字符
#x6x表示删除光标所在位置的“后面(包含自己在内)的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一起使用,这样在退出的时候还可以保存文件。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言——动态内存管理

目录0. 思维导图:1. 为什么存在动态内存分配2. 动态内存函数介绍2.1 malloc和free2.2 calloc2.3 realloc3. 常见的动态内存错误3.1 对NULL指针的解引用操作3.2 对动态内存开辟的空间越界访问3.3 对非动态开辟内存使用free释放3.4 使用free释放一块动态开辟内存的一部…

读书笔记//来自公众号(2)

非常喜欢阅读同行的文章,彷佛进行一场隔空交流。大家都是数据分析师,有许多共鸣;了解数据分析在不同行业的应用,往往很有收获。 这位朋友在零售行业、工业物联网、汽车互联网、2G电商等做个数据分析,有10多工作经验。…

【STC8A8K64D4开发板】——搭建开发环境

第1-2讲:搭建开发环境 需要安装的工具软件 表1:需要的工具软件 序号 软件工具 说明 1 Keil C51 9.52安装文件 Keil C51集成开发环境。 2 ch341ser驱动 USB最新驱动可到沁恒官网下载:www.wch.cn/downloads/CH341SER_EXE.html 3 st…

JVM运行时数据区

在上篇文章中我们详细介绍了JVM类加载子系统:https://blog.csdn.net/u011837804/article/details/129049418,Class文件被类加载子系统加载后就进入到了运行时数据区等待执行引擎执行,运行时数据区也是JVM中最重要的一部分,GC、OOM…

基于springboot+mybatis+mysql+vue运动会报名管理系统

基于springbootmybatismysqlvue运动会报名管理系统一、系统介绍二、功能展示1.用户登陆2.报名详情(运行员)3.比赛报名(运动员)4.个人参赛项目(运动员)5.加油稿展示(运动员)6.学院积分排名(运动员…

Spring MVC 源码 - HandlerMapping 组件(三)之 AbstractHandlerMethodMapping

HandlerMapping 组件HandlerMapping 组件,请求的处理器匹配器,负责为请求找到合适的 HandlerExecutionChain 处理器执行链,包含处理器(handler)和拦截器们(interceptors)handler 处理器是 Objec…

K_A12_022 基于STM32等单片机驱动VL53L0X模块 串口与OLED0.96双显示

K_A12_022 基于STM32等单片机驱动VL53L0X模块 串口与OLED0.96双显示一、资源说明二、基本参数参数引脚说明三、驱动说明UART对应程序:IIC对应程序:四、部分代码说明1、接线引脚定义1.1、STC89C52RCVL53L0X模块1.2、STM32F103C8T6VL53L0X模块五、基础知识学习与相关资料下载六、…

打印流、转换流、数据流 、随机访问流

Java知识点总结:想看的可以从这里进入 目录5、打印流6、转换流7、数据流8、随机访问流5、打印流 实现将基本数据类型的数据格式转化为字符串输出,它们提供了一系列重载的print()和println()方法,用于多种数据类型的输出,这种流不会…

基于react+typescript的前端组件库violet-design(字节青训营项目)

文章目录前言一、项目介绍💌 介绍特性兼容性📦 安装使用 npm 安装使用 yarn 安装浏览器引入🔨 示例1. 引入样式2. 使用组件按需加载TypeScript✨ 组件🔗 链接二、项目实现2.1 技术选型2.2 架构设计2.2.1 目标用户和场景2.2.2 组件…

容器技术概述

容器化应用程序 软件应用程序通常依赖于运行时环境提供的其他库、配置文件或服务。软件应用程序的传统运行环境是物理主机或虚拟机,应用程序依赖项作为主机的一部分安装。 例如,考虑一个 Python 应用程序,它需要访问实现 TLS 协议的公共共享…

第 16 章_多版本并发控制

第 16 章_多版本并发控制 1. 什么是MVCC MVCC (Multiversion Concurrency Control),多版本并发控制。顾名思义,MVCC 是通过数据行的多个版本管理来实现数据库的并发控制。这项技术使得在InnoDB的事务隔离级别下执行一致性读操作…

剑指 Offer 27. 二叉树的镜像

剑指 Offer 27. 二叉树的镜像 难度:easy\color{Green}{easy}easy 题目描述 请完成一个函数,输入一个二叉树,该函数输出它的镜像。 例如输入: 镜像输出: 示例 1: 输入:root [4,2,7,1,3,…

Office 365 备份与恢复

Microsoft Office 365中的不同服务几乎可以随时访问,这要归功于Microsoft的99.9%正常运行时间记录。但是,Office 365步履蹒跚的一个方面是提供了一种从意外数据丢失中恢复的方法。Microsoft 提供的数据保留功能并非适用于所有数据丢失情况的可行解决方案…

亿级高并发电商项目-- 实战篇 --万达商城项目 十二(编写用户服务、发送短信功能、发送注册验证码功能、手机号验证码登录功能、单点登录等模块)

👏作者简介:大家好,我是小童,Java开发工程师,CSDN博客博主,Java领域新星创作者 📕系列专栏:前端、Java、Java中间件大全、微信小程序、微信支付、若依框架、Spring全家桶 &#x1f4…

Leetcode力扣秋招刷题路-0082

从0开始的秋招刷题路,记录下所刷每道题的题解,帮助自己回顾总结 82. 删除排序链表中的重复元素 II 给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。 示例 1&#…

这6个视频剪辑素材库,你一定要知道~

推荐5个免费商用视频素材网站,建议收藏哦! 1、菜鸟图库 视频素材下载_mp4视频大全 - 菜鸟图库 网站素材量很大,有设计、图片、音频、视频等超多素材,大部分都能免费下载。视频素材都很高清,有自然、人物、科技、农业…

前端页面开发模块组织结构

模块组织 任何超过 1000 行的 CSS 代码,你都曾经历过这样的体验: 这个 class 到底是什么意思呢?这个 class 在哪里被使用呢?如果我创建一个 xxoo class,会造成冲突吗?Reasonable System for CSS Stylesheet Structure 的目标就是解决以上问题,它不是一个框架,而是通过…

Freemarker快速入门

freemarker提供很多指令用于解析各种类型的数据模型参考地址&#xff1a;http://freemarker.foofun.cn/ref_directives.html一.测试搭建Freemarker的运行环境并进行测试.1.添加Freemarker与SpringBoot的整合包XML <!-- Spring Boot 对结果视图 Freemarker 集成 --> <d…

互斥锁原理

如果有交互的公共数据区域&#xff0c;我们需要让一个进程先执行&#xff0c;一个进程后执行&#xff0c;互斥锁就是用锁的方式让他们的竞争关系变得有序。 临界区问题 临界区是在程序之间有公共数据交互时产生的区域&#xff0c;没有两个进程可以在它们各自的临界区同时执行…

我的 System Verilog 学习记录(1)

引言 技多不压身&#xff0c;准备开始学一些 System Verilog 的东西&#xff0c;充实一下自己&#xff0c;这个专栏的博客就记录学习、找资源的一个过程&#xff0c;希望可以给后来者一些借鉴吧&#xff0c;IC找工作的都加把油&#xff01; 本文是准备先简单介绍一下环境搭建…