解锁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;计算机基础等
评论 (0)
  •     爬电距离指的是两个带电体之间、带电体和大地之间,沿着绝缘材料表面的最短距离。与爬电距离有关的标准有IEC 61010-1。PCB设计方面,可以参照IPC-2221B。        (图源TI)    任何情况下,爬电距离不允许小于电气间隙。当绝缘材料是空气时,爬电距离可以和电气间隙相等。电气间隙的简介见协议标准第011篇。        一般情况下
    电子知识打边炉 2025-04-19 20:54 51浏览
  •     CTI是Comparative Tracking Indices的缩写,在GB 4207中被译作“比较追踪指数”,我认为还是“漏电起痕指数”更容易理解。    CTI表述了材料的绝缘特性——阻止不希望出现的电流。CTI的单位是V,在绝缘物表面添加一定量的电解液并施加电场,观察在绝缘物表面既不会持续产生火焰,也不会因为热、介质击穿、湿气或者污染物产生电弧放电留下痕迹(起痕)的最高电压。CTI的测量方法见IEC 60112 (GB 4207)。&nbs
    电子知识打边炉 2025-04-19 21:20 57浏览
  •   无人机蜂群电磁作战仿真系统软件,是专门用于模拟、验证无人机蜂群在电磁作战环境中协同、干扰、通信以及对抗等能力的工具。下面从功能需求、技术架构、典型功能模块、发展趋势及应用场景等方面展开介绍:   应用案例   目前,已有多个无人机蜂群电磁作战仿真系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润无人机蜂群电磁作战仿真系统。这些成功案例为无人机蜂群电磁作战仿真系统的推广和应用提供了有力支持。   功能需求   电磁环境建模:模拟构建复杂多样的电磁环境,涵盖各类电磁干扰源与
    华盛恒辉l58ll334744 2025-04-17 16:49 148浏览
  • 近日,全球6G技术与产业生态大会(简称“全球6G技术大会”)在南京召开。紫光展锐应邀出席“空天地一体化与数字低空”平行论坛,并从6G通信、感知、定位等多方面分享了紫光展锐在6G前沿科技领域的创新理念及在空天地一体化技术方面的研发探索情况。全球6G技术大会是6G领域覆盖广泛、内容全面的国际会议。今年大会以“共筑创新 同享未来”为主题,聚焦6G愿景与关键技术、安全可信、绿色可持续发展等前沿主题,汇聚国内外24家企业、百余名国际知名高校与科研代表共同商讨如何推动全行业6G标准共识形成。6G迈入关键期,
    紫光展锐 2025-04-17 18:55 204浏览
  • 一、行业背景与需求随着智能化技术的快速发展和用户对便捷性需求的提升,电动车行业正经历从传统机械控制向智能交互的转型。传统电动车依赖物理钥匙、遥控器和独立防盗装置,存在操作繁琐、功能单一、交互性差等问题。用户期待通过手机等智能终端实现远程控制、实时数据监控及个性化交互体验。为此,将蓝牙语音芯片集成至电动车中控系统,成为推动智能化升级的关键技术路径。二、方案概述本方案通过在电动车中控系统中集成WT2605C蓝牙语音芯片,构建一套低成本、高兼容性的智能交互平台,实现以下核心功能:手机互联控制:支持蓝牙
    广州唯创电子 2025-04-18 08:33 205浏览
  • 现阶段,Zigbee、Z-Wave、Thread、Wi-Fi与蓝牙等多种通信协议在智能家居行业中已得到广泛应用,但协议间互不兼容的通信问题仍在凸显。由于各协议自成体系、彼此割据,智能家居市场被迫催生出大量桥接器、集线器及兼容性软件以在不同生态的设备间构建通信桥梁,而这种现象不仅增加了智能家居厂商的研发成本与时间投入,还严重削减了终端用户的使用体验。为应对智能家居的生态割裂现象,家居厂商需为不同通信协议重复开发适配方案,而消费者则需面对设备入网流程繁琐、跨品牌功能阉割及兼容隐患等现实困境。在此背景
    华普微HOPERF 2025-04-17 17:53 121浏览
  •   北京华盛恒辉无人机电磁兼容模拟训练系统软件是专门用于模拟与分析无人机在复杂电磁环境中电磁兼容性(EMC)表现的软件工具。借助仿真技术,它能帮助用户评估无人机在电磁干扰下的性能,优化电磁兼容设计,保障无人机在复杂电磁环境中稳定运行。   应用案例   目前,已有多个无人机电磁兼容模拟训练系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润无人机电磁兼容模拟训练系统。这些成功案例为无人机电磁兼容模拟训练系统的推广和应用提供了有力支持。   系统功能   电磁环境建模:支持三维
    华盛恒辉l58ll334744 2025-04-17 15:10 110浏览
  • 一、行业背景与需求智能门锁作为智能家居的核心入口,正从单一安防工具向多场景交互终端演进。随着消费者对便捷性、安全性需求的提升,行业竞争已从基础功能转向成本优化与智能化整合。传统门锁后板方案依赖多颗独立芯片(如MCU、电机驱动、通信模块、语音模块等),导致硬件复杂、功耗高、开发周期长,且成本压力显著。如何通过高集成度方案降低成本、提升功能扩展性,成为厂商破局关键。WTVXXX-32N语音芯片通过“单芯片多任务”设计,将语音播报、电机驱动、通信协议解析、传感器检测等功能整合于一体,为智能门锁后板提供
    广州唯创电子 2025-04-18 09:04 193浏览
  •   无人机电磁环境效应仿真系统:深度剖析   一、系统概述   无人机电磁环境效应仿真系统,专为无人机在复杂电磁环境下的性能评估及抗干扰能力训练打造。借助高精度仿真技术,它模拟无人机在各类电磁干扰场景中的运行状态,为研发、测试与训练工作提供有力支撑。   应用案例   目前,已有多个无人机电磁环境效应仿真系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润无人机电磁环境效应仿真系统。这些成功案例为无人机电磁环境效应仿真系统的推广和应用提供了有力支持。   二、系统功能  
    华盛恒辉l58ll334744 2025-04-17 15:51 150浏览
  •   无人机电磁兼容模拟训练系统软件:全方位剖析   一、系统概述   北京华盛恒辉无人机电磁兼容模拟训练系统软件,专为满足无人机于复杂电磁环境下的运行需求而打造,是一款专业训练工具。其核心功能是模拟无人机在电磁干扰(EMI)与电磁敏感度(EMS)环境里的运行状况,助力用户评估无人机电磁兼容性能,增强其在复杂电磁场景中的适应水平。   应用案例   目前,已有多个无人机电磁兼容模拟训练系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润无人机电磁兼容模拟训练系统。这些成功案例为
    华盛恒辉l58ll334744 2025-04-17 14:52 65浏览
  • 1. 在Ubuntu官网下载Ubuntu server  20.04版本https://releases.ubuntu.com/20.04.6/2. 在vmware下安装Ubuntu3. 改Ubuntu静态IP$ sudo vi /etc/netplan/00-installer-config.yaml# This is the network config written by 'subiquity'network:  renderer: networkd&nbs
    二月半 2025-04-17 16:27 168浏览
  •   无人机蜂群电磁作战仿真系统全解析   一、系统概述   无人机蜂群电磁作战仿真系统是专业的仿真平台,用于模拟无人机蜂群在复杂电磁环境中的作战行为与性能。它构建虚拟电磁环境,模拟无人机蜂群执行任务时可能遇到的电磁干扰与攻击,评估作战效能和抗干扰能力,为其设计、优化及实战应用提供科学依据。   应用案例   目前,已有多个无人机蜂群电磁作战仿真系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润无人机蜂群电磁作战仿真系统。这些成功案例为无人机蜂群电磁作战仿真系统的推广和应用提
    华盛恒辉l58ll334744 2025-04-17 16:29 168浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦