【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第一篇 嵌入式Linux入门篇-第六章 Vim 编辑器的使用

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT、4G模块、CAN、RS485等接口一应俱全。H264、VP8视频硬编码,H.264、H.265、VP8、VP9视频硬解码,并提供相关历程,支持8路PDM接口、5路SAI接口、2路Speaker。系统支持Android9.0(支持获取root限)Linux4.14.78+Qt5.10.1、Yocto、Ubuntu20、Debian9系统。适用于智能充电桩,物联网,工业控制,医疗,智能交通等,可用于任何通用工业和物联网应用、

【公众号】迅为电子

【粉丝群】258811263(加群获取驱动文档+例程)


第六章 Vim 编辑器的使用

本章内容对应视频讲解链接(在线观看):

Vim 编辑器的使用 →https://www.bilibili.com/video/BV1M7411m7wT?p=6

6.1 vim编辑器

vi编辑器是Unix系统最初的编辑器。它使用控制台图形模式来模拟文本编辑窗口,允许查看文件中的行、在文件中移动、插入、编辑和替换文本。尽管它可能是世界上最复杂的编辑器,但其拥有的大量特性使其成为Unix系统管理员多年来的支柱性工具。在GNU项目将vi编辑器移植到开源世界时,他们决定对其做一些改进。由于它不再是以前Unix中的那个原始的vi编辑器了,开发人员也就将它重命名为vi improved, 或vim。

不仅仅在 win 上有 wps 、 office ,我们 ubuntu 上也有很多编辑器。因为几乎任何一个发行版都有 vi/vim 编辑器,在嵌入式 linux 上,通常也会集成 vim 编辑器,所以说 vim编辑器大部分的版本都是支持的,所以我们就要学习 vim 。

vim 是 vi 的加强版, vi 的命令基本全部可以在 vim 上使用,而且比 vi 使用起来更加容易。因为这两个是一样的,所以在后面的学习中,不对 vim 和 vi 加以区分。

6.2 v im 编辑器的三种模式

我们在 windows 上可以双击图标,但是 vi 编辑器没有菜单,是通过命令来操作的。我们打开控制台,这里在 home/topeet 路径下。我们直接输入 vi filename ,这里起为 test.c ,这样就打开了文本编辑器。如果我打开的文件不存在,它会新建一个文件,如果说这个文件存在,那么他就直接打开了。如下图

在终端键入vim命令和要编辑的文件的名字就可以启动vim编辑器(如在启动vim时未指定文件名,或是这个文件不存在,vim会开辟一段新的缓冲区域来编辑)。

vim编辑器有三种操作模式:

第一种模式是一般模式。我们来看一下,我们打开 vim 编辑器之后,所处的模式就是一般模式。

第二种模式是编辑模式。从字面上看,编辑模式我们可以在这个模式上输入一些文本。我们要切换到编辑模式,直接按键盘上的 i ,出现 INSERT ,如下图所示,则现在所处的模式就是编辑模式。我们在编辑模式里面可以输入文本内容,输入文字或者字母都是可以的。

我们从编辑模式退到一般模式,直接按键盘上的 ESC 按键,现在左下角就没有 INSERT 这个单词了。

第三种是命令行模式,我现在所处的模式是一般模式,我们切换到命令行模式直接输入键盘上的 ":"。如下图所示有":",则现在所处的这个状态就是命令行模式。

举例,在命令行模式输入命令"set number", 即可显示行号。

如下图:

我们可以在命令行模式按 ESC 键也可以退回到一般模式。比如说我从一般模式再切换到编辑模式,我按键盘上的 i ,然后我退回按 ESC 。这三种模式我们都是通过 ESC 来退回的,是按键盘上的":",或者是"i"键来切换的,这就是 vim 编辑器的三种模式。除了键盘上的 i 键,我们可以按 a 或者是 o 按键都可以进到编辑模式。

6.3 vim 编辑器移动光标

在普通模式下,若是vim能正确识别终端类型(正常情况下应该都可以的),就可以直接使用方向键在文本区域移动光标。

vim也有独有的用来移动光标的命令。

K:向上移动

J:向下移动

H:向左移动

L:向右移动

Ctrl+F(PageDown):下翻一屏

Ctrl+B(PageUp):上翻一屏

我们可以在一般模式下双击键盘上的 g ,双击 g 的功能是将光标定位到第一行;如果想把光标定位到最后一行,我们单击G,这样光标就到最后一行了;如果想要定位到我们想要定位到的行数,我们可以使用 ngg ,比如说我想把光标移动到第3行,我就输入 3gg ,这就是vim的快速定位。

gg: 将光标定位到第一行

G: 将光标定位到最后一行

ngg:将光标定位到第n行

6.4 vim 编辑器的文本的复制和粘贴

在 windows 上使用文本编辑器,复制和粘贴非常的方便,那么我给大家介绍一种类似于 windows 上的操作方法,这样比起我们直接使用命令要方便得多,

先将光标放在我们要复制内容的行首,使用上下左右按键来选择文字,选择好之后按键盘上的 Y,接着按 esc 键回到一般模式,把光标移动到我们要粘贴的地方,然后按键盘上的 p 。

如果我现在要复制1到4行这些字母,我先把光标移动到行首,也就是想要复制行的行首,然后我们按键盘上的 v ,左下角出现一个 VISUAL 的单词,然后我们使用键盘的上下左右按键选择我们要复制的文本,选择好了之后我们按键盘上的Y,如下图

然后粘贴我们的文本,我们先按键盘上的 ESC 回到一般模式。然后把光标移动到我们想要粘贴的位置,我把它从第五行开始粘贴,直接按键盘上的 p ,这样就会把这些都复制过来了。

6.5 vim 编辑器使用快捷键来复制

如果我这里就想复制一行,不想复制这么多行,那我这样操作就太麻烦了,也有简单的办法,比如说我这里要复制第4行,直接双击键盘上的 y ,然后我们把光标移到第9行,我们按 p ,这样我们就复制了一行。

如果说我想复制多行,我也可以使用这个命令来完成,作者直接使用 nyy 这个命令。这个命令是复制当前行以下的n行,我们使用yy是复制当前行,这里我要复制3到6行,他一共是4行,我这里输入 4yy ,然后我把光标移动到11行,我直接按键盘上的 p ,这样我们就把4行全部复制过来了。

这就是vi的复制命令,我们常用的这几个命令。

yy:复制当前行

nyy: 复制当前行下的n行

6.6 vim 编辑器的删除

方法一:直接进到编辑模式,使用delete来删除

方法二:使用dd命令

dd:删除光标所在行

ndd:删除n行

n1,n2d:删除指定范围的行。需要在命令行模式下操作。

方法一,我直接进到编辑模式,然后直接按键盘上的 delete ,我们就可以来删除文本的内容了,如果说这个太麻烦,也可以直接使用 dd 命令,这个命令是删除光标所在行,我现在是在第 8 行,因为现在是 INSERT ,我先把模式切换到一般模式,然后我双击 d ,那么第 8 行就被删掉了。如下图所示。

同样我们可以使用 ndd ,它的作用是删除 n 行,比如说删除第 9 到 11 行,直接输入 3dd ,则这3行都被删掉了,如下图所示。

在日常的使用中,我们有的时候需要删除很多行,使用这些命令一行一行的删就太麻烦了,我们也可以删除指定范围的行,它的格式为 n1,n2d ,这个命令需要在命令行模式输入。

我要把第1行到第6行内容全部删除,按键盘上的冒号进入命令行模式,输入 1,6d,如下图,然后按回车,这样1-6行就全被删掉了。

6.7 vim 编辑器的撤销

我们在 win 上使用的是 ctrl+z 来撤销,在 vim 编辑器里边,撤销是在一般模式下,输入字母 u 来撤销。注意这里是一般模式,而且我们关闭过的文本文件就不能在这做撤销动作了,这个跟 win 上是一样的。我把删掉的内容再撤销回来,我们第一步先要回到一般模式,如果不清楚在哪个模式,我们直接使用ESC按键来退回到一般模式,然后按键盘上的u,这样删掉的内容就回来了。如果我们不想撤销了即怎么反撤销呢,反撤销就是 ctrl+r 。如下图所示。

6.8 vim 编辑器的查找

我们在 windows 上使用的是 ctrl+f 来查找的,在 ubuntu 的 vim 编辑器,我们是在命令行模式下输入 "/" 或者 "?" 来查找的。比如我想要查找 da 两个字母,直接按键盘上的" / ",现在我进到了命令行模式,输入 da ,敲下回车,这样就会找到 da 字母了。即输入 /da,如下图。

向下查找就是点击键盘上的"n",他会向下查找了,按ESC回到一般模式,然后输入"?",然后再输入da,敲下回车,然后按n,他就会向上查找,所以说我们想要向上查找的话,我们使用"?"进到命令行模式。如下图所示。

6.9 vim 编辑器的替换

我们先进到命令行模式,首先输入:" %s /xunwei/dianzi/g ",我们敲下回车,这样我们就把迅为替换成了电子,如下图所示。它的命令格式就是 :" %s /old/new/g "。

6.10 vim 编辑器的保存

:q! 强行退出

:wq 保存退出

:q 退出没有编辑过的文本

直接输入冒号进到命令行模式,如果想保存退出,直接输入 wq ,然后回车,这样就保存退出了。如下图所示。

我们再打开下test.c 的文件,可以看到修改的内容还在这里面,如果我们想修改完不保存的话,我们把这行删掉,然后输入冒号 :,输入 q! 就会退出去,然后在打开这个文本,可以看到删掉的东西并没有保存,也就是说我们之前的操作没有被保存。如下图所示。

如果说我们想直接退出,就是说我们只是把文件打开了,只是看下里边的内容,并没有编辑里边的文件,我们直接输入 :q 就可以退出去了。如下图所示。

保存后, vim 编辑器会自动帮我们保存 test.c 这个文件,如下图所示。我们之前是没有 test.c 文件的。

所以这里可以不用创建文件,可以直接 vi 加上我们要创建文件的名字,然后打开保存一下,它这里会自动帮我们创建一个文件,我这里再创建一个名为 test4.c 的文件,直接输入 vi test4.c ,我们这个路径下是没有这个文件的,那么vim编辑器会先帮我们创建这个文件,然后再打开,然后我们保存,ls看一下,这样我们这个路径下就有 test4.c 了。如下图所示。

6.11 vim 编辑器文件的对比

vimdiff file1 file2 file3

然后vim编辑还有个功能就是文件的对比,我们使用的是 vimdiff ,后边跟我们要对比的文件 ,我们对比下test.c和test4.c,我们来看一下,这样它就会产生一个对比的结果,如下图所示。

vimdiff test.c test4.c

我们大部分是进行两个文件的对比,当然这个命令也可以进行两个以上文件的对比,我这里在跟一个test3.c进行对比,如下图所示。

vimdiff test.c test4.c test3.c

我们vim编辑器就先介绍到这里。

相关推荐
赵大仁24 分钟前
在 CentOS 7 上安装 Node.js 20 并升级 GCC、make 和 glibc
linux·运维·服务器·ide·ubuntu·centos·计算机基础
vvw&29 分钟前
Docker Build 命令详解:在 Ubuntu 上构建 Docker 镜像教程
linux·运维·服务器·ubuntu·docker·容器·开源
冷曦_sole1 小时前
linux-21 目录管理(一)mkdir命令,创建空目录
linux·运维·服务器
最后一个bug1 小时前
STM32MP1linux根文件系统目录作用
linux·c语言·arm开发·单片机·嵌入式硬件
dessler1 小时前
Docker-Dockerfile讲解(二)
linux·运维·docker
卫生纸不够用1 小时前
子Shell及Shell嵌套模式
linux·bash
wenchm1 小时前
细说STM32F407单片机IIC总线基础知识
stm32·单片机·嵌入式硬件
world=hello1 小时前
关于科研中使用linux服务器的集锦
linux·服务器
嵌入式lover2 小时前
STM32项目之环境空气质量检测系统软件设计
stm32·单片机·嵌入式硬件
soragui2 小时前
【ChatGPT】OpenAI 如何使用流模式进行回答
linux·运维·游戏