如何熟练使用vim工具?

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨
🐻推荐专栏1: 🍔🍟🌯C语言初阶
🐻推荐专栏2: 🍔🍟🌯C语言进阶
🔑个人信条: 🌵知行合一
🍉本篇简介:>:讲解C++中的函数重载、引用、auto关键字、内联函数等.
金句分享:
✨生活本就沉默,但是跑起来有风!✨
前言
文末有彩蛋哦!
Vim是一款文本编辑器,是从Unix中的vi编辑器(visual editor)发展而来的。Vim可以在多种操作系统上运行,包括Unix、Linux、macOS和Windows等。Vim主要用于编辑纯文本文件,支持语法高亮、多窗口编辑、标签页、插件等功能。对于程序员来说,Vim是一个非常强大的编辑器,可以提高编码效率。
目录
- 前言
- 一、vim的使用
- (1) 模式介绍
- (2) 打开vim
- (3) 光标操作(在命令模式下)
- 🍔上下左右移动
- 🌰按单词左右移动
- 🍭行首行尾
- 🍉文章开头和结尾
- 🔑按页和其他
- (4) 删除
- (5) 复制
- (6) 替换
- (7) 撤销与恢复:
- 二、底行模式
- 列出行号(底行模式下)
- 跳转指定行(底行模式下)
- 查找字符(串)
- 保存文件(并退出)
- 三、配置vim
一、vim的使用
(1) 模式介绍
Vim有不同的模式,每个模式都具有不同的功能和操作方式。下面是Vim的几种常见模式的介绍:
-
命令模式(Command Mode):这是
Vim的默认模式,用户可以在该模式下输入命令来执行各种编辑操作, -
插入模式(Insert Mode):在插入模式下,用户可以像在其他编辑器中一样直接输入文本。只有在
Insert mode下,才可以做文字输入,该模式是我们用的最频繁的编辑模式。
(1) 按"i"键即可进入插入模式
(2) 按下"Esc"键可退出插入模式返回命令模式。 -
替换模式(Replace Mode):替换模式允许用户替换已有的文本。
(1)按shift+r键即可进入替换模式,在该模式下,用户输入的字符将直接替换光标当前位置的字符.
(2)按"Esc"键退出替换模式。 -
底行模式(Command-line Mode):底行模式允许用户执行一些高级的编辑和搜索操作。
(1)按shift+;键即可进入底行模式,用户可以在该模式下输入各种命令,文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作等。
(2) 按"Esc"键退出到命名模式.

这些模式的切换可以通过按下相应的快捷键来完成。Vim的模式使得用户可以灵活地进行文本编辑,提高编辑效率。熟练掌握这些模式及其相关操作是使用Vim的关键。
(2) 打开vim
一般情况下,vim都是自带的一款软件.
情况1 :
vim+文件名(文件未被创建)
底行模式按q:文件依旧没有被创建,退出vim.
底行模式按wq:文件被创建,并退出.
情况2:
vim+文件名(文件已被创建)
示例:打开vim

下图是进入vim以后的界面:

输入:i进入插入模式.

如果想退出,按Esc到命令模式,再shift+;到底行模式,输入wq(保存并退出).
(3) 光标操作(在命令模式下)
🍔上下左右移动
vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格
为啥是这四个键代表上下左右而不用光标键 ↑ ↓ ← → .
因为,早期的键盘是没有光标键的。
🌰按单词左右移动
按键「w」:光标跳到下个单词的开头.
按「e」:光标跳到这个词的结尾.
按「b」:光标回到单词的开头.

🍭行首行尾
「 $ 」:移动到光标所在行的“行尾”
「^」:移动到光标所在行的“行首”
🍉文章开头和结尾
[gg]:进入到文本开始
[shift+g]:进入文本末端
跳至指定的行
「ctrl」+「g」列出光标所在行的行号。(底行模式下可以使用set nu列出行号)
「nG」:表示移动光标至文章的n行行首。
🔑按页和其他
「ctrl」+「b」:屏幕往“后”移动一页
「ctrl」+「f」:屏幕往“前”移动一页
「ctrl」+「u」:屏幕往“后”移动半页
「ctrl」+「d」:屏幕往“前"移动半页
「n+l」:光标移到该行的第n个位置,12l,移动到改行的12位置处.
(4) 删除
「x」(小写):,删除光标所在位置的一个字符.
「nx」:表示删除从光标所在位置开始往后n个字符.(包括光标所在字符).
「X」(大写):删除光标所在位置的“前面”一个字符.
「nX」:表示删除从光标所在位置开始的往前n个字符.(包括光标所在字符).
「dd」:删除一行,删除光标所在行.
「ndd」:从光标所在行开始删除n行.
(5) 复制
复制:
「yw」:复制从光标处开始到单词的结尾的字符到缓存区.
「nyw」:复制n个字到缓冲区
「yy」:复制光标所在行到缓冲区。
「nyy」:表示拷贝从光标所在的该行往后n行数据.
粘贴:
「p」:将缓冲区内的字符贴到光标所在位置。
注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
(6) 替换
「r」:替换光标所在处的字符
进入替换模式,直接全部变成替换操作.
「R」:替换光标所到之处的字符,直到按下「ESC」键为止。
(7) 撤销与恢复:
「u」:撤销上一次操作可以按u键.
「ctrl + r」: 恢复:撤销撤销操作.
二、底行模式
先按ESC键回退到命令行模式,再使用shift+:进入底行模式.
列出行号(底行模式下)
「set nu」:会在文件中的每一行前面列出行号。
列出行号前:

列出行号后:

添加行号:
set nu
取消行号:
set nonu
跳转指定行(底行模式下)
「n」: 表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了.

再回车,就会跳到第5行。
查找字符(串)
「/+查找字符(串)」:
示例:查找linux
指令:/linux
配合n进行搜索下一个符合条件的语句.
「?+要查找的字符(串)」:
同样按n可以查找下一处符合条件的语句.
那/ 和 ?查找有和区别?
/:默认是往下(后)搜索.,按n是往下(后)的下一处符合条件的语句.
?:默认是往上(前)搜索.,按n是往下(后)的下一处符合条件的语句.
保存文件(并退出)
保存:
「w」: 将文件保存起来
退出vim:
「q」:退出vim
强制退出:有的时候某些文件不让修改后退出,可以使用q!进行强制退出.
通常我们w和q配合使用,即输入wq指令进行保存并退出.
小知识:
可以在底行模式中执行外部的命令.编译啊等等,而不退出vim.
示例:如果想要使用ls命令.
- 在
Vim编辑器中,按下冒号键(:)进入底行模式。 - 输入
!后面跟着你想要执行的外部指令。示例如果你要执行ls命令来列出当前目录的文件,可以输入!ls。 - 按下回车键,
Vim将会执行该外部指令并在底行显示输出结果。
三、配置vim
我们不难发现,相较于我们之前使用的VS,vim的使用极其不方便,没有语法提醒,也没有括号自动补齐等等功能.这就很难受了,我可适应不了.
为了能够方便我们更加方便的使用vim进行代码的编写,我们可以去配置vim,使其更加符合我们的需求.
在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。

配置自己用户的专属vim
在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。
我们进入自己的家目录:
方法1:
cd ~
方法2:
cd /home/cjn
创建vim的配置文件:touch .vimrc

使用vim对.vimrc文件进行编写:vim .vimrc
下面是示例的一些配置:

配置成功后,保存并退出vim,后续再使用vim就会生效了.

其实上面的配置还是很挫的,毕竟配置这么点东西可不够,没有语法报错,自动补齐括号等等.
但是我们并不擅长去配置vim,所以我这里有一套已经配置好的vim,欢迎大家私信找我免费获取哦!
展示:


好了,本篇的内容就讲到这里了.

相关文章:
如何熟练使用vim工具?
🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 …...
ClassNotFoundException: org.apache.hive.spark.client.Job
hive使用的是3.13版本,spark是3.3.3支持hadoop3.x hive将engine从mr改成spark,通过beeline执行insert、delete时一直报错,sparkTask rpc关闭, 查看yarn是出现ClassNotFoundException: org.apache.hive.spark.client.Job。 开始…...
《合成孔径雷达成像算法与实现》_使用CS算法对RADARSAT-1数据进行成像
CSA 简介:Chirp Scaling 算法 (简称 CS 算法,即 CSA) 避免了 RCMC 中的插值操作。该算法基于 Scaling 原理,通过对 chirp 信号进行频率调制,实现了对信号的尺度变换或平移。基于这种原理,可以通过相位相乘代替时域插值…...
GCN01——Ubuntu中设置vivado编辑器为vscode
确定vscode位置 在命令行中输入 which code得到文件地址 进入文件夹后可看到,这是个链接文件,不过无所谓,就用这个地址就行 设置Text Editor 打开setting选择右侧text editor 这里说明了如何进行设置 将自己的地址加进去就行 /usr/share…...
Android 11.0 软硬键盘同时使用的兼容(软键盘与内置物理键盘共存)
1.概述 在11.0的系统rom产品定制化开发总,在有些设备上,如果外接了USB扫描枪之类的设备,当插入USB扫描枪以后,然后点击输入调用输入法的时候,没有反应,但是拔掉USB扫描枪以后,输入法又能正常使用,这说明和输入法起冲突了,询问了好多同时,说可能把会把USB扫描枪识别为…...
ARM安全架构——为复杂软件提供保护
目录 一、概述 二、栈溢出和执行权限 三、面向返回的编程ROP 四、面向跳转的编程(JOP) 五、将这些技术应用于实际代码 七、检查你的知识...
提升网页交互体验的秘密武器——防抖和节流
说在前面 在现代Web开发中,提高网页性能是至关重要的。本文介绍了防抖和节流这两种常用的性能优化技术,通过控制函数的执行频率,有效减少不必要的计算和网络请求,从而提升用户体验和页面加载速度。 函数节流 节流是指限制一个函数…...
HX3002入耳检测光感驱动调试-感0x08 寄存器溢出,不变化错误问题解决方法
是否需要申请加入数字音频系统研究开发交流答疑群(课题组)?可加我微信hezkz17, 本群提供音频技术答疑服务,+群赠送语音信号处理降噪算法,蓝牙耳机音频,DSP音频项目核心开发资料, 读取光感0x08 寄存器溢出,不变化错误问题?原因 原因:没有读取到0x08数据,没有读0x…...
目标检测开源数据
KITTI KITTI数据集下载(百度云)_kitti数据集百度云-CSDN博客 KITTI数据集下载及解析_kitti bin文件标签-CSDN博客 KITTI 3D目标检测数据集解析(完整版)_kitti数据集结构-CSDN博客 KITTI数据集简介与使用_kitti数据见一个视频多…...
AI模特换装的前端实现
本文作者为 360 奇舞团前端开发工程师 随着AI的火热发展,涌现了一些AI模特换装的前端工具(比如weshop网站),他们是怎么实现的呢?使用了什么技术呢?下文我们就来探索一下其实现原理。 总体的实现流程如下&am…...
git-5
1.GitHub为什么会火? 2.GitHub都有哪些核心功能? 3.怎么快速淘到感兴趣的开源项目 github上面开源项目非常多,为了我们高效率的找到我们想要的资源 根据时间 不进行登录,是没有办法享受到高级搜索中的代码功能的,登录…...
qt 5.15.2压缩和解压缩功能
qt 5.15.2压缩和解压缩功能 主要是添加qt项目文件.pro内容: 这里要先下载quazip的c项目先编译后引入到本项目中/zip目录下 INCLUDEPATH ./zip CONFIG(debug, debug|release) {win32:win32-g: PRE_TARGETDEPS $$PWD/zip/libquazipd.awin32:win32-g: LIBS -L$$PWD…...
thinkphp6出现 htmlentities() expects parameter 1 to be string, array given
为避免出现 XSS 安全问题, thinkphp6默认变量输出都会使用 htmlentities 方法进行转义 输出。 如果不想被转义输出,模板渲染时,需要在变量后面加上 raw方法,如:{$data|raw} 1、出现问题前的代码 PHP代码$this->assi…...
【android开发-03】android中Intent的用法介绍
1,Intent的作用 在Android开发中,Intent的使用非常广泛,包括启动Activity、启动Service、发送广播等。是各组件间交互的一种重要方式,他不仅可以指明当前组件想要执行的动作,还可以在不同组件间传递数据。 Intent可以…...
Java中时间工具详解:java.time包的应用
引言 时间在软件开发中是一个至关重要的概念,而Java自从引入java.time包后,提供了更加强大和灵活的时间处理工具。本文将深入介绍java.time包中的一些常用时间工具,帮助你更好地处理日期和时间的操作。 1. LocalDate - 处理日期 LocalDate…...
mysql 日志分析
程序启动标志 可以直接全局搜索,查看启动了几次 可以看到总共11次,当前是第2次 如何判断mysql是正常关闭,手动启动的 下图中启动之前出现 Shutdown complete打印说明启动之前是正常关闭的...
网络运维与网络安全 学习笔记2023.11.30
网络运维与网络安全 学习笔记 第三十一天 今日目标 实现AP自动注册、配置WLAN业务参数、无线终端通过wifi互访 实现AP自动注册 项目背景 企业内网的大量AP已经通过DHCP的方式获得IP地址 为了实现后期大量AP的统一管理,希望通过AC实现集中控制 在AC设备上&#…...
Perplexity 推出全新大型在线语言模型
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
python中的函数定义
默认参数 注: 在Python中,print(x, and y both correct)是一条打印语句(print statement),用于将一条消息输出到控制台或终端。它的作用是将变量x的值和字符串and y both correct同时输出到屏幕上。 在这个语句中&…...
信贷销售经理简历模板
这份简历内容,以信贷销售经理招聘需求为背景,我们制作了1份全面、专业且具有参考价值的简历案例,大家可以灵活借鉴。 信贷销售经理简历模板在线编辑下载:百度幻主简历 求职意向 求职类型:全职 意向岗位ÿ…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
