Linux编辑器vim
本文已收录至《Linux知识与编程》专栏!
作者:ARMCSKGT
演示环境:CentOS 7
目录
前言
正文
vim常用方式
进入vim
退出vim
vim基本模式及模式功能
命令模式
插入模式
底行模式
替换模式
视图模式
配置vim
自己配置vim
自动化配置vim
最后
前言
我们在使用一款操作系统时,无论是什么系统都有属于自己默认的文本编辑器,本节将介绍Linux编辑器vim!学习完vim,我们就可以相对自由的在Linux上写代码了,最后我们会配置vim环境,搭建主要用于C/C++代码编辑的vim。

正文
vim是一款多模式编辑器,各种模式,每种模式的用法有差别,每种模式相互切换,是一个单纯的编辑器而非编译器。
vim常用方式
进入vim
指令:
vim [文件]未配置的vim进入文本的界面 左下角显示文文本名和当前的模式 退出vim
操作:按键盘上Esc退回到命令模式(或直接Esc退回),然后使用shift+:键,右下角显示模式的位置显示冒号,这是底行模式。在底行模式下输入q退出,一般是输入wq,表示保存并退出!
vim基本模式及模式功能
vim一共有12种模式,其中我们会用到的只有5种模式,常用的只有3种模式:命令模式,插入模式和底行模式!
命令模式
切换方式:任意模式下Esc键进入!
对于未配置的vim进入后左下角是没有任何显示的,这时表示处于命令模式!
命令模式是vim的默认模式,我们使用vim打开任意文件的初始模式都是命令模式,在其他模式下如果想退回命令模式直接按Esc键即可。既然是命令模式就有许多可用的命令在后面会详细介绍!
常用命令
按键中没有提示的默认小写!
1. 移动光标类
vim可以直接用键盘上的光标来上↑,下↓,左←,右→移动,但正规的vim是用小写英文字母「h」、「j」「k」、「l」,分别控制光标左、下、上、右移一格。
h,j,k,l 控制光标上下左右移动 G (或shift+g)
光标移动到文章的最后一行开头 #G (或#shift+g) 光标移动到文章的第 # 行 shift + $ 光标移动到光标所在行的“行尾” shift + ^ 光标移动到光标所在行的“行首” w 光标跳到下个字的开头 e 光标跳到下个字的字尾 b 光标回到上个字的开头 #|( | 是竖画线) 光标移到该行的第#个位置 gg 进入到文本开始 CTRL+ b 屏幕往“后”移动一页 CTRL+ f 屏幕往“前”移动一页 CTRL+ u 屏幕往“后”移动半页 CTRL+ d 屏幕往“前”移动半页 CTRL+ g 显示行号和光标所在文章内容百分比(一般显示在左下角) 2.剪切复制粘贴类
dd 剪切光标所在行 #dd 从光标所在行开始剪切后面的 # 行 (包括光标所在行) x 每按一次,剪切光标所在位置的一个字符 #x 剪切光标所在位置的“后面(包含自己在内)的 # 个字符 X(大写) 每按一次,剪切光标所在位置的“前面”一个字符 #X(大写) 剪切光标所在位置的“前面"的 # 个字符(不包括自己) yw 将光标所在之处到字尾的字符复制(到缓冲区中) #yw 复制#个字(到缓冲区) yy 复制光标所在行(到缓冲区) #yy 从光标所在行开始向下复制 # 行(包括光标所在行) p 将缓冲区内的字符贴到光标所在位置。(注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。) 注意:在vim中是没有特别的删除命令的,剪切后不粘贴就是删除!
3.撤销类
u 撤销,撤回一步(还原到上一步操作,类似于Windows的CTRL + z) CTRL+ r 前进,撤回撤销(相当于Windows的CTRL+ y) 4.替换更改类
cw 更改光标所在处的字到字尾处(相当于一个单词) c#w 更改 # 个词组 r 替换光标所在处的字符 shift+ ~ 将光标处的字母进行大小写切换 插入模式
切换方式:命令模式下使用Insert(Ins)/i/o/a键进入!
左下角显示INSERT字样表示处于插入模式!
插入模式是我们以后进行编辑最常用的方式,只有插入模式下才能自由编辑,否则就会转换为指令!
命令模式下进入插入模式的方法:
Insert(Ins) 键 切换为插入模式且光标停留在原位 i 键 o 键 切换为插入模式并以光标的当前位在下一行重起一行空行 a 键 切换为插入模式且光标向后移动一位 底行模式
切换方式:命令模式下shift+: 进入!
切换为底行模式后,左下角会显示一个:待输入指令。
底行模式下也有很多指令,而且我们以后退出vim都是使用底行模式。在文章后面我们会详细介绍。
常用指令
1.设置行号指令
:set nu //开启行号显示 :set nonu //关闭行号显示
2.光标跳转指令
:# //调转到第 # 行3.搜索字符串并高亮
:/(需要搜索的字符串) :?(需要搜索的字符串)
此时光标所在的高亮字符会呈现不同的高亮色,如果是使用 / 搜索的字符按n键可以让光标移向下一个高亮的字符,如果是使用 ? 搜索按n键可以让光标移动到上一个高亮字符!
4.底行模式执行Linux命令
:!(Linux指令)一般我们在写代码时通过这个命令编译代码文件然后执行程序,这样我们既可以不退出vim也可以查看程序运行情况!
5. 指定字符串并替换
:%s/被替换的文本/替换文本/g
6.多文件vim分屏操作
:vs 文件
vs分屏打开文件时如果没有文件vim会创建在本地一个文件,如果有该文件则可以使用Tap键自动补齐文件名。
在两个vim窗口之间切换要使用CTRL + 连续按两次w
7.保存文件
:w //将文本保存在本地
8.退出vim
:q //退出vim替换模式
切换方式:命令模式下大写R进入(或shift+小写r)。
切换为替换模式后左下角会显示REPLACE字样,代表处于替换模式!
在替换模式下键盘输入的任何字符都会替换当前光标处的字符(包括空格),所以理论上替换模式也可以实现编辑但是不太方便,例如不能删除字符只能替换为空格!
视图模式
切换方式:命令模式下小写v或大写V键!
通过小写v切换为视图模式左下角显示 VISUAL 此时视图模式的选中方式为逐字符选中。
通过大写V切换的视图模式左下角显示 VISUAL LINE ,此时为逐行选中,光标所在行的整行都会被选中!
视图模式通常用于整体替换和快速浏览文本,在代码编辑中快速注释也是通过视图模式!
视图模式代码注释小技巧
1.CTRL+ 大小写v/V,进入视图行插入文本模式
2.通过光标的移动选中需要注释的行(选择时选中两列)
3.切换为大写模式按 I (大写 i )
4.在光标原地输 // 即可完成注释!(如果要插入其他字符也是这样操作)
配置vim
之前在初步介绍时展示的都是未配置的vim,没有配置的vim非常难以使用,来写代码和文本是非常困难的!
我们自己可以修改vim的默认配置文件,来配置我们自己的vim,使它更符合我们的使用!
首先vim的配置文件在用户的家目录~下(每个用户只能配置自己的vim),该文件被隐藏起来了,需要使用ls -a来查看,文件名是.vimrc
自己配置vim
使用vim打开文件.vimrc文件,写入配置指令!
保存并退出,再次打开vim查看文本文件!
其他配置:
1.自动缩进:set autoindent
2.突出显示当前行: set cursorline还有其他很多选项,大家有需要可以在网上搜索进行详细的个性化配置!
自动化配置vim
对于手动配置vim好像非常麻烦,而一般我们配置vim是为了写代码,所以网上有一套非常成熟的配置,可以下载到本地使用!这就是VimForCpp。
可以在giett官网搜索VimForCpp(网页:VimForCpp: 快速将vim打造成c++ IDE (gitee.com))
进入主页向下翻就能看到步骤和介绍! 这里感谢这位大佬提供的vim配置方案!
安装步骤及命令:
1.在 shell 中执行以下指令(命令较长请将下列命令复制完整)
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh2.需要按照提示输入 root 密码
注意: 这个自动安装的方法,目前仅适用于
Centos 7.6,其他平台可能会出现安装失败的情况!
最后
Linux编辑器vim的介绍到这里就结束了,相信vim的学习会为大家打开Linux编程的大门,让我们在Linux中更加畅快的进行开发!
本次Linux编辑器vim知识就介绍到这里啦,希望能够尽可能帮助到大家。
如果文章中有瑕疵,还请各位大佬细心点评和留言,我将立即修补错误,谢谢!

🌟其他文章阅读推荐🌟
Linux 软件包管理器 yum-CSDN博客
Linux基础指令-CSDN博客
Linux权限的基本知识-CSDN博客
🌹欢迎读者多多浏览多多支持!🌹
相关文章:
Linux编辑器vim
本文已收录至《Linux知识与编程》专栏! 作者:ARMCSKGT 演示环境:CentOS 7 目录 前言 正文 vim常用方式 进入vim 退出vim vim基本模式及模式功能 命令模式 插入模式 底行模式 替换模式 视图模式 配置vim 自己配置vim 自动化配置…...
基于“python+”潮汐、风驱动循环、风暴潮等海洋水动力模拟
查看原文>>>基于“python”潮汐、风驱动循环、风暴潮等海洋水动力模拟ADCIRC是新一代海洋水动力计算模型,它采用了非结构三角形网格广义波动连续方程的设计,在提高计算精确度的同时还减小了计算时间。被广泛应用于:模拟潮汐和风驱动…...
《Terraform 101 从入门到实践》 第二章 Providers插件管理
《Terraform 101 从入门到实践》这本小册在南瓜慢说官方网站和GitHub两个地方同步更新,书中的示例代码也是放在GitHub上,方便大家参考查看。 不怕出身低,行行出状元。 插件 Terraform可以对多种平台的多种资源进行管理,这个是通过…...
03- pandas 数据库可视化 (机器学习)
pandas库的亮点: 一个快速、高效的DataFrame对象,用于数据操作和综合索引;用于在内存数据结构和不同格式之间读写数据的工具:CSV和文本文件、Microsoft Excel、SQL数据库和快速HDF 5格式;智能数据对齐和丢失数据的综合处理&#…...
Spring为什么这么火 之 Bean的6种作用域和Bean的生命周期
1、Bean的作用域 1.1、什么是作用域? 限定程序中变量的可用范围叫做作用域,或者说在源代码中定义变量的某个区域就叫做作用域 1.2、Bean的6种作用域 singleton:单例作用域prototype:原型作用域【多例作用域】request࿱…...
【CSS面试题】2023前端最新版css模块,高频15问
🥳博 主:初映CY的前说(前端领域) 🌞个人信条:想要变成得到,中间还有做到! 🤘本文核心:博主收集的CSS面试题 目录 一、CSS必备面试题 1.CSS3新特性 2.CSS实现元素两个盒子垂…...
SpringCloud-Netflix学习笔记10——Hystrix实现服务熔断
一、概述 1、分布式系统面临的问题 复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免的失败! 2、服务雪崩 多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B 和微服务C又…...
精华文稿|迈向统一的点云三维物体检测框架
分享嘉宾 | 杨泽同 文稿整理 | William 嘉宾介绍 Introduction 3D检测是在三维世界中去定位和分类不同的物体,与传统2D检测的区别在于它有一个深度信息。目前,大部分的工作是倾向于用点云去做三维检测,点云实际上是通过传感器去扫描出来的一…...
面试题:Redis网络模型
1 用户空间和内核空间以Centos 7 linux操作系统为例。计算机系统被内核操控, 内核被应用操控。为了避免用户应用导致冲突甚至内核崩溃,用户应用与内核是分离的进程的寻址空间会划分为两部分:内核空间、用户空间。用户空间只能执行受限的命令(Rin3&#x…...
微信小程序开发你可能不知道的开发技巧
1. 页面级data,组件data的查看 页面级data的查看,很多开发者应该都知道;组件级的数据查看我是开发了大半年才发现的; 页面级的data查看: 组件的data查看: 2. 放大模拟器【调整一些UI细节】 效果&#x…...
STM32开发(8)----CubeMX配置串口通讯(中断方式和DMA方式)
CubeMX配置串口通讯(中断方式和DMA方式)前言一、中断方式1.CubeMX配置2.代码实现3.实验结果二、DMA方式1.CubeMX配置2.代码实现3.实验结果总结前言 本章继续介绍使用STM32CubeMX对串口进行配置的方法,串口通讯有三种方式:轮询&am…...
7.1 微服务-SpringCloud(二)
目录 前言 7.1.5 Hystrix 7.1.5.1 什么是Hystrix 7.1.5.2 雪崩问题 7.1.5.3 线程隔离,服务降级 7.1.5.4 搭建 7.1.5.4.1 引入依赖 7.1.5.4.2 开启熔断 7.1.5.4.3 编写降级逻辑 1.局部降级逻辑 2.全局降级逻辑 7.1.5.4.4 设置超时 7.1.5.5 服务熔断 7.…...
Spring的AOP开发-基于xml配置的AOP
Spring的AOP开发-基于xml配置的AOP xml方式AOP快速入门 通过配置文件的方式解决以下问题 配置哪些包、哪些类、哪些方法需要被增强配置目标方法要被哪些通知方法所增强,在目标方法执行之前还是之后执行增强 配置方式的设计、配置文件(注解),Spring已…...
JAVA的垃圾收集器与内存分配策略【一篇文章直接看懂】
内存动态分配和垃圾收集技术是JAVA和C之间最大的区别之一 垃圾收集(Garbage Collection,GC)只办三件事: 哪些内存需要回收什么时候回收如何回收 对于对象回收的方法 引用计数法: 每处引用时1,引用失效…...
NLP学习——信息抽取
信息抽取 自动从半结构或无结构的文本中抽取出结构化信息的任务。常见的信息抽取任务有三类:实体抽取、关系抽取、事件抽取。 1、实体抽取 从一段文本中抽取出文本内容并识别为预定义的类别。 实体抽取任务中的复杂问题: 重复嵌套,原文中…...
【深度学习基础7】预训练、激活函数、权重初始化、块归一化
一、Unsupervised Pre-training 得益于 Hinton and Salakhutdinov 在 2006 年的开创性工作— 无监督预训(unsupervised pre-training);在《Reducing the dimensionality of data with neural networks.》这篇论文中,他们在 RBMs 中引入无监督预训练,下面我们将在Autoenco…...
MetaMQ
文章目录MetaMQMetaMQ 的优势在于:MetaMQ 的劣势也有:MetaMQ MetaMQ 是一个基于以太坊的可扩展分布式消息队列(MQ)系统,它可以支持大规模的分布式应用程序。MetaMQ 是一个开放源代码项目,它支持企业级应用程…...
热门盘点 | 10款评分最高的项目管理工具
项目管理软件可以让项目经理及时掌握项目进展可把复杂的任务分解简单帮助项目经理及时了解整个团队进展随着现代项目需求日趋复杂和个性选一个好的项目管理软件还是很有必要的① PingCode国内研发项目管理软件PingCode,它是国内软件研发项目榜单中评分最高的项目管理…...
若依框架---分页功能
继前几天我们学习若依管理系统中的代码生成工具,我们发现若依系统中还要很多值得学习的地方。今天我们来学习若依管理系统中的分页工具。 若依管理系统是前后端分离的(准确的说,若依有前后端分离版本)。 前端 若依前端的分页没…...
CHAPTER 3 Jenkins SVN GItlab
Jenkins SVN GItlab3.1 JenkinsSVN3.1.1 搭建SVN服务器1. 安装svn server2. 查看svn安装位置3. 创建版本库目录4. 创建svn版本库5. 配置修改6. 防火墙开启3690端口7. 启动SVN-server8. 客户端访问svn服务器3.1.2 测试脚本提交3.1.3 jenkins下载代码配置1. 安装Subversion插件2.…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
























