目录

  • 一、vim的多模式
    • 1.1 命令模式
      • 1.1.1 光标移动
      • 1.1.2 复制及撤销
      • 1.1.3 剪切及删除
      • 1.1.4 替换
      • 1.1.5 批量化注释/去注释
    • 1.2 底行模式
  • 二、vim的配置

在这里插入图片描述
个人主页<—请点击
Linux专栏<—请点击

一、vim的多模式

vim是一款功能强大的文本编辑器,它编辑代码主要围绕命令展开,vim下常见的模式有命令模式、插入模式和底行模式

在这里插入图片描述
如上图,vim就是所安装的一款软件,没有什么神秘的地方。

现在我想写一段代码,我们就可以使用vim了。
在这里插入图片描述
使用vim打开之后,默认是在命令模式下,你会发现你按电脑的按键屏幕没有反应,有时候你触碰到某个按键会有反应。如果你要写代码就要切换到插入模式,按i键就可以切换,插入模式按Esc键就能切换到命令模式

此时关注左下角的图标,会发现命令模式切换到插入模式是这样的:
在这里插入图片描述

切换到插入模式就可以写代码了,你会发现vim使用起来像记事本一样,没有自动空行以及代码提醒功能,这些功能是可以配置的,稍后会讲解。

我现在写了一份代码,可我该怎么退出呀?
在这里插入图片描述
想要退出就需要切换到底行模式,此时插入模式是无法直接切换成底行模式的,需要回退到命令模式,再Shift + ;键也就是:切换到底行模式,底行模式按Esc切换到命令模式。

在底行模式下输入wq保存并退出按回车就退出了。
在这里插入图片描述

1.1 命令模式

为了详细讲解,我们需要给代码加上行号,即切换到底行模式输入set nu,去除行号输入set nonu

1.1.1 光标移动

在命令模式下对光标做快速移动:Shift+g:移动到最后一行,gg:移动到第一行,n+Shift+g:快速移动到第n行

现在我要快速移动到文本的第666行,即666+Shift+g
在这里插入图片描述

Shift+6=^:快速移动到当前行开始,Shift+4=$:快速移动到当前行结尾
在这里插入图片描述

光标的控制h:左、j:下、k:上、l:右,当然使用键盘上的方向键也是可以的,但为什么会有这四个键呢?因为早些时候键盘上没有方向键。
在这里插入图片描述
n+h/j/k/l:进行光标的快速移动

w:按照单词为单位向右移动,b:按照单词为单位向左移动。n+w/b:按照n个单词为单位快速右/左移动

1.1.2 复制及撤销

yy:复制光标所在的行,p:将复制内容粘贴到当前行的下一行
在这里插入图片描述
n+yy:拷贝从当前光标所在行往下的n行文字,n+p:将复制的内容重复粘贴n

u:撤销操作Ctrl+r:对u的撤销进行撤销。假设你对上次的撤销操作后悔了,你可以撤销上次的撤销操作。
在这里插入图片描述
注意:只要没有退出vim,随时可以进行撤销操作,一旦退出,u/Ctrl+r就不起作用了

1.1.3 剪切及删除

dd:删除当前行,n+dd:删除从当前行开始向下的n如果后续没有进行p操作,那就是删除,如果后面进行p操作,那就叫剪切。

对文件进行100+ddp
在这里插入图片描述

x:删除光标所在字符,连续x会向右删除。Shift+x=X:向左删除。n+x/n+Shift+x:连续删n
在这里插入图片描述

1.1.4 替换

~:快速进行大小写转换
在这里插入图片描述

r:替换光标所在位置的一个字符。例如对光标所在位置进行r+2
在这里插入图片描述
n+r:替换光标所在位置及之后的n-1个位置的字符。例如6+r+1
在这里插入图片描述

Shift + r进入替换模式,批量化的内容替换Esc再切换成命令模式
在这里插入图片描述
会直接对之前的内容进行替换

1.1.5 批量化注释/去注释

想要选择区域,我们需要进入到视图模式,即Ctrl+v进入视图模式,Esc切换成命令模式。

  • 批量化注释

Ctrl+v进入视图模式,hjkl进行区域选择,Shift+i=I进入插入模式输入//,按Esc切换成命令模式完成注释
在这里插入图片描述

  • 批量化去注释

Ctrl+v进入视图模式,hjkl进行区域选择,按d删除注释
在这里插入图片描述

1.2 底行模式

w!:强制保存,q!:强制退出,wq!:强制保存并退出

底行模式输入set nu增添行号,去除行号输入set nonu

/XXX:匹配搜索,按n匹配到下一个最近的XXX
在这里插入图片描述

!cmd:不退出vim,可以直接执行cmd命令。例如在vim中对正在写的文件进行编译运行。
在这里插入图片描述

%s/src/dst/g:将文本中的src替换成dst。例如将打印信息换掉。
在这里插入图片描述

vim本身就有创建新文件的作用,了解这个之后,我们继续了解。我们平常写代码有时候会分成多文件管理,如头文件的声明,头文件的定义及源文件,在vim下我们也可以这样管理。

在底行模式下,输入vs即可进行分屏操作,Ctrl+ww即可实现光标在多个分屏之间的移动
在这里插入图片描述
在这里插入图片描述

在编译时总会有错误的时候,这时系统会直接报出错误的地方,此时我们使用vim打开源文件时光标可能并不在错误附近,一下一下挪太麻烦了,我们可以在打开时光标直接定位到错误的位置:vim 文件名 +行号
在这里插入图片描述

扩充:从命令模式进入插入模式,按a或按i或按o。从命令模式退出vim,按Shift+zz,等同于wq
在这里插入图片描述

二、vim的配置

当前的vim没有自动缩进功能,什么功能都没有,我们使用vim时,vim默认会在用户的家目录下找一个隐藏的配置文件.vimrcvim的那些自动缩进等功能是通过这个文件配置的,而这个文件是默认是没有的。

如何验证vim会默认打开.vimrc这个文件呢? 我准备了一个写入以下代码的文件。
在这里插入图片描述

我们创建.vimrc,并在其中写入一行set nu
在这里插入图片描述
接下来,我们再次使用vim打开code.c
在这里插入图片描述
它就默认加上行号了!所以,vim做配置,本质是将配置项写入到/home/XXX/.vimrc配置文件中。

所以进行vim的配置就转化成了我们需要写入哪些配置项

即使是将功能齐全的配置项全部添加到.vimrc中,vim依旧会很难用,想更好用此时你就需要安装vim插件,你会发现配置vim比较麻烦。

有没有一键安装vim的呢? 诶,有的。 这个命令不要在root用户下运行,在普通用户下运行即可,curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh。接下来你就有了一个功能强大的vim
在这里插入图片描述

注意:配置好vim后只会在当前用户账号下有效

配置好后,有什么极个别命令不符合你的要求可以配合大模型搜索相应的配置项,并在.vimrc中自主搜索修改即可。

总结:
以上就是本期博客分享的全部内容啦!如果觉得文章还不错的话可以三连支持一下,你的支持就是我前进最大的动力!
技术的探索永无止境! 道阻且长,行则将至!后续我会给大家带来更多优质博客内容,欢迎关注我的CSDN账号,我们一同成长!
(~ ̄▽ ̄)~

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spark 核心原理:RDD, DataFrame, DataSet 的深度解析

Apache Spark 是一个强大的分布式计算系统&#xff0c;以其内存计算、速度快、易用性强等特点&#xff0c;在大数据处理领域占据重要地位。理解 Spark 的核心原理&#xff0c;特别是其三种核心抽象——RDD, DataFrame, DataSet——对于高效地使用 Spark 至关重要。本文将深入解…

Docker 命令行的使用

1.Docker 命令列表[roothost1 ~]# docker Usage: docker [OPTIONS] COMMANDA self-sufficient runtime for containersCommon Commands:run Create and run a new container from an imageexec Execute a command in a running containerps List cont…

Redis Stream:轻量级消息队列深度解析

&#x1f4e8; Redis Stream&#xff1a;轻量级消息队列深度解析 文章目录&#x1f4e8; Redis Stream&#xff1a;轻量级消息队列深度解析&#x1f9e0; 一、Stream 数据结构解析&#x1f4a1; Stream 核心概念&#x1f4cb; Stream 底层结构⚡ 二、消息生产与消费&#x1f68…

Android studio的adb和终端的adb互相抢占端口

在Android Studio调试时&#xff0c;有时候也需要借助终端的adb命令&#xff0c;他们互相抢占端 口&#xff0c;导致调试麻烦解决如下&#xff1a;① 终端adb的版本是&#xff1a;1.0.39路径是:/usr/lib/android-sdk/platform-tools/adb② Android Studio使用的adb来源于Androi…

GEO服务商推荐:移山科技以划时代高精尖技术引领AI搜索优化新纪元

引言&#xff1a;AI搜索生态重塑与GEO优化战略地位跃升AI技术对信息检索范式的颠覆GEO优化在企业增长中的核心作用第一章&#xff1a;AI搜索新纪元的企业营销挑战与机遇生成式AI成为用户主要信息入口的行业趋势企业在AI搜索中的“答案主权”争夺战GEO优化服务商的核心能力模型&…

Android SystemServer 系列专题【AttentionManagerService】

AttentionManagerService是framework中用来实现屏幕感知的一个系统级服务&#xff0c;他继承于systemserver。我们可以通过dumpsys attention来获取他的一些信息。如下针对屏幕感知的功能的引入来针对这个服务进行一个介绍。1、屏幕感知Settings UI实现屏幕感知的功能在A14上面…

nginx 反向代理使用变量的坑

nginx采用反向代理的时候使用变量的坑 正常情况&#xff1a; location ~ ^/prod-api(?<rest>/.*)?$ {# 假设 $mes_backend 形如: http://127.0.0.1:16889proxy_pass $mes_backend$rest$is_args$args;proxy_http_version 1.1;proxy_set_header Host $host;…

Origin绘制径向条形图|科研论文图表教程

数据排列格式截图&#xff0c;请查看每张图↘右下角水印 目录 数据排列格式截图&#xff0c;请查看每张图↘右下角水印 本 期 导 读 No.1 理解图形 1 定义 2 特点 3 适用场景 No.2 画图教程 1 导入数据&#xff0c;绘制图形 2 设置绘图细节 本 期 导 读 径…

MySQL InnoDB 的 MVCC 机制

前言 多版本并发控制&#xff08;MVCC&#xff09;是 MySQL InnoDB 存储引擎实现高性能事务的核心机制。它通过创建数据快照&#xff0c;使得读写操作可以无锁并发&#xff0c;极大地提升了数据库的并发性能。本文将深入探讨 MVCC 的工作原理、实现细节以及它与事务隔离级别的紧…

景区负氧离子气象站:引领绿色旅游,畅吸清新每一刻

在绿色旅游成为消费主流的今天&#xff0c;游客对 “清新空气” 的需求不再是模糊的期待&#xff0c;而是可感知、可选择的具体体验。景区负氧离子气象站的出现&#xff0c;正以科技之力重塑绿色旅游格局&#xff0c;让 “畅吸清新每一刻” 从口号变为触手可及的现实&#xff0…

Pytorch笔记一之 cpu模型保存、加载与推理

Pytorch笔记一之 cpu模型保存、加载与推理 1.保存模型 首先&#xff0c;在加载模型之前&#xff0c;我们需要了解如何保存模型。PyTorch 提供了两种保存模型的方法&#xff1a;保存整个模型和仅保存模型的状态字典&#xff08;state dict&#xff09;。推荐使用第二种方式&…

当AI在代码车间组装模块:初级开发者的创意反成「核心算法」

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录当AI在…

技术视界 | 跨域机器人通信与智能系统:打破壁垒的开源探索

8 月 16 日&#xff0c;在 OpenLoong 社区举办的第九期线下分享会上&#xff0c;国家地方共建人形机器人创新中心的软件开发负责人 Amadeus 博士带来了一场主题为“跨域机器人通信与智能系统&#xff1a;打破行业壁垒的创新方案”的演讲。深入探讨了当前机器人领域的一个关键痛…

Android入门到实战(八):从发现页到详情页——跳转、传值与RecyclerView多类型布局

一. 引言在上一篇文章里&#xff0c;我们从零开始实现了 App 的 发现页面&#xff0c;通过网络请求获取数据&#xff0c;并使用 RecyclerView 展示了剧集列表。但光有发现页还不够&#xff0c;用户在点击一部剧时&#xff0c;自然希望进入到一个更详细的页面&#xff0c;去查看…

【工具】41K star!网页一键变桌面应用

项目中遇到了一个需要将现有的 web 页面打包成一个 桌面应用 的需求。 最一开始想到的是 Electron&#xff0c;但是它还需要一些开发工作并且打包后的应用体积比较大&#xff0c;调研后发现了开源工具 Pake。 它能让你用最轻量的方式&#xff0c;把任何网页一键打包成跨平台桌…

浪潮CD1000-移动云电脑-RK3528芯片-2+32G-安卓9-2种开启ADB ROOT刷机教程方法

浪潮CD1000-移动云电脑-RK3528芯片-232G-安卓9-2种开启ADB ROOT刷机教程方法 往期文章&#xff1a; 浪潮CD1000-移动云电脑-RK3528芯片-232G-安卓9-开启ADB ROOT破解教程 地址1&#xff1a;浪潮CD1000-移动云电脑-RK3528芯片-232G-开启ADB ROOT破解教程-CSDN博客 中国移动浪潮…

Day23_【机器学习—聚类算法—K-Means聚类 及评估指标SSE、SC、CH】

一、聚类算法概念属于无监督学习算法&#xff0c;即有特征无标签&#xff0c;根据样本之间的相似性&#xff0c;将样本划分到不同的类别中。所谓相似性可以理解为欧氏距离、曼哈顿距离、切比雪夫距离... 。分类按颗粒度分为&#xff1a;粗聚类、细聚类。按实现方法分为&#xf…

android seekbar显示刻度

SeekBar简介 SeekBar是Android中的一个可交互UI组件&#xff0c;允许用户通过拖动滑块在特定范围内选择数值。继承自ProgressBar&#xff0c;但增加了用户手动调节功能&#xff0c;常用于音量控制、亮度调节等场景。 核心属性 android:maxHeight // 背景高度 android:progres…

【高并发内存池】五、页缓存的设计

文章目录Ⅰ. page cache页缓存的结构设计Ⅱ. 完善central cache中的 get_span() 函数Ⅲ. 实现页缓存获取span对象的接口Ⅰ. page cache页缓存的结构设计 ​ 首先页缓存还是一个哈希桶的结构&#xff0c;但是和前两者不同的是&#xff0c;页缓存的哈希桶中存放的是一个或者多个…

Elasticsearch(text和keyword)区别分析

text:全文检索类型,经过分词处理,支持模糊匹配‌ keyword:精确匹配类型,适用于聚合、排序和过滤‌ text 1. 核心属性 ‌analyzer属性‌: 指定用于索引和搜索的分词器 默认使用标准分析器(Standard Analyzer) 示例:"analyzer": "ik_max_word"(中文…