如何熟练使用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份全面、专业且具有参考价值的简历案例,大家可以灵活借鉴。 信贷销售经理简历模板在线编辑下载:百度幻主简历 求职意向 求职类型:全职 意向岗位ÿ…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...