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

【Linux学习笔记】代码编辑工具vim

    • 1. vim工具基本模式的转换
    • 2. vim命令模式下的各种编辑命令
      • 2.1. 光标行定位
      • 2.2. 光标自由定位
      • 2.3. 复制粘贴
      • 2.4. 删除
      • 2.5. 文本的大小写替换
      • 2.6. 文本的替换
      • 2.7. 文本的前删后删
      • 2.8. 撤销操作
    • 3. vim底行模式下的命令
      • 3.1. 设置行号与取消设置行号
      • 3.2. 分屏操作
      • 3.3. 在不退出vim的情况下执行Linux命令
      • 3.4. 字符串替换
    • 4. vim的配置文件

vim是Linux系统下的一个功能强大,多模式的编辑器。如果要拿Windows中的一个编辑器类比,那就是记事本。

1. vim工具基本模式的转换

简单的介绍一下vim的使用,如图所示:

img

img

img

img

三种模式的相互转换图:

img

2. vim命令模式下的各种编辑命令

2.1. 光标行定位

1. 行右定位

命令:shift + 4(连按,4是键盘上面的4,不是小键盘的数字4)

功能:把光标所在位置直接定位到所在行的最右边。

示范:

img

现在我进行定位操作,将光标定位改行的最右端。

img

2. 行左定位

命令:shift + 6(连按,6是键盘上面的6,不是小键盘的数字6)

功能:把光标所在位置直接定位到所在行的最左边。

示范:

img

现在我在命令模式下,输入指令shift + 6,即可将光标定位到该行的最左端。

img

3. 顶部定位

命令:gg(连按)

功能:把光标所在位置直接定位到最顶部。

示范:

img

在命令模式下,输入指令gg,即可将光标定位到最顶部。

img

4. 底部定位

命令:shift + g(连按)

功能:把光标所在位置直接定位到最底部。

示范:

img

在命令模式下,输入指令shift + g,即可将光标定位到最底部。

img

5. 任意行定位

在底行模式下输入指令 set nu 即可显示现在文本的行数。

命令:n + shift + g(n代表的是具体的数字)

功能:将光标定位到第n行的位置

示范:

img

在命令模式下,输入1 + shift + g,即可将光标定位到第1行。

img

2.2. 光标自由定位

上面讲了光标的行定位,可以把光标定位到任意行的位置。

接下来讲一讲光标上下左右的自由定位。需要用到的是 h j k l 四个字母。

  1. h代表的是光标向左移动1位。
  2. j代表的是光标向下移动1位。
  3. k代表的是光标向上移动1位。
  4. l代表的是光标向右移动1位。

记忆小技巧:

看到键盘上的4个字母的位置。

  • h在最左边,可以认为向左移动。
  • j可以认为是jump的单词的缩写首字母,向下跳就是向下移动。
  • k对应的不是最右边,向下和向上的功能也有了,自然就是向上移动咯。
  • l在最右边,可以认为向右移动。

具体的操作就不做示范了,感兴趣的可以自行尝试一下。

另外的,光标还有其他的定位方式。

1. 按照单词向前定位

指令:w

功能:向后按照单词定位

示范:略

2. 按照单词向后定位

指令:b

功能:向前按照单词定位

示范:略

2.3. 复制粘贴

1. 复制

指令:yy

功能:针对光标所在行进行复制

示范:

img

img

2. 粘贴

指令:p

功能: 将复制的文本进行粘贴

示范:如上图。

其中yy(复制) 和 p(粘贴)支持 nyy 和 np操作(n代表的是具体的数字)。

  1. 10yy代表的是从光标所在行开始数10行进行文本的复制
  2. 10p代表的是将文本内容复制10次。

具体的操作就不做演示了,有兴趣的可以自行尝试!

2.4. 删除

命令:dd

功能:针对光标所在行的内容进行删除

示范:

img

输入删除命令,会把光标所在行的内容删除。

img

其中ndd(n代表的是一个具体的数字),指定删除从光标所在行开始删除n行的内容。

搭配上复制命令(p),可以形成剪切的效果。

img

我输入 3dd,然后将光标移动到最底部,看看效果。

img

另外的,还有按照单词删除的命令。

命令:cw

功能:按照单词进行删除

示范:

img

img

删除后,会自动进入插入模式。另外cw也支持cnw操作,具体的含义就是删除n个单词。

2.5. 文本的大小写替换

命令:shift + ~

功能:将光标所在行的内容逐个进行大小写的替换,如果是大写,则换成小写,如果是小写,则换成大写。

示范:

img

输入命令shift + ~后,看看效果。

img

2.6. 文本的替换

  1. 批量化替换

指令:shift + r

功能:进入替换模式。

示范:

img

img

2. 逐个替换

指令:r

功能:将光标选中的一个内容进行替换

示范:

img

按1下r,然后输入你想要更换的字符。

img

2.7. 文本的前删后删

  1. 前删

命令:shift + x

功能:从光标开始,逐个删除光标前的内容(不包括光标)

示范:

img

输入指令shift + x

img

2. 后删

命令:x

功能:从光标开始,逐个删除光标后的内容(包括光标)

示范:

img

输入指令x

img

2.8. 撤销操作

1. 撤销操作

指令:u

功能:将刚才所做的操作撤销,类似Windows系统下的crtl + z

示范:

img

操作完成后,我再按u撤销刚才的dd操作。

img

img

2. 取消撤销操作

指令:crtl + r

功能:取消撤销操作,类似Windows系统下的crtl + y

示范:略

3. vim底行模式下的命令

3.1. 设置行号与取消设置行号

1. 设置行号

命令:set nu

功能:对当前文本进行行号的显示。

示范:

img

img

2. 取消设置行号

指令: set nonu

功能:取消当前文本的行号显示

示范:

img

3.2. 分屏操作

命令: vs + 文件名

功能:把想要分屏的文件与当前文件进行分屏编写。

示范:

img

注意!光标在哪个文件显示,就说明你当前选中了哪个文件!

当你选中了光标所在的文件,进行的所有操作都是在该文件下操作的,不会影响另一个文件。

如果你想更换文件的选择,只需要当前文件的命令模式下,输入crtl + ww即可完成光标跳转到另一个文件的操作。

3.3. 在不退出vim的情况下执行Linux命令

进入到了vim工具,如果你想查询相关的手册,按照一贯的思维是要退出vim工具的。

但是如果在vim工具下,进入到底行模式,输入! + 相应的Linux命令,即可在不退出vim工具的情况下执行相关的Linux命令。

示范:

img

img

按ENTER重新进入vim工具。

img

3.4. 字符串替换

指令:%s/字符串1/字符串2/g

功能:按照上面的指令,就是讲字符串2换成字符串1。

示范:

img

img

4. vim的配置文件

从下载开始到使用,vim工具用起来就像个记事本一样,命令很多,而且写代码也不太方便。

这是因为这是vim的最初模样,你可以根据你自己的喜好去配置你的vim,让你的vim用起来更得心应手。

下面来说说vim的配置。

  1. 首先在用户的家目录下创建一个.vimrc文件用以配置vim.

img

  1. 上网搜索各种vim的配置

例如像这样的

img

都可以加到.vimrc文件中去,用以配置你的vim。

相关文章:

【Linux学习笔记】代码编辑工具vim

1. vim工具基本模式的转换2. vim命令模式下的各种编辑命令2.1. 光标行定位2.2. 光标自由定位2.3. 复制粘贴2.4. 删除2.5. 文本的大小写替换2.6. 文本的替换2.7. 文本的前删后删2.8. 撤销操作 3. vim底行模式下的命令3.1. 设置行号与取消设置行号3.2. 分屏操作3.3. 在不退出vim的…...

Android Boring SSL

前期设置 SSLContext.getInstance(“TLS”)SSLContext.init()SSLContext.getSocketFactory()SSLSocketFactory.createSocket()NativeSsl.newInstance()BioWrapper 的创建ConscryptEngineSocket.startHandshake() TLS协商 state_start_connect(TLS)state_enter_early_data(TLS)s…...

中国人民大学与加拿大女王大学金融硕士项目:开启你的金融精英之路

在全球化的今天,金融行业的发展日新月异,对金融人才的需求也日益增长。为了满足这一需求,中国人民大学与加拿大女王大学联合推出了金融硕士项目,旨在培养具有国际视野、专业素养和创新能力的金融精英。 这一开创性的项目将两大世…...

HashSet编程小案例,控制生日和姓名。重写HashCode

Java编程: 定义员工Employee类,该类包含:private成员属性name,sal,birthday(MyDate类型), 其中birthday为MyDate类型(属性包括:year,month,day), 要求&…...

虚幻阴影整理

虚拟阴影贴图(VSM)是一种全新的阴影贴图方法,可以提供稳定的高分辨率阴影。通过与虚幻引擎5的Nanite虚拟几何体、Lumen全局光照和反射以及世界分区功能结合使用,它能够实现电影级的品质效果,为大型开放场景提供光照。 …...

MySQL数据库(一)

数据库 —— 基础 1. 数据库 DataBase 数据库管理系统 2. SQL语言2.1 DDL数据定义语言2.1.1 数据库基础操作2.1.2 数据表基础操作2.1.3 字段基础操作 2.2 DML表记录管理2.2.1 插入数据INSERT2.2.2 更新数据UPDATE2.2.3 删除数据DELETE 3. SQL数据类型3.1 数值类型3.1.1 整数类型…...

C++11 新特性

C11 新特性 C11 新特性统一的列表初始化声明auto 关键字decltype 关键字nullptr 关键字 关键字 using使用 using 在子类中引用基类的成员使用 using 关键字定义类型别名 范围-based for 循环右值引用和移动语义左值引用和右值引用右值引用使用场景和意义完美转发 lambda表达式移…...

排查手机应用app微信登录问题不跳转失败原因汇总及其解决方案

经过最近我发的文章,我个人觉得解决了不少小问题,因为最近很小白的问题已经没有人私聊问我了,我总结了一下排查手机应用app微信登录问题不跳转失败的原因汇总及其解决方案在这篇文章中,分析微信登录不跳转的原因,并提供解决方案。希望通过这篇文章,能够帮助大家顺利解决这…...

软考高级系统架构设计师系列之:数学与经济管理

软考高级系统架构设计师系列之:数学与经济管理 一、数学与经济管理二、图论应用-最小生成树三、图论应用-最短路径四、图论应用-网络与最大流量五、运筹方法-线性规划六、运筹方法-动态规划七、运筹方法-转移矩阵八、运筹方法-排队论九、运筹方法-决策-不确定决策十、运筹方法…...

基于Scrapyd与Gerapy部署scrapy爬虫方案【可用于分布式爬虫部署】

scrapyd部署爬虫 Scrapyd 是一个基于 Scrapy 的开源项目,它提供了一个简单的方式来部署、运行和监控 Scrapy 爬虫。它是一个用于集成 Scrapy 爬虫到分布式架构中的工具,允许您在分布式环境中运行爬虫,并提供了一组 Web API,用于管…...

ST-SSL:基于自监督学习的交通流预测模型

文章信息 文章题为“Spatio-Temporal Self-Supervised Learning for Traffic Flow Prediction”,是一篇发表于The Thirty-Seventh AAAI Conference on Artificial Intelligence (AAAI-23)的一篇论文。该论文主要针对交通流预测任务,结合自监督学习&#…...

如何处理C++中的字符串编码和国际化?

在C中处理字符串编码和国际化的常用方式如下: 字符串编码: 使用UTF-8编码:UTF-8是一种可变字节长度的编码方式,广泛用于表示 Unicode 字符。C中的字符串类型std::string默认使用的是UTF-8编码。可以通过使用宽字符类型std::wstrin…...

DH48WK 温控器参数设置

北京东昊力伟科技有限责任公司 温控仪、温度控制器 产品特点: 可外接温度传感器Pt100、Cu50、K、E、J、N、T、R、S、B兼容输入;PID控制输出、位式控制输出、继电器报警输出;控温能满足设定温度值的0.2℃;既可用于加热控制、也可…...

【文档智能】多模态预训练模型及相关数据集汇总

前言 大模型时代,在现实场景中或者企业私域数据中,大多数数据都以文档的形式存在,如何更好的解析获取文档数据显得尤为重要。文档智能也从以前的目标检测(版面分析)阶段转向多模态预训练阶段,本文将介绍目…...

超全整理,性能测试——数据库索引问题定位+分析(详细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、数据库服务器添…...

44springboot摄影跟拍预定管理系统

大家好✌!我是CZ淡陌。一名专注以理论为基础实战为主的技术博主,将再这里为大家分享优质的实战项目,本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路…...

Flink之窗口触发机制及自定义Trigger的使用

1 窗口触发机制 窗口计算的触发机制都是由Trigger类决定的,Flink中为各类内置的WindowsAssigner都设计了对应的默认Trigger. 层次结构如下: Trigger ProcessingTimeoutTriggerEventTimeTriggerCountTriggerDeltaTriggerNeverTrigger in GlobalWindowsContinuousEventTimeTrigge…...

蓝牙资讯|2024年智能家居新趋势,蓝牙助力智能家居发展

2024年将迎来变革,智能家居趋势不仅会影响我们的生活空间,还会提高我们的生活质量,让我们有更多时间享受属于自己的时光。 2024年智能家居新趋势 趋势一:多功能科技 2024年预示着多功能技术的趋势,创新将成为焦点。混…...

机器学习 | Python实现GA-XGBoost遗传算法优化极限梯度提升树特征分类模型调参

机器学习 | Python实现GA-XGBoost遗传算法优化极限梯度提升树特征分类 目录 机器学习 | Python实现GA-XGBoost遗传算法优化极限梯度提升树特征分类基本介绍模型描述程序设计参考资料基本介绍 XGBoost的核心算法思想基本就是: 不断地添加树,不断地进行特征分裂来生长一棵树,每…...

手部关键点检测3:Pytorch实现手部关键点检测(手部姿势估计)含训练代码和数据集

手部关键点检测3:Pytorch实现手部关键点检测(手部姿势估计)含训练代码和数据集 目录 手部关键点检测3:Pytorch实现手部关键点检测(手部姿势估计)含训练代码和数据集 1. 前言 2.手部关键点检测(手部姿势估计)方法 (1)Top-Down(自上而下)方法 (2)Bot…...

服务日志性能调优,由log引出的巨坑

只有被线上服务问题毒打过的人才明白日志有多重要! 谁赞成,谁反对?如果你深有同感,那恭喜你是个社会人了:) 日志对程序的重要性不言而喻,轻巧、简单、无需费脑,程序代码中随处可见…...

【VR】【Unity】如何调整Quest2的隐藏系统时间日期

【背景】 网络虽然OK,但是Oculus Quest要连上商店还必须调整好系统时间,不过在Quest系统中,时间对用户是不可见的,本篇介绍调整的方法。 【方法】 打开SideQuest,没有的话先去下载一个。打开后先登录,如…...

C++之设计模式

C23种设计模式 https://blog.csdn.net/qq_40309341/article/details/120318957 设计模式可以同时使用多个。在软件开发中,通常会根据需求和问题的复杂性,结合多种设计模式来构建应用程序,以提高代码的可维护性、可扩展性和重用性。不同的设计…...

Django ORM查询

文章目录 1 增 -- 向表内插入一条数据2 删 -- 删除表内数据(物理删除)3 改 -- update操作更新某条数据4 查 -- 基本的表查询(包括多表、跨表、子查询、联表查询)4.1 基本查询4.2 双下划线查询条件4.3 逻辑查询:or、and…...

如何在CentOS 7中卸载Python 2.7,并安装3.X

Python是一种常用的编程语言,但是如果您不需要在服务器上使用Python 2.7,那么本文将详细介绍如何在CentOS 7上卸载Python 2.7。 一、检查Python版本 在卸载Python 2.7之前,必须检查系统上的Python版本。 在终端中执行以下命令:…...

10.17七段数码管单个多个(部分)

单个数码管的实现 第一种方式 一端并接称为位码;一端分别接收电平信号以控制灯的亮灭,称为段码 8421BCD码转七段数码管段码是将BCD码表示的十进制数转换成七段LED数码管的7个驱动段码, 段码就是LED灯的信号 a为1表示没用到a,a为…...

linux静态库与动态库

库是一种可执行的二进制文件,是编译好的代码。使用库可以提高开发效率。在Linux 下有静态库和动态库。   静态库在程序编译的时候会被链接到目标代码里面。所以程序在运行的时候不再需要静态库了。因此编译出来的体积就比较大。以 lib 开头,以.a 结尾。…...

LeetCode 面试题 10.03. 搜索旋转数组

文章目录 一、题目二、C# 题解 一、题目 搜索旋转数组。给定一个排序后的数组,包含n个整数,但这个数组已被旋转过很多次了,次数不详。请编写代码找出数组中的某个元素,假设数组元素原先是按升序排列的。若有多个相同元素&#xff…...

SpringCloudSleuth异步线程支持和传递

场景 在使用Sleuth做链路跟踪时,默认情况下异步线程会断链,需要进行代码调整支持。 调整内容 方式一 使用Async实现异步线程 开启异步线程池 EnableAsync SpringBootApplication public class LizzApplication {public static void main(String[] a…...

如何使用 Disco 将黑白照片彩色化

Disco 是一个基于视觉语言模型(LLM)的图像彩色化工具。它使用 LLM 来生成彩色图像,这些图像与原始黑白图像相似。 本文将介绍如何使用 Disco 将黑白照片彩色化。 使用 Disco 提供了一个简单的在线演示,可以用于测试模型。 访问…...