【Linux】工具(2)——vim

news/2024/4/25 13:26:40/文章来源:https://blog.csdn.net/m0_70811813/article/details/129204834

本期博客我们进入到Linux环境下vim工具的学习:

一、vim是什么

📌Vim是一个超级超级强大的文本编辑器。Vim及前身VI,历史悠久(可能比多数读者的年龄更大),经历了几十年的考验和发展。Vim全称叫Vi IMproved. 而vi则是Visual Interface的缩写,他们处理都是ASCII码字符数据;vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、 windows。

在Linux下推荐使用vim来做为我们代码编辑器,但是不同于我们的vs2022集成环境,vim只是一个单纯的编辑器不含有其他的编译、调试等功能。

二、vim的使用

2.1 vim的模式

vim工具有不少种模式,但是我们常用的只有3~5种,这对我们日常开发来说已经足够了

下图是vim的四种模式的相互转换所需的按键:

下面我们来对Vim常用的三种模式进行详细的讲解:

2.1.1 命令模式

我们首先直接打开vim(在云服务器下vim一般都是自带的,如果没有的话可以用yum来安装)

我们可以直接输入vim来直接打开:

进入vim后默认就是命令模式,在此模式下按键是没有作用的(除了某些特殊键)

现在我们在此模式下我们可以有两种选择:

💡一是按i进入插入模式,二是按shift进入底行模式

📋现在我们来进行实际操作:

我们现在对test.c文件来进行编辑:

当我们使用vim默认进入的是命令模式,现在我们按i进入插入模式

2.1.2 插入模式

当我们按下i进入插入模式后,屏幕的左下角会有一个INSERT提示:

在此模式下我们可以对文件进行编写,在这里先写一段简短的C语言代码:

写完之后我们可以按esc键回到命令模式

❗回到命令模式后屏幕的左下角会有一个INSERT提示会消失

2.1.3 替换模式

在命令模式时,我们可以按shiftr进入到替换模式

进入替换模式后,屏幕的左下角会有一个REPLACE提示:

在此模式中我们可以直接替换光标处的字符:

📋例如

按下x后:

再按一个l:

可以看到光标所在字符都被替换了

写完代码我们一般会保存并退出,这时我们可以按shift进入底行模式

2.1.4 底行模式

进入底行模式后,屏幕左下角会有一个:进行提示

接下来我们可以输入q来退出(但是我们在这个文件里编写了代码,没有保存之前是退出不了的):

遇到这种情况我们可以输入w来保存,最后再输入q来退出(wq两个指令可以连着输入):

退出后我们可以使用cat指令来看一下编辑完后的test.c文件:

2.2 vim指令集

2.2.1 底行模式下的指令

2.2.1.1 set nu / set nonu

在底行模式下我们可以设置是否显示文件文本的行号:

📌具体操作为:set nu(显示行号) / set nonu(不显示行号)

📋下面我们来进入到底行模式下进行操作:

下面就是显示行号的效果:

下面是不显示行号的效果:

2.2.1.2 /

📌/后面加内容可以搜索文本相对应的内容并高亮显示

📋例如

2.2.1.3 %s

📌%s可以替换直到内容

📌具体操作:%s/被替换的内容/想要替换的内容/g

例如:

按下enter后:

2.2.1.4 vs

📌vs可以将另一个文件加入界面进行分屏操作

📌具体操作:vs 文件名

❗注意:如果文件不存在,vim会自动创建该文件并保存

📋例如

这样我们就可以对两个文件分屏进行操作了,按住ctrl再连按两次w键进行分屏的切换

vs不仅仅可以两个文件进行操作,还可以更多

2.2.2 命令模式下的指令

vim的指令大部分都是在命令模式下操作的,坐好小板凳,我们开始出发:

2.2.2.1 (n)yy

📌yy指令可以复制当前行所有内容,在按下yy前按一个数字(n)就可以复制当前光标后n行(包括当前光标所在行)的内容

📋例如我们现在的光标在第五行,现在按两下y键可以复制第五行的内容:

2.2.2.2 (n)p

📌p可以粘贴内容(粘贴在光标的下一行)

📋在上面我们复制了第五行的内容的情况下,现在我们按一下p:

按一下p可以复制一次,我们可以在按下p前按一个数字(n)再按p就可以复制n次:

在这里我按了99,太长了抱歉抱歉,希望没有影响到大家的阅读😅

2.2.2.3 u

📌u指令可以撤销上一次操作

📋我们现在对上一次粘贴的99行内容的操作进行撤销(按一下u键):

发现很好的撤销了,现在再一次的按u可以发现第一次粘贴的内容也被撤销了:

2.2.2.4 Ctrl r

📌Ctrl r指令可以对撤销进行撤销

📋例如我们上一次撤销了粘贴的一行代码,现在我后悔了,按下Ctrl和r键:

现在可以发现上次撤销的代码又回来了

2.2.2.5 (n)dd

📌dd指令可以剪切当前光标所在行的内容,在按下dd前按一个数字(n)就可以剪切当前光标后n行(包括当前光标所在行)的内容

📋例如现在我们剪切光标后2行内容(按下2再按两下d键):

剪切的内容当然也可以粘贴,按下p即可(如果我们剪切后没有按p,那就是相当于删除)

2.2.2.6 (n)shift g

📌shift g指令可以让我们的光标直接移至到文本的最后一行,在按下shift和g前按一个数字(n)就可将光标移至第n行

📋例如现在我们在有一万多行的文本下,按shiftg键可以直接定位到最后一行:

现在按999再按shiftg键可以直接定位到999行:

2.2.2.7 gg

📌gg指令可以将光标移至文本的第一行

📋例如现在我们在有一万多行的文本下,按gg键可以直接定位到第一行:

按下gg:

2.2.2.8 shift 4

📌shift 4可以移动光标到当前文本行的末尾

📋例如:

现在我们按下shift和4:

2.2.2.8 shift 6

📌shift 6可以移动光标到当前文本行的开头

📋例如:

现在我们按下shift和6:

2.2.2.9 (n)w / (n)b

📌w和b分别可以让光标向后或向前移动一个单词的位置,在按下w或b前按一个数字(n)就可将光标向后或向前移n个单词位置

📋例如:

按下w:

再按下w:

按下b:

按下3,再按b:

2.2.2.10 shift ~

📌shift ~可以对文本进行大小写快速的修改

📋例如:

按一下shift和~:

按住shift和~不放可以一路大小写修改下去:

2.2.2.11 (n)r

📌t可以对光标所在字符进行替换,在按下r前按一个数字(n)就可将光标后n个字符替换

📋例如:

先按一下r,再按一下k:

先输入数字10,按一下r,再按一下x:

2.2.2.12 (n)x / (n)shift x

📌x可以删除光标后(包括光标)的字符,shift x可以删除光标前(不包括光标)的字符,在按下x或shift和x前按一个数字(n)就可将光标后或前n个字符删除

📋例如:

按下10再按shift和x:

按下10再按x:

2.2.2.13 h / j / k / l

📌h/j/k/l可以分别让光标向///移动

三、vim的配置

3.1 自己配置

在Linux环境下每个用户都可以配置自己的vim编辑器,配置完只在该用户当前目录下生效不影响其他人的使用

📋现在我来简单配置一下自己的vim:

第一步要创建一个.vimrc的文件

我们在每次打开vim的时候,它都会自动在当前目录下寻找.vimrc文件,如果有就用该文件的配置,没有就用默认配置。所以我们在配置vim时需要.vimrc文件:

第二步在.vimrc文件中配置vim

关于vim的配置,在网上可以搜索的到,这里演示一个作为栗子:

在这里我们将行号显示配置上去,现在我们来打开一下test.c文件:

可以看到直接就有了行号的显示

如果不需要.vimrc文件某些配置可以将其前加上"来注销

3.2自动化配置

在这里有一条自动化配置的指令,我们只需要输入到Linux中即可

❗注意:该配置只支持centos 7的版本

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh


本期的博客到这里又要和各位说再见了,如有纰漏还请各位大佬在评论区指出~

下一期见啦~

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聚类算法(上):8个常见的无监督聚类方法介绍和比较

无监督聚类方法的评价指标必须依赖于数据和聚类结果的内在属性,例如聚类的紧凑性和分离性,与外部知识的一致性,以及同一算法不同运行结果的稳定性。 本文将全面概述Scikit-Learn库中用于的聚类技术以及各种评估方法。 本文将分为2个部分&…

LearnOpenGL-入门-纹理

本人刚学OpenGL不久且自学,文中定有代码、术语等错误,欢迎指正 我写的项目地址:https://github.com/liujianjie/LearnOpenGLProject LearnOpenGL中文官网:https://learnopengl-cn.github.io/ 文章目录纹理纹理环绕方式纹理过滤多…

【java基础】包装类,自动装箱和自动拆箱

文章目录基本介绍包装类自动装箱自动拆箱包装类注意事项包装类比较包装器内容不可变基本介绍 有时,需要将int这样的基本类型转换为对象。所有的基本类型都有一个与之对应的类。 例如,Integer类对应基本类型int。通常,这些类称为包装器&#…

使用file-selector-button美化原生文件上传

前言 你平时见到的上传文件是下面这样的? 还是下面这种美化过的button样式 还是下面这种复杂的上传组件。 <input type="file" >:只要指定的是type类型的input,打开浏览器就是上面第一种原生的浏览器默认的很丑的样式。 下面的两种是我从ElementUI截的图,…

OpenAPI SDK组件介绍

背景 公司成立以来&#xff0c;积累了数以万计的可复用接口。上层的SaaS业务&#xff0c;原则上要复用这些接口开发自己的业务&#xff0c;为了屏蔽调用接口的复杂性&#xff0c;基础服务开发了apisdk组件&#xff0c;定义了一套声明OpenAPI的注解、注解解析器&#xff0c;实例…

scrapy下载图片

&#x1f431; 个人主页&#xff1a;莎萌玩家&#x1f64b;‍♂️ 作者简介&#xff1a;全栈领域新星创作者、专注于全栈各领域技术&#xff0c;共同学习共同进步&#xff0c;一起加油呀&#xff01;&#x1f4ab;系列专栏&#xff1a;网络爬虫、WEB全栈开发&#x1f4e2; 资料…

你应该知道的ChatGPT提示语

ChatGPT 自上线以来&#xff0c;凭借其优异的自然语言理解和输出能力&#xff0c;仅花 5天就成为了活跃用户过百万的现象级产品。而上一个现象级产品 instagram 花了 2 个半月。到目前为止 ChatGPT 在全球累计用户数量已经过亿&#xff0c;相信现在也有很多人在跟 ChatGPT 聊过…

OKR 与 KPI有何异同?各部门OKR实例【小bu】

OKR 与 KPI&#xff0c;如何本土化是关键 近期公司计划对去年实施的绩效考核方案进行优化&#xff0c;公司以往采用 KPI 绩效考核方式&#xff0c;产生了一些争议。一方面&#xff0c;执行期间部分部门一度忽略指标设置的真实目的&#xff0c;导致出现短视思维和行为&#xff1…

TCP协议原理二

文章目录四、滑动窗口二、流量窗口三、拥塞控制四、滑动窗口 前面我们学习了 确认应答&#xff0c;超时重传&#xff0c;连接管理&#xff0c;这些机制都为我们TCP的可靠性提供了保证&#xff0c;当然在保证TCP的可靠性的同时&#xff0c;传输效率也受到了一定的影响&#xff…

05 DC-AC逆变器(DCAC Converter / Inverter)简介

文章目录0、概述逆变原理方波变换阶梯波变换斩控调制方式逆变器分类逆变器波形指标1、方波变换器A 单相单相全桥对称单脉冲调制移相单脉冲调制单相半桥2、方波变换器B 三相180度导通120度导通&#xff08;线、相的关系与180度相反&#xff09;3、阶梯波逆变器独立直流源二极管钳…

BLIP2-图像文本预训练

文章目录摘要解决问题算法模型结构通过frozen图像编码器学习视觉语言表征图像文本对比学习&#xff08;ITC&#xff09;基于图像文本生成&#xff08;ITG&#xff09;图文匹配&#xff08;ITM&#xff09;从大规模语言模型学习视觉到语言生成模型预训练预训练数据预训练图像编码…

Gehpi的网络布局

Gehpi的网络布局1. 力引导布局2. 辅助布局布局是网络可视化中的重要概念&#xff0c;指将点和边通过某种策略进行排布&#xff0c;应尽可能满足以下4个原则&#xff1a; 节点均匀分布在有限的区域内避免边的交叉和弯曲保持边的长度一致整体布局能反映图内在的特性 Gephi的布局…

Vision Transformer学习了什么-WHAT DO VISION TRANSFORMERS LEARN? A VISUAL EXPLORATION

WHAT DO VISION TRANSFORMERS LEARN? A VISUAL EXPLORATION 文章地址 代码地址 摘要 视觉转换器( Vision Transformers&#xff0c;ViTs )正在迅速成为计算机视觉的事实上的架构&#xff0c;但我们对它们为什么工作和学习什么知之甚少。虽然现有研究对卷积神经网络的机制进…

Bunifu.UI.WinForms 6.0.2 Crack

Bunifu.UI.WinForms为 WinForms创建令人惊叹的UI Bunifu.UI.WinForms我们为您提供了现代化的快速用户界面控件。用于 WinForms C# 和 VB.NET 应用程序开发的完美 UI 工具 简单 Bunifu.UI.WinForms没有臃肿的特征。正是您构建令人惊叹的 WinForms 应用程序所需要的。只需拖放然…

JavaSe第3次笔记

1.String str "hello";字符串类型。 2.两个字符串类型相加意思是拼接&#xff0c;类似于c语言里面的strcat函数。 3.整型变成字符串类型: int a 10; String str String. valueOf(a); 4.当字符串和其他类型进行相加的时候&#xff0c;结果就是字符串。(不完全…

MS9132是一款USB 3 0投屏芯片,内部集成USB 3 0 Device控制器、数据收发模块、音视频处理模块

MS9132是一款USB 3.0投屏芯片&#xff0c;内部集成USB 3.0 Device控制器、数据收发模块、音视频处理模块。MS9132可以通过USB 3.0接口将PC、智能手机、平板电脑上的信息显示或扩展到更大尺寸的显示设备&#xff0c;支持HDMI视频接口输出。 主要功能特征 HDMI 1.4b兼容 支持EDI…

RK3568编译Android11和目录讲解

文章目录 前言一、下载android11源码二、环境搭建1.增加交换内存三、编译瑞芯微原厂源码四、目录讲解总结前言 本文记录在Ubuntu18.04中编译Android11,只有编译了源码,后面才能进行驱动的开发,有兴趣的小伙伴可以和我一起学习吧! 提示:以下是本篇文章正文内容,下面案例可…

【华为OD机试模拟题】用 C++ 实现 - 剩余可用字符集 or @分割可用字符集(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 获得完美走位(2023.Q1) 文章目录 最近更新的博客使用说明剩余可用字符集 or @分割可用字符集题目输入输出示例一输入输出说明Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才…

烙铁使用方法

烙铁使用 烙铁是硬件工程师最经常使用的工具之一,一把性能保持良好的烙铁能帮助我们快速进行电路调试。烙铁第一次加热时采用焊锡均匀涂覆在烙铁头上,以便去除包在烙铁头上面的氧化物。在工作中我们需要根据情况选择合适的烙铁头类型,合适的温度进行操作。完成焊接后要在烙铁…

华为OD机试用Python实现 -【贪心的商人 or 最大利润】(2023-Q1 新题)

华为OD机试题 华为OD机试300题大纲贪心的商人 or 最大利润题目描述输入描述输出描述说明示例一输入输出示例二输入输出Python 代码实现华为OD机试300题大纲 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:blog.c…