『Linux升级路』基础开发工具——vim篇

🔥博客主页:小王又困了
📚系列专栏:Linux
🌟人之为学,不日近则日退
❤️感谢大家点赞👍收藏⭐评论✍️
目录
一、vim的基本概念
📒1.1命令模式
📒1.2插入模式
📒1.3底行模式
二、vim的基本操作
📒2.1进入vim
📒2.2模式转换
📒2.3退出vim
三、命令模式命令集
📒3.1移动光标
📒3.2复制粘贴
📒3. 3删除文字
📒3.4撤销
📒3.5替换
四、底行模式命令集
📒4.1调出行号
📒4.2保存退出
📒4.3多文件操作
📒4.4命令执行
📒4.5查找字符
五、vim的配置
📒5.1配置文件的位置
📒 5.2vim常用配置选项
🗒️前言:
本期给大家介绍的工具是vim,它是多模式编辑器,vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、 windows。
一、vim的基本概念
我们先介绍 vim 的三种模式,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
📒1.1命令模式
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式下,或者进入底行模式。
📒1.2插入模式
只有在插入模式下,才可以做文字输入,按ESC键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。
📒1.3底行模式
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下输入,shift + ' : '即可进入底行模式。
注意:要查看你的所有模式:打开vim,底行模式直接输入help vim-modes。
二、vim的基本操作
📒2.1进入vim
指令:
- vim code.c
在系统提示符号输入vim加文件名称后,就进入vim全屏幕编辑画面。打开vim默认是命令模式,命令模式下所有的输入都被当成命名,所以我们敲击键盘,屏幕不会显示字符,想要显示字符,我们要切换为插入模式,接下来就让我们看看怎么切换模式。
注意:如果vim后的文件不存在,系统会生成一个新文件并进入编辑画面。
📒2.2模式转换
🎀「命令模式」切换为「插入模式」
从命令模式切换为插入模式,可以输入 a 或 o 或 i ,它们三个的区别在于,进入插入模式后光标的位置不同。
- 输入 a :进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字
- 输入 o :进入插入模式后,是插入新的一行,从行首开始输入文字
- 输入 i :进入插入模式后,是从光标当前位置开始输入文件
🎀「插入模式」切换为「命令模式」
点击键盘上的Esc键,就可以退回到命令模式。(所有模式退到命令模式都是按Esc)
🎀「命令模式」切换为「底行模式」
- 点击shift + ; ,其实就是输入:。


插入模式无法直接进入底行模式, 因为插入模式下所有的输入都会被当成文本输入,没有被解释成命令。
📒2.3退出vim
要退出vim要在底行模式下进行,在命令模式下输入下「:」即可进入底行模式,输入q退出vim。
- :w :保存当前文件
- :wq:保存并退出vim
- :q!:不保存,强制退出vim
三、命令模式命令集
📒3.1移动光标
- $ :移动到光标到所在行的行尾
- ^ :移动到光标到所在行的行首
- gg:移动到光标到文本开始
- G :移动到光标到文本末尾
- w :光标移动到下个字的开头(可以配合n,一次跳过n个单词)
- b :光标移动到上个字的开头(可以配合n,一次跳过n个单词)
- h 、 j 、 k 、 l :以字符为单位,进行左、下、上、右移动
📒3.2复制粘贴
- yy:复制光标所在行到缓冲区
- p :将缓冲区内的字符贴到光标所在行的下一行位置。
- n+yy:n是任意数字,从光标所在行开始,复制n行
- n+p:n是任意数字,将缓冲区的的字符粘贴n份
注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
📒3. 3删除文字
- dd:删除光标所在行
- n+dd:从光标所在行开始删除n行
- x :删除光标所在位置的一个字符
- n+x:删除从光标位置开始的n个字符
- X :删除光标所在位置的前一个字符
- n+X:删除从光标位置开始的前n个字符
注意:dd完如果不p的话就是删除,如果p的话就是剪切。
📒3.4撤销
- u :回到上一个操作,按多次可以执行多次回复
- ctrl+r:撤销的恢复
📒3.5替换
- shift + ~:快速更换大小写
- r :替换光标所在字符,点击r后,再点输入待替换的字符
- n+r:把从光标位置开始的n个字符全部替换成目标字符
- R :替换光标所到之处的字符,直到按下Esc键停止
四、底行模式命令集
在使用底行模式之前,请记住先按ESC键确定已经处于命令模式,再按冒号即可进入底行模式。
📒4.1调出行号
- set nu:调出行号,在文件每一行前面列出行号
- set nonu:取消行号
📒4.2保存退出
- w :保存
- w!:强制保存
- q :退出
- q!:强制退出
- wq:保存并退出
- wq!:强制保存并退出
📒4.3多文件操作
- vs 文件名:实现多文件分屏
- ctrl+w+w:实现光标在分屏多文件之间的切换

注意:光标在哪个界面,我们就在编辑哪一个界面,底行也是一样。
📒4.4命令执行
- !command:在底行模式下执行命令
在!后直接跟shell命令就可以执行 。
📒4.5查找字符
- / 关键字:先输入 / ,在输入你先更要查找的字符,如果第一次找的不是你想要的,可以一直按n,会继续往后寻找你想要的。
- ?关键字:先输入 ? ,在输入你先更要查找的字符,如果第一次找的不是你想要的,可以一直按n,会继续往后寻找你想要的。
五、vim的配置
没有配置的vim,在插入模式下写代码的时候,没有任何语法提醒,也没有自动补全功能,使用起来比较笨重。要实现在写代码的时候给出提示,需要我们自行对vim进行配置。
📒5.1配置文件的位置
配置项一般都放在用户家目录下,我们在家目录下建立私有的配置文件,命名为.vimrc。如果/root目录下,已经存在一个.vimrc文件,就不用创建。
示例:
1. 我们先进入配置文件,给配置文件中加入,调出行号的选项set nu

2. 再用vim打开文件,就可以看见,文本每一行的前面都有了行号

以上就是配置vim的基本原理,即:将自己所需要的配置项,写入配置文件.vimrc中就行。
在每一个用户自己家目录下配置的vim不会影响的其他普通用户,只对当前用户有效。而在/ect/目录下的.vimrc属于系统公共的vim配置文件,对所有用户都有效,一般不建议对公共的配置文件进行修改。
📒 5.2vim常用配置选项
set nu //设置行号
syntax on //语法高亮
set showmode //底部显示当前处于什么模式
set cursorline //显示行号下划线
set shiftwidth=4 //设置缩进的空格数为4
……
本次的内容到这里就结束啦。希望大家阅读完可以有所收获,同时也感谢各位读者三连支持。文章有问题可以在评论区留言,博主一定认真认真修改,以后写出更好的文章。你们的支持就是博主最大的动力。
相关文章:
『Linux升级路』基础开发工具——vim篇
🔥博客主页:小王又困了 📚系列专栏:Linux 🌟人之为学,不日近则日退 ❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、vim的基本概念 📒1.1命令模式 📒1.2插入模式 &…...
【Excel】补全单元格值变成固定长度
我们知道股票代码都为6位数字,但深圳中小板代码前面以0开头,数字格式时前面的0会自动省略,现在需要在Excel表格补全它。如下图: 这时我们需要用到特殊的函数:TEXT或者RIGHT TEXT函数是Excel中一个非常有用的函数。TEX…...
HackTheBox-Starting Point--Tier 2---Base
文章目录 一 题目二 过程记录2.1 打点2.2 权限获取2.3 横向移动2.4 权限提升 一 题目 Tags Web、Vulnerability Assessment、Custom Applications、Source Code Analysis、Authentication、Apache、PHP、Reconnaissance、Web Site Structure Discovery、SUDO Exploitation、Au…...
算法导论笔记4:散列数 hash
一 了解一些散列的基本概念,仅从文字角度,整理了最基础的定义。 发现一本书,《算法图解》,微信读书APP可读,有图,并且是科普性质的读物,用的比喻很生活化,可以与《算法导论》合并起…...
知识蒸馏概述及开源项目推荐
文章目录 1.介绍2.知识2.1 基于响应的知识(response-based)2.2 基于特征的知识(feature-based)2.3 基于关系的知识(relation-based) 3.蒸馏机制3.1 离线蒸馏3.2 在线蒸馏3.3 自蒸馏 4.教师-学生架构5.蒸馏算法5.1 对抗性蒸馏(Adversarial Dis…...
jupyter notebook中markdown改变图像大小
文章目录 🕮原始图像🕮改变图像大小🕮使图像靠左 在 jupyter notebook中,导入的图片过大,想要改变图像的大小 🕮原始图像 🕮改变图像大小 复制小括号里面的内容到src后面,满足<…...
SpringGateWay——yml文件配置详解
Spring Gateway 是一个基于 Spring 框架的网关服务,主要作用是将流量路由到不同的微服务中。它的灵活性和可扩展性使它成为构建云原生应用架构的不二之选。 下面是 Spring Gateway 的 yml 文件配置参数详解: spring:cloud: gateway: routes: # 路由相…...
Haproxy实现七层负载均衡
目录 Haproxy概述 haproxy算法: Haproxy实现七层负载 ①部署nginx-server测试页面 ②(主/备)部署负载均衡器 ③部署keepalived高可用 ④增加对haproxy健康检查 ⑤测试 Haproxy概述 haproxy---主要是做负载均衡的7层,也可以做4层负载均衡 apache也可…...
k8s最详细集群部署
安装kubeadm、kubectl、和 kubelet 这里通过百度网盘下载所需要的安装包: 链接: k8s部署包.zip_免费高速下载|百度网盘-分享无限制 提取码: 0000 1、下载部署包到本地后,在k8s部署包/k8s目录下 执行此yum命令安装:yum localinstall ./*.r…...
Redis底层数据结构:字典
在 Redis 中,字典(Dictionary)是一种常用的底层数据结构,它被用于实现 Redis 的哈希表(Hash Table)数据结构。字典用于存储键值对,它提供了快速的键值查找、插入和删除操作。 Redis 字典的特点&…...
upload 文件自动上传写法,前后端 下载流文件流
<el-uploadv-model:file-list"fileList":action"app.api/student/student/import":headers"{// Content-Type: multipart/form-data;boundary----split-boundary, 此处切记不要加,否则会造成后端报错 Required request part file is…...
Python文件、文件夹操作汇总
目录 一、概览 二、文件操作 2.1 文件的打开、关闭 2.2 文件级操作 2.3 文件内容的操作 三、文件夹操作 四、常用技巧 五、常见使用场景 5.1 查找指定类型文件 5.2 查找指定名称的文件 5.3 查找指定名称的文件夹 5.4 指定路径查找包含指定内容的文件 一、概览 在…...
CHM Viewer Star 6.3.2(CHM文件阅读)
CHM Viewer Star 是一款适用于 Mac 平台的 CHM 文件阅读器软件,支持本地和远程 CHM 文件的打开和查看。它提供了直观易用的界面设计,支持多种浏览模式,如书籍模式、缩略图模式和文本模式等,并提供了丰富的功能和工具,如…...
【GIT】git分支命令,使用分支场景介绍git标签介绍,git标签命令,git标签使用的场景git查看提交历史
目录 一,git分支命令,使用分支场景介绍 二,git标签介绍,git标签命令,git标签使用的场景 三,git查看提交历史 前言: 今天我们来聊聊关于Git 分支管理。几乎每一种版本控制系统都以某种形式支持…...
Zeitgeist ZTG Token以及其预测市场加入Moonbeam生态
波卡上的首选多链开发平台Moonbeam宣布与Zeitgeist达成XCM集成,将ZTG Token引入Moonbeam。此集成将使波卡内的Moonbeam和Zeitgeist网络之间的流动性得以流动,并通过Moonbeam的互连合约实现远程链集成。 Zeitgeist是一个基于波卡的Substrate区块链框架构…...
AM@方向导数概念和定理
文章目录 abstract方向导数二元函数方向导数偏导数是方向导数的特例偏导数存在一定有对应的方向导数存在方向导数存在不一定有偏导数存在例 三元函数方向导数例 方向导数存在定理和计算公式证明二元函数三元函数 abstract 方向导数的概念,定理和计算公式方向导数是对偏导的补充…...
微信小程序隐私政策不合规,应当由用户自主阅读后自行选择是否同意隐私政策协议,不得默认强制用户同意
小程序隐私政策不合规,默认自动同意《用户服务协议》及《隐私政策》,应当由用户自主阅读后自行选择是否同意隐私政策协议,不得默认强制用户同意,请整改后再重新提交。 把 登录代表同意《用户协议》和《隐私政策》 改为 同意《用…...
Python中如何判断两个对象的内存地址是否一致?
目录 一、引言 二、Python的内存管理 三、对象的比较 四、使用id函数判断内存地址 五、总结 一、引言 在Python中,我们经常需要比较两个对象是否是同一个对象,或者说它们是否在内存中占据同一位置。在理解这个问题之前,我们需要了解Pyt…...
唯美仙侠3D手游2023【仙变3】画面精美/linux服务端+双端+GM后台+运营后台+详细教程
搭建资源下载地址:https://www.ldmzy.com/6618/6618.html...
React组件通信:如何优雅地实现组件间的数据传递
在React应用中,组件通信是至关重要的一部分。通过合适的数据传递和交互方式,我们可以构建出更加灵活和高效的前端应用。本文将介绍React组件通信的各种方式,并提供代码实现,帮助你更好地理解和应用这些技术。 1. 使用props进行父子…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
go 里面的指针
指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...
springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...
消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...




