【Linux环境基础开发工具】编辑器-vim

news2025/1/10 12:54:12

写在前面

vim是一个编辑器,是在Linux下编程的常用工具,如果要学习在Linux下的编程,

那学会使用vim是一个必修课,今天我就来讲解如何使用vim编辑器。

目录

写在前面

什么是vim

vim的常用命令

(1)gg:定位光标到第一行第一个位置

(2)shift + g:定位光标到最后一行

(3)n + shift + g:定位光标到第n行

(4)shift + $:定位光标到当前行的最后一个位置

(5)shift + ^:定位光标到当前行的第一个位置

(6)使用 w,b:光标能进行跨单词的行动

(7)使用 h,j,k,l:进行上下左右的光标移动操作

(8)按住 shift + ~:进行大小写转换

(9)使用 yy 复制光标所在行 

(10)使用 p 进行粘贴操作

(11)使用 dd:进行剪切操作

(12)使用 u 可以进行撤销操作

(13)使用 Ctrl + r 可以撤销刚刚的撤销操作

(14)使用 r 可以对光标字符进行替换

(15)使用 shift + r 可以进入替换模式

(16)使用 x 可以删除光标所在字符

(17)底行模式 vs:进行多文件编写

如何批量化注释

vim的配置问题

写在最后:


什么是vim

vim是一个多模式的编辑器,所以我会从多个模式开始讲解vim的使用。

但是在这之前,我想说,我们的vim一开始是一个裸vim,没有经过任何配置的,

界面不好看,用起来没有语法提示和补全,很难受,而我用过的vim是配置过的,

如果你是一边看博客一边实操的,我建议学会基本的操作之后,

从目录跳转到vim配置那一部分,先把vim配置好。

vim最常用的三种模式分别是:

1. 命令模式

2. 底行模式

3. 插入模式

比如说我们创建一个文件,使用vim打开它:

 进去之后的界面就是命令模式。

 输入 i 就能进入插入模式,

进入插入模式就可以正常编写程序了。

我们可以看到他左下角变成绿色了,INSERT就是插入的意思。

我们随便编写一些代码:

然后,只要按ESC按键,就能直接退回到命令模式。

只要我们输入' : ' 这个符号就能进入底行模式:

我们就能操作了,输入w就是保存,输入q就是退出,也可以直接wq保存并退出。

然后我们就能看到自己写的代码了:

补充一点,无论什么模式,按ESC按键一般都能切换会命令模式。

vim的常用命令

让我们重新用vim打开这个文件,来学习一下vim的常用的命令:

(1)gg:定位光标到第一行第一个位置

 (2)shift + g:定位光标到最后一行

(3)n + shift + g:定位光标到第n行

这个我就不演示了,跟前两个差不多。

(4)shift + $:定位光标到当前行的最后一个位置

 (5)shift + ^:定位光标到当前行的第一个位置

(6)使用 w,b:光标能进行跨单词的行动

 w是往后跳,b是往前跳,效果就是跨单词跳转。

(7)使用 h,j,k,l:进行上下左右的光标移动操作

他们分别表示的操作以及记忆方法:

h表示左,h在最左边,所以表示左也不奇怪。

l表示右,l在最右边,所以表示右也不奇怪。

j表示下,j可以理解成jump,往下跳。

k表示上,只剩下k了,他也只能表示上了。

这个是我的记忆方法啦。

(8)按住 shift + ~:进行大小写转换

 当然也可以转换回来:

也可以只转一半:

(9)使用 yy 复制光标所在行 

复制这个操作当然是需要配合粘贴啦。

(10)使用 p 进行粘贴操作

下图就是 yy 之后 p

 我们还能 n + p,表示粘贴 n 次:

比如说 100 p:

可以看到粘贴了100行。

 当然,y也可以使用 n + yy 复制 n 行的内容

比如我们 2 yy 一下:

再 p 一下:

可以看到确实是复制了两行。

(11)使用 dd:进行剪切操作

dd 当然也支持 n + dd 剪切 n 行:

 使用 4 dd:

 再 p 一下就能回来:

 (12)使用 u 可以进行撤销操作

就是撤销上一步的操作啦,我就不演示了。

(13)使用 Ctrl + r 可以撤销刚刚的撤销操作

就是撤销刚刚用 u 撤销的操作啦,我也不演示了。

(14)使用 r 可以对光标字符进行替换

我用 r 把 h 替换成 y 了。

 当然也支持 n + r 的操作批量化替换,我就不演示了。

(15)使用 shift + r 可以进入替换模式

像这样:

 就可以直接编写代码替换:

 编写完,按ESC回到命令行模式就行了。

(16)使用 x 可以删除光标所在字符

就像下面这样,按一下x就删除一个。 

  

当然,使用 n + x 就是删除 x 后面的字符了。

上面基本上都是命令模式的命令,

(17)底行模式 vs:进行多文件编写

 比如我们输入:

就能分两个文件编写代码了:

 支持多个文件都是没有问题的:

 使用 Ctrl + 双击w 可以进行文件之间的跳转,

这里我就不演示了。

如何批量化注释

这个操作比较复杂

具体如下:

先Ctrl + v

然后使用 hjkl等命令确定需要注释的范围

 然后 shift + i

然后输入 //

最后按ESC按键,就能批量化注释了:

 这里我就顺便把批量化删除注释一起说了:

先Ctrl + v

然后使用 hjkl等命令确定删除的注释范围

 输入 dd 即可。

基本上,熟练使用上述命令就足够应付Linux下vim的编程了。

vim的配置问题

我这里就不详细介绍vim有什么配置的方案了,

随便上网一搜,就能搜到很多的vim配置版本以及配置方法,

我这里就把我vim的配置放出来:

在你想要使用这个vim配置的用户下输入这一段指令,根据提示操作即可:

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

如果你想先了解一下这个配置是咋样的,可以搜索这个网址查看详情:

VimForCpp: 快速将vim打造成c++ IDE (gitee.com)

另外,

这个vim配置是默认两格的缩进,如果不习惯,

可以输入:

vim /home/(这里填你的用户名)/.vimrc

修改缩进的格子数:

 将这三个参数修改成4即可,如果不出意外,应该就在50~52行这里。

以上。

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果感到有所收获的话可以给博主点一个哦。

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~

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

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

相关文章

C++之堆排

堆排的原理和结构: 堆排序是一种常见的排序算法,基于堆这种数据结构实现。堆是一种特殊的树形数据结构,它满足以下两个条件: 堆是一棵完全二叉树。 堆的任意节点的值,都必须大于等于(或小于等于&#xff0…

平板第三方电容笔怎么样?apple pencil一代平替笔推荐

我是一位数码产品的爱好者,所以我对电容笔也有一定的了解。我认为,苹果的原装电容笔和一般的电容笔的区别,在于它们所能产生的压感效果不同。由于苹果的电容笔具有独特的“重力压感”,因此,这款画笔能让我们快速地在画…

搜索二维矩阵 II——力扣240

文章目录 题目描述法一)二分查找法二)抽象二叉搜索树BST法三)直接查找 题目描述 法一)二分查找 与搜索二维矩阵——力扣74不同,本题没有保证「每行的第一个整数大于前一行的最后一个整数」,因此无法采取「两…

CentOS安装过程笔记

以前弄过一个ls的版本是直接虚拟机带起的。是系统都是别人给设置好调好的win系统的。后来发现问题,自己也不会搞,所以那个平台就一直扔在那里也没用过。 这次自己搞就想从0试一下吧。一直以为服务器必须Linux才行,所以就想安个CentOS&#x…

TLS 加速技术:Intel QuickAssist Technology(QAT)解决方案

作者:vivo 互联网服务器团队- Ye Feng 本文介绍了 Intel QAT 技术方案,通过Multi-Buffer技术和QAT硬件加速卡的两种方式实现对TLS的加速 一、背景 当前 TLS 已经成为了互联网安全的主要传输协议,TLS带来更高的安全性的同时,也带…

【C++】用红黑树迭代器封装map和set

封装有点难 - . - 文章目录 前言一、红黑树原先代码的修改二、红黑树迭代器的实现总结 前言 因为我们要将红黑树封装让map和set使用,所以我们要在原来的基础上将红黑树代码进行修改,最主要的是修改模板参数,下面我们直接进入正题&#xff1a…

C++ 布隆过滤器哈希切割

前言 现实生活中,存在很多key_value的模型,我们可以使用哈希或者红黑树存储这些数据。但是二者只是内存的存储方式,无法处理海量数据。 海量数据的处理我们可以使用位图处理。但是位图的局限性是,其只能映射整型,对于…

【k8s】Jenkins实现springcloud应用CI、CD实践 【三】【待写】

一、运行Jenkins流水线流程思路: 场景:java微服务应用, 单体仓库,多个微服务模块,(并行构建、自动化构建、根据模块变更仅更新特定模块) java、nodejsCI阶段 并行方式; 根据模块变…

港联证券|标普500指数年内涨逾9%,美股牛市已至?

今年以来,美国标普500指数累计上涨超过9%,这引发了一场关于美股牛市是否已经到来的辩论。 持悲观态度的摩根士丹利股票策略师威尔逊(Michael Wilson)警告称,最近的反弹不过是一种假象。而美国银行的萨勃拉曼尼亚&#…

四、数据仓库详细介绍(规范)

大家好,这是数据仓库系列的第三个话题,排序在架构之后、建模之前。为什么会提的这么靠前呢? 因为规范约束的是数仓建设的全流程,以及后续的迭代和运维。事实上,数仓规范文档,应该随着架构设计文档&#xf…

chatgpt赋能Python-python_lambdify

Python Lambdify: 一个方便的数学表达式转换工具 Python是一种广泛使用的编程语言,适用于各种领域,如数据科学、机器学习和科学计算等。在这些领域中,数学表达式起到了至关重要的作用,而Python Lambdify(简称为“lamb…

计算机操作系统(慕课版)第四章课后题答案

一、简答题 1.什么是临界资源?什么是临界区? 临界资源:以互斥形式访问的资源;临界区:访问临界资源的代码。 2.同步机制应遵循的准则有哪些? 空闲让进;忙则等待;有限等待&#xff1b…

Windows本地快速搭建SFTP服务共享文件【外网访问】

文章目录 1. 搭建SFTP服务器1.1 下载 freesshd服务器软件1.3 启动SFTP服务1.4 添加用户1.5 保存所有配置 2 安装SFTP客户端FileZilla测试2.1 配置一个本地SFTP站点2.2 内网连接测试成功 3 使用cpolar内网穿透3.1 创建SFTP隧道3.2 查看在线隧道列表 4. 使用SFTP客户端&#xff0…

数据结构与算法-单调栈1

先介绍一下单调栈是什么 一种特别设计的栈结构,为了解决如下的问题: 给定一个可能含有重复值的数组arr,i位置的数一定存在如下两个信息 1)arr[i]的左侧离i最近并且小于(或者大于)arr[i]的数在哪? 2)arr[…

买法拍房注意事项

1、查清法拍房房屋属性。 竞拍前需查清楚法拍房的使用年限、能否办理房产证、土地性质等。 若土地为划拨属性,房屋可能需补缴土地出让金,该费用最好提前咨询当地不动产登记中心了解。 2、产权是否涉及二次过户。 二次过户指的是房屋已经过2次交易&…

苦卷一个月,P9大佬给我的Alibaba面试手册,终于成功踹开字节大门

怎么说呢,今年真的是寒气逼人啊!在这个大环境下,裁员已经不算是特别的事情,粗暴裁员也许是未来一种趋势…在职的卷的起飞,离职的找不到好工作。 做点能做的:跑跑步骑骑车多锻炼;当当上面正版书…

分布式全局唯一id实现-2 springCloud-MyBatis-Plus集成百度分布式全局id(uid-generator)

前言:MyBatis-Plus 集成百度的uid-generator ,实现业务实体在insert 实体时,可以自动获取全局id,完成数据保存; 1 uid-generator 全局id 生成的方式了解: Snowflake算法描述:指定机器 & 同…

如何避免孩子独自在家偷偷使用电脑?

电脑为我们的生活带来了极大的便利,但是对于孩子来说,过早的接触网络很容易影响其健康的成长。家长在家的话,还可以监督孩子,但如果家长出门了,该如何避免孩子偷偷使用电脑呢?其实方法很简单,只…

网络进阶学习:交换机二层

交换机二层 交换机的概念和作用交换机的划分交换机第二层的内容⭐第一部分:MAC地址⭐第二部分:逻辑链路控制子层⭐第三部分:介质访问控制子层⭐第四部分:交换机转发表⭐第五部分:VLAN⭐第六部分:STP 交换机…

Hudi系列25: Flink SQL使用checkpoint恢复job异常

文章目录 一. 通过Flink SQL将MySQL数据写入Hudi二. 模拟Flink任务异常2.1 手工停止job2.2 指定checkpoint来恢复数据2.3 整个yarn-session上的任务恢复 三. 模拟源端异常3.1 手工关闭源端 MySQL 服务3.2 FLink任务查看 FAQ:1. checkpoint未写入数据2. checkpoint 失败3. 手工取…