解锁Vim编辑器的强大功能:从入门到高手全攻略

C语言与CPP编程 2024-11-20 09:01

击上方“C语言与CPP编程”,选择“关注/置顶/星标公众号

干货福利,第一时间送达!

最近有小伙伴说没有收到当天的文章推送,这是因为微信更改了推送机制,导致没有星标公众号的小伙伴刷不到当天推送的文章,无法接收到一些比较实用的知识和资讯。所以建议大家加个星标⭐️,以后就能第一时间收到推送了。

链接:https://www.cnblogs.com/xyh9039/p/18327652

本章将和大家分享Linux系统中的Vim编辑器。废话不多说,下面我们直接进入主题。

一、Vim 入门帮助

Vim 带有完整的帮助文档:进入 Vim 后输入“:help”即可访问

二、Vim 模式介绍 

与大部分其它编辑器不同,进入 Vim 后,缺省状态下键入的字符并不会插入到所编辑的文件之中。Vim 的模式(mode,可以简单地理解为“状态 ”)概念非常重要。需要知道 Vim 有以下几个模式:

  • 正常(normal)模式,缺省的编辑模式;下面如果不加特殊说明,提到的命令都直接在正常模式下输入;任何其它模式中都可以通过键盘上的 Esc 键回到正常模式。

  • 命令(command)模式,用于执行较长、较复杂的命令;在正常模式下输入“:”(一般命令)、“/”(正向搜索)或“?”(反向搜索)即可进入该模式;命令模式下的命令要输入回车键(Enter)才算完成。

  • 插入(insert)模式,输入文本时使用;在正常模式下键入“i”(insert)或“a”(append)即可进入插入模式(也有另外一些命令,例如:“c”,也可以进入插入模式,但这些命令有其它的作用)。

  • 可视(visual)模式,用于选定文本块;可以在正常模式下输入“v”(小写)来按字符选定,输入“V”(大写)来按行选定,或输入“Ctrl-V”来按方块选定。

  • 选择(select)模式,与普通的 Windows 编辑器较为接近的选择文本块的方式;在以可视模式和选择模式之一选定文本块之后,可以使用“Ctrl-G”切换到另一模式 —— 该模式很少在 Linux 上使用,本文中就不再介绍了。

1、正常模式

2、命令模式

3、插入模式

  • i 光标所在位置插入

  • I 光标所在位置行首插入

  • o 光标所在位置下方新开一行插入

  • O 光标所在位置上方新开一行插入

  • a 光标所在位置下一个字符的位置插入

  • A 光标所在位置行行尾插入

三、Vim 实例

1、首次运行 Vim

[root@localhost myfolder]# ll
总用量
4
-rw-r--r--. 1 root root 152 7月 27 23:28 file1
[root@localhost myfolder]# vim file1

使 Vim 开始编辑一个名为 file1 的文件,屏幕上看起来大致是这样:

1)“黑色块”代表当前光标位置;

2)上波浪线(~)表示所在行并不是文件内容的一部分。换句话说,Vim 将文件之外的部分显示为波浪线;

3)在窗口的底部,一个消息行显示说当前正在编辑的文件叫 file1,它有27行,152个字符,当前光标所在位置为第21行的第1位。

如果是新文件呢?

[root@localhost myfolder]# vim file

在窗口的底部,一个消息行显示说当前正在编辑的文件叫file,并且它是一个新文件。

2、插入文本

Vim 编辑器是一个模式编辑器。这意味着在不同状态下编辑器有不同的行为模式。两个基本的模式 Normal 模式和 Insert 模式。在 Normal 模式下你输入的每一个字符都被视为一个命令。而在 Insert 模式下输入的字符都作为实际要输入的文本内容。刚启动时 Vim 工作于 Normal 模式。要进入 Insert 模式你需要使用“i”命 令(i 意为 Insert),接下来就可以直接输入了。别怕出错,错了还可以修改。

编辑内容时使用 回车键 换行,编辑完成后按下 Esc 键退出 Insert 模式,回到 Normal 模式。

要知道你现在所处的工作模式是什么,打开显示模式的开关:

:set showmode:set noshowmode 关闭显示模式

你会看到按下冒号键之后当前光标跑到窗口的最后一行去了。那是使用冒号命令的地方(顾名思义,冒号命令就是总是以冒号打头的命令)。最后按下回车键结束整个命令(所有的冒号命令都以这种方式表明命令的结束)。

现在,如果你输入了“i”命令 Vim 就会在窗口底部显示—INSERT—(插入)。这表明你目前处于 Insert 模式。如果按下 Esc 键返回到 Normal 模式,则刚才显示出来的模式—INSERT—就会消失;Normal 模式并不会显示—NORMAL—,作为默认的工作模式它不显示任何字符串。

不管你当前所处的模式是什么,按下 Esc 键都会让你回到 Normal 模式(即使已经在 Normal 模式下)。有时需要按两次,如果 Vim 以一声蜂鸣回答你,那说明你已经是在 Normal 模式了。

3、移动光标

回到 Normal 模式后,你就可以用下面的命令来移动光标:

  • h 左

  • j 下

  • k 上

  • l 右

备注:同时你还可以用箭头键来移动光标。不过这样做实际上会大大降低你的效率,因为用这些键你需要不停地在字母区和箭头键之间频繁转换。

4、删除字符

  • 在 Normal 模式下要删除一个字符,只需要将光标移到该字符的前面,然后按下“x”。

  • 在 Normal 模式下要删除一行,使用“dd”命令。

  • 命令“u”可以撤消上一次的操作。

  • 如果你撤消了多次,你还可以用 CTRL R 来反转撤消的动作,即反撤消。

  • 撤消命令还有另一种形式,大写的“U”命令,它一次撤消对一行的全部操作。第二次使用该命令则会撤消前一个“U”的操作。

5、其它编辑命令

另起一行 o/O (在 Normal 模式下):

  • “o”命令可以在当前行的下面另起一行,并使当前模式转为 Insert 模 式。这样你可以在该命令之后直接输入内容。

  • “O”命令(注意是大写的字母O)将在当前行的上面另起一行,并使当前模式转为 Insert 模 式。

6、退出

  • 在 Normal 模式下要退出 Vim,可以使用“ZZ”命令。

  • 放弃所有修改可以使用 :q! 命令。

  • 放弃所有修改并重新载入可以使用 :e! 命令。

  • 保存并退出可以使用 :wq 或 :wq!(强制保存退出) 命令。

7、光标的指定移动

  • 在 Normal 模式下,“G”命令指定一个命令计数,这个命令就会把光标定位到由命令计数指定的行上,比 如“33G”就会把光标置于第 33 行上。

  • “G”命令会把光标定位到最后一行上。

  • “gg”命令是跳转到第一行的快捷方法,和“1G”的效果是一样的。

8、简单搜索

1)“/string”命令,可用于搜索一个字符串,例如:要找到单词“mysql”,则可以使用命令:“/mysql”。

要查找上次查找的字符串的下一个位置,使用“n”命令。如果你知道你要找的确切位置是目标字符串的第几次出现,还可以在“n”之前放置一个命令计数,例如:“3n”则会去查找目标字符串的第3次出现。向光标所在位置以上查找用大写的“N”。

2)“?string”命令,“?”命令与“/”的工作相同,只是搜索方向相反。

3)忽略大小写,可以通过设置“ignorecase”选项:

:set ignorecase  //忽略大小写:set noignorecase  //取消忽略大小写

4)查找结果高亮显示

:set hlsearch  //查找结果设置为高亮显示:set nohlsearch  //取消高亮显示:nohlsearch  //只去掉当前的高亮显示

9、复制粘贴

要把文本内容从一处复制到另一处:

  • 先删除 dd 再粘贴 p

  • “y”操作符命令会把文本复制到一个寄存器中,然后可以用“p”命令把它取回。

“y”命令:

  • “yw”来复制一个word;

  • “y2w”命令复制两个word;

  • “yy”复制一行;

  • “3yy”复制光标所在行和向下的行,一共三行。

10、替换字符

  • :s/UNIX/linux 对光标所在行第一个出现的 UNIX 替换成 linux

  • :s/UNIX/linux /g 对光标所在行所有 UNIX 都替换成 linux ,g 表示全行替换

  • :% s/UNIX/linux /g 将全文中的 UNIX 都替换成 linux ,其中“%”指定该命令将作用于所有行上

四、Vim 的保护机制

如果我们没有通过 q 退出,而是通过其他方式强行退出,比如说直接关终端,会导致 vim 的一个报错,当我们下次打开这个文件的时候,会提示:

E325: 注意发现交换文件 ".file.swp"            所有者: root    日期: Sun Jul 28 19:43:04 2024            文件名: ~root/myfolder/file            修改过: 是            用户名: root      主机名: localhost.localdomain           进程 ID: 3884正在打开文件 "file"              日期: Sun Jul 28 17:25:26 2024
(1) Another program may be editing the same file. If this is the case, be careful not to end up with two different instances of the same file when making changes. Quit, or continue with caution.(2) An edit session for this file crashed. 如果是这样,请用 ":recover""vim -r file" 恢复修改的内容 (请见 ":help recovery")。 如果你已经进行了恢复,请删除交换文件 ".file.swp" 以避免再看到此消息。
交换文件 ".file.swp" 已存在!以只读方式打开([O]), 直接编辑((E)), 恢复((R)), 删除交换文件((D)), 退出((Q)), 中止((A)):


这是因为 vim 他不是实时写入的机制,他会先把文件写到内存,等我们执行 w 操作以后,再写回到原文件。那么在写回原文件,或者执行 q 的放弃操作之前,会生成一个临时的文件,以 . 开头,以 .swp 结尾。当我们看到这种情况,就说明这个文件是在被编辑的过程中强制退出的,或者是正在被人编辑。

所以这个文件的作用就是防止强制退出造成的数据安全隐患,和防止文件同时被多次修改。

我们可以根据他的提示执行相应的操作,比如说 Q 退出。如果想要顺利编辑这个文件的话,一方面可以使用 E 直接编辑,或者先退出,把 swp 文件删除了以后再编辑也是可以的。

注意:使用 vim 需要注意一下权限问题,必须要有读写权限才能使用 vim 。

可以看一下没有写权限和没有读权限会出现什么问题。

EOF

你好,我是飞宇。日常分享C/C++、计算机学习经验、工作体会,欢迎点击此处查看我以前的学习笔记&经验&分享的资源。

我组建了一些社群一起交流,群里有大牛也有小白,如果你有意可以一起进群交流。

欢迎你添加我的微信,我拉你进技术交流群。此外,我也会经常在微信上分享一些计算机学习经验以及工作体验,还有一些内推机会

加个微信,打开另一扇窗

经常遇到有读者后台私信想要一些编程学习资源,这里分享 1T 的编程电子书、C/C++开发手册、Github上182K+的架构路线图、LeetCode算法刷题笔记等精品学习资料,点击下方公众号会回复"编程"即可免费领取~

感谢你的分享,点赞,在看三  

C语言与CPP编程 C语言/C++开发,C语言/C++基础知识,C语言/C++学习路线,C语言/C++进阶,数据结构;算法;python;计算机基础等
评论
  • By Toradex 秦海1). 简介嵌入式平台设备基于Yocto Linux 在开发后期量产前期,为了安全以及提高启动速度等考虑,希望将 ARM 处理器平台的 Debug Console 输出关闭,本文就基于 NXP i.MX8MP ARM 处理器平台来演示相关流程。 本文所示例的平台来自于 Toradex Verdin i.MX8MP 嵌入式平台。  2. 准备a). Verdin i.MX8MP ARM核心版配合Dahlia载板并
    hai.qin_651820742 2025-01-07 14:52 102浏览
  • 村田是目前全球量产硅电容的领先企业,其在2016年收购了法国IPDiA头部硅电容器公司,并于2023年6月宣布投资约100亿日元将硅电容产能提升两倍。以下内容主要来自村田官网信息整理,村田高密度硅电容器采用半导体MOS工艺开发,并使用3D结构来大幅增加电极表面,因此在给定的占位面积内增加了静电容量。村田的硅技术以嵌入非结晶基板的单片结构为基础(单层MIM和多层MIM—MIM是指金属 / 绝缘体/ 金属) 村田硅电容采用先进3D拓扑结构在100um内,使开发的有效静电容量面积相当于80个
    知白 2025-01-07 15:02 140浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球无人机锂电池产值达到2457百万美元,2024-2030年期间年复合增长率CAGR为9.6%。 无人机锂电池是无人机动力系统中存储并释放能量的部分。无人机使用的动力电池,大多数是锂聚合物电池,相较其他电池,锂聚合物电池具有较高的能量密度,较长寿命,同时也具有良好的放电特性和安全性。 全球无人机锂电池核心厂商有宁德新能源科技、欣旺达、鹏辉能源、深圳格瑞普和EaglePicher等,前五大厂商占有全球
    GIRtina 2025-01-07 11:02 115浏览
  • 这篇内容主要讨论三个基本问题,硅电容是什么,为什么要使用硅电容,如何正确使用硅电容?1.  硅电容是什么首先我们需要了解电容是什么?物理学上电容的概念指的是给定电位差下自由电荷的储藏量,记为C,单位是F,指的是容纳电荷的能力,C=εS/d=ε0εrS/4πkd(真空)=Q/U。百度百科上电容器的概念指的是两个相互靠近的导体,中间夹一层不导电的绝缘介质。通过观察电容本身的定义公式中可以看到,在各个变量中比较能够改变的就是εr,S和d,也就是介质的介电常数,金属板有效相对面积以及距离。当前
    知白 2025-01-06 12:04 212浏览
  • 「他明明跟我同梯进来,为什么就是升得比我快?」许多人都有这样的疑问:明明就战绩也不比隔壁同事差,升迁之路却比别人苦。其实,之间的差异就在于「领导力」。並非必须当管理者才需要「领导力」,而是散发领导力特质的人,才更容易被晓明。许多领导力和特质,都可以通过努力和学习获得,因此就算不是天生的领导者,也能成为一个具备领导魅力的人,进而被老板看见,向你伸出升迁的橘子枝。领导力是什么?领导力是一种能力或特质,甚至可以说是一种「影响力」。好的领导者通常具备影响和鼓励他人的能力,并导引他们朝着共同的目标和愿景前
    优思学院 2025-01-08 14:54 51浏览
  • 彼得·德鲁克被誉为“现代管理学之父”,他的管理思想影响了无数企业和管理者。然而,关于他的书籍分类,一种流行的说法令人感到困惑:德鲁克一生写了39本书,其中15本是关于管理的,而其中“专门写工商企业或为企业管理者写的”只有两本——《为成果而管理》和《创新与企业家精神》。这样的表述广为流传,但深入探讨后却发现并不完全准确。让我们一起重新审视这一说法,解析其中的矛盾与根源,进而重新认识德鲁克的管理思想及其著作的真正价值。从《创新与企业家精神》看德鲁克的视角《创新与企业家精神》通常被认为是一本专为企业管
    优思学院 2025-01-06 12:03 152浏览
  • 每日可见的315MHz和433MHz遥控模块,你能分清楚吗?众所周知,一套遥控设备主要由发射部分和接收部分组成,发射器可以将控制者的控制按键经过编码,调制到射频信号上面,然后经天线发射出无线信号。而接收器是将天线接收到的无线信号进行解码,从而得到与控制按键相对应的信号,然后再去控制相应的设备工作。当前,常见的遥控设备主要分为红外遥控与无线电遥控两大类,其主要区别为所采用的载波频率及其应用场景不一致。红外遥控设备所采用的射频信号频率一般为38kHz,通常应用在电视、投影仪等设备中;而无线电遥控设备
    华普微HOPERF 2025-01-06 15:29 160浏览
  •  在全球能源结构加速向清洁、可再生方向转型的今天,风力发电作为一种绿色能源,已成为各国新能源发展的重要组成部分。然而,风力发电系统在复杂的环境中长时间运行,对系统的安全性、稳定性和抗干扰能力提出了极高要求。光耦(光电耦合器)作为一种电气隔离与信号传输器件,凭借其优秀的隔离保护性能和信号传输能力,已成为风力发电系统中不可或缺的关键组件。 风力发电系统对隔离与控制的需求风力发电系统中,包括发电机、变流器、变压器和控制系统等多个部分,通常工作在高压、大功率的环境中。光耦在这里扮演了
    晶台光耦 2025-01-08 16:03 46浏览
  • 大模型的赋能是指利用大型机器学习模型(如深度学习模型)来增强或改进各种应用和服务。这种技术在许多领域都显示出了巨大的潜力,包括但不限于以下几个方面: 1. 企业服务:大模型可以用于构建智能客服系统、知识库问答系统等,提升企业的服务质量和运营效率。 2. 教育服务:在教育领域,大模型被应用于个性化学习、智能辅导、作业批改等,帮助教师减轻工作负担,提高教学质量。 3. 工业智能化:大模型有助于解决工业领域的复杂性和不确定性问题,尽管在认知能力方面尚未完全具备专家级的复杂决策能力。 4. 消费
    丙丁先生 2025-01-07 09:25 108浏览
  • 本文介绍编译Android13 ROOT权限固件的方法,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。关闭selinux修改此文件("+"号为修改内容)device/rockchip/common/BoardConfig.mkBOARD_BOOT_HEADER_VERSION ?= 2BOARD_MKBOOTIMG_ARGS :=BOARD_PREBUILT_DTB
    Industio_触觉智能 2025-01-08 00:06 84浏览
  • 故障现象一辆2017款东风风神AX7车,搭载DFMA14T发动机,累计行驶里程约为13.7万km。该车冷起动后怠速运转正常,热机后怠速运转不稳,组合仪表上的发动机转速表指针上下轻微抖动。 故障诊断 用故障检测仪检测,发动机控制单元中无故障代码存储;读取发动机数据流,发现进气歧管绝对压力波动明显,有时能达到69 kPa,明显偏高,推断可能的原因有:进气系统漏气;进气歧管绝对压力传感器信号失真;发动机机械故障。首先从节气门处打烟雾,没有发现进气管周围有漏气的地方;接着拔下进气管上的两个真空
    虹科Pico汽车示波器 2025-01-08 16:51 53浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 195浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦