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

【Linux】Linux编辑神器vim的使用

目录

         一、Vim的基本概念

         二、Vim的基本操作

                1、进入vim

                2、正常模式切换至插入模式

                3、插入模式切换至正常模式

                4、正常模式切换至底行模式

                5、退出Vim编辑器

         三、Vim正常模式命令集

                1、移动光标

                2、删除文字

                3、复制

                4、替换

                5、撤销

         四、Vim底行模式命令集

                1、列出行号

                2、光标跳转

                3、查找字符

                4、替换字符

 


 

一、Vim的基本概念

     Vim是多模式编辑器,我们其实只用掌握这3中即可,分别是命令模式(command mode)、插 入模式(Insert mode)和底行模式(last line mode)。

       命令模式(正常模式/普通模式)

控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式下,或者到底行模式下。

       插入模式

只有在插入模式下,才可以做文字输入,按「ESC」键可回到命令模式。该模式是我们后面用的最频繁的编辑模式。

       底行模式 

文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令行模式下,按shift+: 即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入 :help vim-modes 就可以查看。

二、Vim的基本操作

   1、进入vim

    进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面: vim test.c,如果有这个test.c 的文件就会直接进去,如果没有就会自动创建并进去。

此时就已经进去编辑器内部,但是这只处于正常模式,是不可以编辑的。

   2、正常模式切换至插入模式

    从正常模式切换到插入模式有3中方法,直接可以按a 或 i 或 o 就能直接进入插入模式下,此时编辑框下面也有所变化,如下图所示:

    左下角变成了INSERT,说明已经切换到了插入模式了,此时就可以编辑。

   3、插入模式切换至正常模式

    从插入模式切换到正常模式,直接按 Esc 退出键即可。

   4、正常模式切换至底行模式

    从正常模式切换到底行模式,需要我们按 Shift + : 组合键方可进入底行模式,注意:从插入模式是不可以直接进入底行模式,需要先退出插入模式,从插入模式进入底行模式。

   5、退出Vim编辑器

    退出Vim编辑器是从底行模式下退出的,看到有(:),在冒号后面输入相对应的字母即可退出。

q:  输入 q 是直接退出,是不会保存刚才所编辑的内容。

wq:是先进行保存,然后再退出。

q! :是强制退出。

    我们常用是wq 的方式进行退出,不然我们编辑的东西会不存在。

    注意:以上命令都是在英文输入的情况下方可执行,在中文输入的情况下,是不执行命令的。

三、Vim正常模式命令集

   1、移动光标

  • vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、 「l」,分别控制光标左、下、上、右移一格;
  • 按「G」:移动到文档的最后;
  • 按「 $ 」:移动到光标所在行的“行尾”;
  • 按「^」:移动到光标所在行的“行首”;
  • 按「w」:光标跳到下个字的开头;
  • 按「e」:光标跳到下个字的字尾;
  • 按「b」:光标回到上个字的开头;
  • 按[gg]:进入到文档开始;
  • 按[shift+g]:进入文档末端;
  • 按[n + shift+g]:将光标定位到指定的n行;
  • 按[shift+~]:将光标所在的字母进行大小写转换;
  • 按「ctrl」+「b」:屏幕往“后”移动一页;
  • 按「ctrl」+「f」:屏幕往“前”移动一页;
  • 按「ctrl」+「u」:屏幕往“后”移动半页;
  • 按「ctrl」+「d」:屏幕往“前”移动半页.

   2、删除文字

  • 按「x」:每按一次,删除光标所在位置的一个字符;
  • 按「n + x」:表示删除光标所在位置的“后面(包含自己在内)”6个字符;
  • 按「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符;
  • 按「n + X」:表示删除光标所在位置的“前面”20个字符;
  • 按「dd」:删除光标所在行;
  • 按「n + dd」:从光标所在行开始删除n行.

   3、复制

  • 按「yy」:复制光标所在行到缓冲区;
  • 按「n + yy」:表示拷贝从光标所在的该行“往下数”6行文字;
  • 按「p」:将缓冲区内的字符贴到光标所在位置;注意:所有与“y”有关的复制命令都必须与“p”配合才能完 成复制与粘贴功能。

   4、替换

  • 按「r」:替换光标所在处的字符;
  • 按「R」:替换光标所到之处的字符,直到按下「ESC」键为止。

   5、撤销

  • 按「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次恢复。
  • 「ctrl + r」: 撤销的恢复。

四、Vim底行模式命令集

   1、列出行号

set nu :输入命令之后,敲回车键,代码的每一行前面就会显示行号。

 此时没有行号。

就完成了行号的添加。

   2、光标跳转

在底行模式下,输入一个数字n,按回车,光标就会来到第 n 行。

 

   3、查找字符

 在底行模式下,输入 [?+ 你想要寻找的字符] 。

   4、替换字符

在底行模式下,输入[%s/xxx/xxx/g],就可以完成替换。比如 %s/hello/HELLO/g ,就完成了替换。

 

 


 

本文要是有不足的地方,欢迎大家在下面评论,我会在第一时间更正。

 

 老铁们,记着点赞加关注!!! 

相关文章:

【Linux】Linux编辑神器vim的使用

目录 一、Vim的基本概念 二、Vim的基本操作 1、进入vim 2、正常模式切换至插入模式 3、插入模式切换至正常模式 4、正常模式切换至底行模式 5、退出Vim编辑器 三、Vim正常模式命令集 1、移动光标 2、删除文字 3、复制 4、替换 5、撤销 四、Vim底行模式命令集 1、列出行号 2、光…...

vulnhub渗透测试靶场练习1

靶场介绍 靶场名:Medium_socialnetwork 下载地址:https://www.vulnhub.com/entry/boredhackerblog-social-network,454/ 环境搭建 靶机建议选择VM VirtualBox,我一开始尝试使用VMware时会报错,所以改用VM VirtualBox,攻击机使用…...

Uart,RS232,RS485串口通讯协议学习

目录 定义 UART(通常被称为串口,简单意味着使用广泛,具有普适性) RS232 RS232电平转换 RS485 -Recommended Standard (再推荐标准) 485和232的对比 RS485组网 总结 定义 串口是我们都很熟悉的,尤其是需要串口调试的时候,打印信息插…...

UML中的assembly关系

UML中的assembly关系 1.什么是Assembly关系 在UML(统一建模语言)中,"assembly"(组装)是一种表示组件之间关系的关联关系。组件是系统中可替换和独立的模块,可以通过组装来构建更大的系统。 当一…...

[Python]缓存cachetools与TTLCache简介

文章目录 cachetools缓存策略缓存操作 TTLCache cachetools是一个Python第三方库,提供了多种缓存算法的实现。 cachetools 使用前需要先安装pip install cachetools,说明文档参见https://cachetools.readthedocs.io/en/latest/。 cachetools提供了五种…...

现在的00后,真是卷死了呀,辞职信已经写好了·····

都说00后躺平了,但是有一说一,该卷的还是卷。这不,三月份春招我们公司来了个00后,工作没两年,跳槽到我们公司起薪23K,都快接近我了。 后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了…...

【wpf】列表类,用相对源时,如何绑定到子项

前言 在之前的一篇文章 :《【wpf】深度解析,Binding是如何寻找数据源的》https://blog.csdn.net/songhuangong123/article/details/126195727#:~:text%E3%80%90wpf%E3%80%91%E6%B7%B1%E5%BA%A6%E8%A7%A3%E6%9E%90%EF%BC%8CBinding%E6%98%AF%E5%A6%82%E4…...

头歌计算机组成原理实验—运算器设计(3)第3关:4位快速加法器设计

第3关:4位快速加法器设计 实验目的 帮助学生掌握快速加法器中先行进位的原理,能利用相关知识设计4位先行进位电路,并利用设计的4位先行进位电路构造4位快速加法器,能分析对应电路的时间延迟。 视频讲解 实验内容 利用前一步设…...

Java中synchronized的优化

本文介绍为了实现高效并发,虚拟机对 synchronized 做的一系列的锁优化措施 高效并发是从 JDK5 升级到 JDK6 后一项重要的改进项,HotSpot 虚拟机开发团队在 JDK6 这个版本上花费了大量的资源去实现各种锁优化技术,如适应性自旋(Ada…...

软件测试技术课程:软件测试流程

软件测试流程如下: 测试计划测试设计测试执行 单元测试集成测试确认测试系统测试验收测试回归测试验证活动 测试计划 测试计划由测试负责人来编写,用于确定各个测试阶段的目标和策略。这个过程将输出测试计划,明确要完成的测试活动&#x…...

【Redis】聊一下缓存双写一致性

缓存虽然可以提高查询数据的的性能,但是在缓存和数据 进行更新的时候 其实会出现数据不一致现象,而这个不一致其实可能会给业务来带一定影响。无论是Redis 分布式缓存还是其他的缓存机制都面临这样的问题。 数据不一致是如何发生? 数据一致…...

Java学习笔记-04

目录 静态成员 mian方法 多态 抽象类 接口 内部类 成员内部类 静态内部类 方法内部类 匿名内部类 静态成员 static关键字可以修饰成员方法,成员变量被static修饰的成员,成员变量就变成了静态变量,成员方法就变成了静态方法static修…...

pubspec.yaml 第三方依赖版本控制

以下是一些常见的版本控制方式: 精确版本号:您可以指定特定的版本号,例如 dependency_name: 1.2.3。这将确保只有指定的版本被安装和使用。 范围约束:您可以使用比较运算符来指定版本范围,例如 dependency_name: ^1.2…...

打印机出现错误0x00000709的原因及解决方法

一般来说,出现错误0x00000709,可能是用户试图设置默认打印机时,系统无法完成操作的错误。这种错误通常发生在Windows 10或Windows 7操作系统上。**驱动人生**分析,其原因可能是以下几种情况: 1、已经设置了另一个打印…...

代码随想录算法训练营第二十九天|491.递增子序列、46.全排列、47.全排列 II

目录 491.递增子序列 46.全排列 47.全排列 II 491.递增子序列 本题和大家刚做过的 90.子集II 非常像,但又很不一样,很容易掉坑里。 代码随想录 视频讲解:回溯算法精讲,树层去重与树枝去重 | LeetCode:491.递增子序…...

【Kafka】Kafka监控工具Kafka-eagle简介

Kafka-eagle是一种基于Web的开源管理工具,可以用来监控、管理多个Kafka集群。 下面是使用Docker部署Kafka-eagle的步骤: 下载并安装Docker和Docker Compose。 创建文件夹,例如kafka-eagle,并在其中创建docker-compose.yml文件&a…...

Java操作MongoDB

上一篇文章: http://blog.csdn.net/gaowenhui2008/article/details/40045719 介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过前一篇文章我们对MongoDB有了全面的认识和理解。现在我们就用Java来操作MongoDB的数据。 开发环境: System&#xff1a…...

Java断言(assert)的介绍和使用

Java断言(assert)的介绍和使用 在Java编程中,断言(assert)是一种有用的工具,用于在代码中进行条件检查和调试。通过使用断言,我们可以验证程序的逻辑和假设,确保程序在运行时达到预…...

我的世界Fabric mod开发-快速漏斗

前往我的主页以阅读完整内容,并获取源码 DearXuan的主页 MOD介绍 使用漏斗链进行分类或传递物品时,常常会发现漏斗速度太慢,难以收集全部掉落物.或者漏斗太多,影响性能.而现有的漏斗加速mod则是引入新的快速漏斗,存在各种兼容问题.开服时发现paper服务器可以修改原…...

AI“应用商店”来了!OpenAI首批70个ChatGPT Plugin最全梳理

OpenAI放出大招,本周将向所有ChatGPT Plus用户开放联网功能和众多插件本周将向所有ChatGPT Plus用户开放联网功能和众多插件,允许ChatGPT访问互联网并使用70个第三方插件。 本批第三方插件能够全方位覆盖衣食住行、社交、工作以及学习等日常所需&#x…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...

golang循环变量捕获问题​​

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

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

全面解析数据库:从基础概念到前沿应用​

在数字化时代&#xff0c;数据已成为企业和社会发展的核心资产&#xff0c;而数据库作为存储、管理和处理数据的关键工具&#xff0c;在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理&#xff0c;到社交网络的用户数据存储&#xff0c;再到金融行业的交易记录处理&a…...

阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)

cd /home 进入home盘 安装虚拟环境&#xff1a; 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境&#xff1a; virtualenv myenv 3、激活虚拟环境&#xff08;激活环境可以在当前环境下安装包&#xff09; source myenv/bin/activate 此时&#xff0c;终端…...

ui框架-文件列表展示

ui框架-文件列表展示 介绍 UI框架的文件列表展示组件&#xff0c;可以展示文件夹&#xff0c;支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项&#xff0c;适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...

java高级——高阶函数、如何定义一个函数式接口类似stream流的filter

java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用&#xff08;Math::max&#xff09; 2 函数接口…...

从零开始了解数据采集(二十八)——制造业数字孪生

近年来&#xff0c;我国的工业领域正经历一场前所未有的数字化变革&#xff0c;从“双碳目标”到工业互联网平台的推广&#xff0c;国家政策和市场需求共同推动了制造业的升级。在这场变革中&#xff0c;数字孪生技术成为备受关注的关键工具&#xff0c;它不仅让企业“看见”设…...

C++--string的模拟实现

一,引言 string的模拟实现是只对string对象中给的主要功能经行模拟实现&#xff0c;其目的是加强对string的底层了解&#xff0c;以便于在以后的学习或者工作中更加熟练的使用string。本文中的代码仅供参考并不唯一。 二,默认成员函数 string主要有三个成员变量&#xff0c;…...