Linux——vim简介、配置方案(附带超美观的配置方案)、常用模式的基本操作
vim简介、配置方案、常用模式的基本操作
本章思维导图:
注:本章思维导图对应的xmind和.png文件都已同步导入至资源
1. vim简介
vim是Linux常用的文本编辑器,每个Linux账户都独有一个vim编辑器
本篇我们介绍vim最常用的三种模式:命令模式(command mode)、底行模式(last line mode)、插入模式(insert mode)
1.1 命令模式
-
每次打开
vim编辑器,默认进入的就是命令行模式
在这里插入图片描述

-
命令行模式下无法在打开的文件里插入任何数据,只能执行对应的指令
1.2 底行模式
-
底行模式由命令模式进入
进入方法:命令模式下输入:冒号
:,即shift + ;

- 底行模式下同样不能向打开的文件进行写操作,只能执行对应的底行命令
- 如果要从底行模式退出,按
Esc键即可。且退出到命令模式
1.3 插入模式
-
插入模式由命令模式进入
进入方法:命令模式下输入:
i或者s或者ai:表示从光标所在位置进行插入a:表示从光标的下一个位置进行插入s:表示,删除光标所在字符,再从光标位置进行插入

- 只有在插入模式下才可以对打开的文件进行写操作,即编写程序
- 如果要从插入模式退出,按
Esc键即可。且退出到命令模式
1.4 命令模式、底行模式和插入模式的进出关系

- 可以看出,命令模式是核心模式,它既可以进入插入模式,也可以进入底行模式
- 插入模式和底行模式都可以退出到命令模式
- 插入模式和底行模式不可以直接转换,必须先进入命令模式,再执行对应的命令进入
2. vim的配置

我们先用上面展示的vim编辑器写一段简单的展示代码:

可以看到,默认的Linuxvim编辑器有两大致命缺陷:
- 界面太过简单,可以说是简陋
- 编写程序时没有基本的自动缩进、高亮、自动补齐等许多
Windos编译器都有的功能,使得用起来极度不方便
2.1 .vimrc 隐藏文件
针对上述问题,Linux允许我们修改vim的配置信息,是其具有更加丰富的功能。而对vim编辑器进行修改的信息,就会放在.vimrc这个隐藏文件中。
-
在
root账户中,.vimrc这个隐藏文件默认就在root账户的家目录下:
-
而在普通账户中,
.vimrc文件不会被默认创建,需要自己手动创建:
2.2 配置vim编辑器的方法
一种方法是下载插件,但这种方法较为复杂,这里不做介绍,感兴趣的小伙伴可以上网查阅
还有一种方法就是直接向.vimrc文件写入指定内容,从而让vim编辑器具备某种指定的功能
-
例如,我们现象
.vimrc文件中输入set number 显示行号再次打开
vim编辑器,其页面就会变为:

- 这样,如果想要让自己的
vim编辑器具有某种功能,只需要在.vimrc文件中输入对应的指令就可以了
当然了,如果想要一条条的向.vimrc文件输入各种指令最终实现自己预想的美观的vim编辑器,这个过程肯定是费时且费力的。因此,博主已经为大家准备好了一个较为美观的.vimrc配置文件。先来看看效果:

如果大家想要使用这个配置方案,直接执行下面的命令即可:
sudo yum install -y curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
注:
- 如果所在的普通账户无法使用
sudo指令,请移步Linux——手把手教你解决sudo指令无法使用的问题查看具体解决方案 - 本配置方案只适用于
CentOs系统 - 最好不要在
root账号下下载
3. vim常用模式的基本操作

3.1 命令模式
3.1.1 快速移动光标
$即shift + 4:将光标快速移动到所在行的最右侧^即shift + 6:将光标快速移动到所在行的最左侧G即shift + g:将光标快速移动到文本的结束位置(最后一个字符)gg:将光标快速移动到文本的开始位置(第一个字符)
3.1.2 移动光标
可以用小键盘的⬆、⬇、⬅、➡将光标移动到对应的位置。
但是在Linux中,更推荐用
h, j, k, l这四个字母来移动光标
h:即将光标向左移动一个字符j:即将光标向下移动一个字符k:即将光标向上移用一个字符l:即将光标向右移动一个字符
实际上还有其他移动光标的方式,例如:
w:以字母为单位,将光标向右移动b:以字母为单位,将光标向左移动
3.1.3 复制与粘贴
可以用相关命令对文本的一行或者多行执行复制粘贴操作:
(n)yy:赋值当前(n)行(n)p:在光标所在行的下面粘贴(n行)
3.1.4 撤回与取消撤回
u:取消上一步执行的操作Ctrl + r:取消上一次的撤回操作
3.1.5 删除行
ndd:删除当前所在的(n)行
3.1.6 字符处理
替换字符:
(n)~:将光标后面的(n个)字符,大小变小写,小写变大写
(n)r 输入:将光标后面的(n个)字符全部替换为输入的字符
shift + r:进入替换模式,此时光标所在的字符被替换为输入的字符
删除字符:
(n)x:删除光标所在(n个)字符(向后删除)(n) + shift + x:删除光标所在(n个)字符(向前删除)
3.1.7 批量化注释和去注释
批量化注释:
- 第一步:
Ctrl + v- 第二步:
h, j, k, l选择要被注释的区域- 第三步:
shift + i- 第四步:
//- 第五步:
Esc
批量化去注释:
- 第一步:
Ctrl + v- 第二步:
h, j, k, l选择要被去注释的区域- 第三步:
d
3.1.8 多窗口之间的切换
Ctrl + ww
3.2 底行模式
保存与退出:
q(!):(强制)退出w(!):(强制)保存wq(!):(强制)保存并推出
在不退出vim编辑器的情况下使用shell命令:
! 命令
新建或者打开文件,并新开一个窗口:
vs filename
3.3 处理vim打开文件报错的情况
如果我们在用vim编辑器处理文件时错误的退出当前的编辑(例如直接关闭云服务器或者虚拟机),那么再次用vim打开相同的文件时,就会出现如下报错信息:

我们按如下的步骤解决:
-
第一步:选择
R(ecover)选项,即输入字符e,之后会进入vim编辑器,直接进入底行模式正常退出即可 -
第二步:继续用
vim打开该文件,此时同样会弹出相同的报错信息,这次选择(D)elele it选项,即输入字符d,之后就会进入vim编辑器,此时问题已经得到解决,可以正常进行编写代码了。
相关文章:
Linux——vim简介、配置方案(附带超美观的配置方案)、常用模式的基本操作
vim简介、配置方案、常用模式的基本操作 本章思维导图: 注:本章思维导图对应的xmind和.png文件都已同步导入至资源 1. vim简介 vim是Linux常用的文本编辑器,每个Linux账户都独有一个vim编辑器 本篇我们介绍vim最常用的三种模式:…...
在线预览编辑PDF::RAD PDF for ASP.NET
RAD PDF for ASP.NET作为功能最齐全的基于 HTML 的 PDF 查看器、编辑器和 ASP.NET 表单填充器,RAD PDF 为传统 PDF 解决方案提供了灵活而强大的替代方案。与 Adobe Acrobat Reader 不同,RAD PDF 几乎可以在任何现代网络浏览器中运行,…...
【赠书第4期】机器学习与人工智能实战:基于业务场景的工程应用
文章目录 前言 1 机器学习基础知识 2 人工智能基础知识 3 机器学习和人工智能的实战案例 4 总结 5 推荐图书 6 粉丝福利 前言 机器学习与人工智能是当前最热门的领域之一,也是未来发展的方向。随着科技的不断进步,越来越多的企业开始关注和投入机…...
npm封装插件打包上传后图片资源错误
问题: npm封装插件:封装的组件页面涉及使用图片资源,在封装的项目里调用图片显示正常;但是打包上传后,其他项目引入使用报错找不到图片资源;图片路径也不对 获取图片的base64方法 解决方案: 将…...
[云原生案例2.3 ] Kubernetes的部署安装 【多master集群架构高可用 ---- (二进制安装部署)】
文章目录 1. Kubernetes多Master集群高可用方案1.1 多节点Master高可用的实现过程1.2 实现高可用方法 2. 新Master节点的部署2.1 前置准备2.2 系统初始化操作2.2.1 关闭防火墙、selinux和swap分区2.2.2 修改主机名,添加域名映射2.2.3 修改内核参数2.2.4 时间同步 2.…...
归并排序(含递归和非递归版)
以梦为马,不负韶华 文章目录 引入:实现原理问题引出:递归实现:迭代实现稳定性分析:总结: 引入: 如何将两个有序数组(假设为升序)合并为一个有序数组? 双指针…...
微服务的注册发现和微服务架构下的负载均衡
文章目录 微服务注册模型服务注册与发现怎么保证高可用【1. 服务端崩溃检测】【2. 客户端容错】【3. 注册中心选型】 微服务架构下的负载均衡【1.轮询与加权轮询】【2.随机与加权随机】【3.哈希与一致性哈希】【4.最少连接数】【5.最少活跃数】【6.最快响应时间】【总结】 负载…...
从混沌到有序:sortedcontainers库的数据魔法改变你的编程体验
前言 在当今数据爆炸的时代,高效地处理和操作数据成为每位Python开发者的核心任务。在这个背景下,sortedcontainers库以其强大的有序数据结构为程序员提供了处理大规模数据的优越选择。本文将深入研究sortedcontainers库中的主要有序数据结构࿰…...
读取pdf、docx、doc、ppt、pptx并转为txt
文章目录 一、思路构建二、开始实现三、存在的问题3.1 解析doc文档遇到问题及解决方法:3.2 解析ppt文档遇到问题及解决方法: 四、读取pdf中的图片 一、思路构建 Zip文件和初始化文件放在同一个文件夹下;然后解析zip文件读取到一个新的文件夹…...
11.13/14 理解SDK框架遇到的问题
1.1.浮点数打印问题 float red_increment (target_red_value - initial_red_value) / STEPS; u8 STEPS 100; printf("绿色值每一次增量------%f\n", red_increment); 后面三个参数均为u8类型 希望采用 %f打印出每次的步进值。但是结果为空白 希望采用 %.2f打印…...
计算机网络——b站王道考研笔记
第一章 计算机网络体系结构 1.计算机网络概述 (1)概念 计算机网络是一个将分散的,具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统; 是互连的&#…...
Stm32_标准库_18_串口蓝牙模块_手机与蓝牙模块通信_控制LED灯亮灭
通过输入LED_ON和LED_OFF分别控制LED灯的亮与灭 接线: LED的正极接正电,负极接GPIOA_Pin1 蓝牙模块TXD接GPIOA_Pin3,VCC接正电,GND接负电 注意:USART2是APB1外设,汉字占用字节数是字符的两倍 使用: 手…...
低代码与传统开发:综合比较
近年来,低代码开发作为软件开发的趋势获得了显着的发展势头。根据 MarketsandMarkets 的数据,低代码开发市场预计将实现 28.1% 的大幅增长率,到 2025 年价值将达到 455 亿美元。这一显着增长表明了各行业和企业对低代码平台的需求和采用不断增…...
pyqt环境搭建
创建虚拟环境 # 用管理员身份运行 conda create --prefixE:\Python\envs\pyqt5stu python3.6 # 激活虚拟环境 conda activate E:\Python\envs\pyqt5stu # 退出虚拟环境 conda deactivate安装包 pip install PyQt5 -i https://pypi.douban.com/simple pip install PyQt5-tools…...
JavaScript数据类型和存储区别
目录 一、原始数据类型 二、引用数据类型 三、存储区别 四、常见错误 JavaScript是一种动态类型语言,这意味着变量可以在程序执行过程中改变其数据类型。了解JavaScript中的数据类型和它们的存储方式对于编写高效和可维护的代码至关重要。 在JavaScript中&…...
Java学习笔记(七)——面向对象编程(中级)
一、IDEA (一)常用的快捷键 (二)模版/自定义模版 二、包 (一)包的命名 (二)常用的包 (三)如何引入(导入)包 (四&am…...
详细推导MOSFET的跨导、小信号模型、输出阻抗、本征增益
目录 前言 什么是跨导 什么是小信号模型 什么是输入阻抗和输出阻抗 什么是MOS管的输出阻抗 什么是MOS管的本征增益 共源极放大电路的输入和输出阻抗 一些其它MOS拓扑电路的增益 负载为恒流源 负载为二极管 前言 相信很多人在学习集成电路领域的时候 都对MOS管的…...
循环2作业
第一题 #include <stdio.h>int main() {int n,f,y,i,j;scanf("%d",&n);for(y0;y<100;y)for(f0;f<100;f)if(200*y2*ff*100y-n){printf("%d.%d",y,f);return 0;}printf("%d No Solution",n);return 0; }第二题 #include<stdi…...
一个车厢号码识别算法(2005年的老程序----ccc)
一个车厢号码识别算法(2005年的老程序----ccc) 2023-09-18 ccc 程序的识别效果 对图中的车厢号码部分用上下两条线限定分为,然后进行识别。 从上面的识别效果可以看出,识别算法具有一定的鲁棒性,能够适应车厢号码的各…...
「Verilog学习笔记」优先编码器电路①
专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 timescale 1ns/1ns//优先编码器电路1 //电路的优先顺序是,从9到1,高级到低级 //9个输入端:I端,4个输出端:Y端&am…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
消防一体化安全管控平台:构建消防“一张图”和APP统一管理
在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...
pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决
问题: pgsql数据库通过备份数据库文件进行还原时,如果表中有自增序列,还原后可能会出现重复的序列,此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”,…...
