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

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或者a

    • i:表示从光标所在位置进行插入
    • 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:将光标快速移动到所在行的最左侧
  • Gshift + 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 批量化注释和去注释

批量化注释:

  1. 第一步:Ctrl + v
  2. 第二步:h, j, k, l选择要被注释的区域
  3. 第三步:shift + i
  4. 第四步://
  5. 第五步:Esc

批量化去注释:

  1. 第一步:Ctrl + v
  2. 第二步:h, j, k, l选择要被去注释的区域
  3. 第三步: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 解决方案提供了灵活而强大的替代方案。与 Adob​​e 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库中的主要有序数据结构&#xff0…...

读取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)

一个车厢号码识别算法&#xff08;2005年的老程序----ccc&#xff09; 2023-09-18 ccc 程序的识别效果 对图中的车厢号码部分用上下两条线限定分为&#xff0c;然后进行识别。 从上面的识别效果可以看出&#xff0c;识别算法具有一定的鲁棒性&#xff0c;能够适应车厢号码的各…...

「Verilog学习笔记」优先编码器电路①

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 timescale 1ns/1ns//优先编码器电路1 //电路的优先顺序是&#xff0c;从9到1&#xff0c;高级到低级 //9个输入端&#xff1a;I端&#xff0c;4个输出端&#xff1a;Y端&am…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

【C++进阶篇】智能指针

C内存管理终极指南&#xff1a;智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...